@react-three/drei 9.0.2 → 9.1.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
@@ -130,6 +130,10 @@ The `native` route of the library **does not** export `Html` or `Loader`. The de
130
130
  <li><a href="#adaptiveevents">AdaptiveEvents</a></li>
131
131
  <li><a href="#usebvh">useBVH</a></li>
132
132
  </ul>
133
+ <li><a href="#portals">Portals</a></li>
134
+ <ul>
135
+ <li><a href="#view">View</a></li>
136
+ </ul>
133
137
  </ul>
134
138
  </td>
135
139
  <td valign="top">
@@ -597,11 +601,15 @@ Make sure to set the `makeDefault` prop on your controls, in that case you do no
597
601
 
598
602
  #### Effects
599
603
 
600
- Abstraction around threes own [EffectComposer](https://threejs.org/docs/#examples/en/postprocessing/EffectComposer).
604
+ Abstraction around threes own [EffectComposer](https://threejs.org/docs/#examples/en/postprocessing/EffectComposer). By default it will prepend a render-pass and a gammacorrection-pass. Children are cloned, `attach` is given to them automatically. You can only use passes or effects in there.
601
605
 
602
606
  ```jsx
607
+ import { SSAOPass } from "three-stdlib"
608
+
609
+ extend({ SSAOPass })
610
+
603
611
  <Effects multisamping={8} renderIndex={1} disableGamma={false} disableRenderPass={false}>
604
- <lUTPass attach="passes" lut={texture3D} />
612
+ <sSAOPass args={[scene, camera, 100, 100]} kernelRadius={1.2} kernelSize={0} />
605
613
  </Effects>
606
614
  ```
607
615
 
@@ -1414,7 +1422,7 @@ useFBX(url)
1414
1422
 
1415
1423
  function SuzanneFBX() {
1416
1424
  let fbx = useFBX('suzanne/suzanne.fbx')
1417
- return <primitive object={fbx} dispose={null} />
1425
+ return <primitive object={fbx} />
1418
1426
  }
1419
1427
  ```
1420
1428
 
@@ -1693,6 +1701,46 @@ useBVH(mesh)
1693
1701
  <mesh ref={mesh} ... />
1694
1702
  ```
1695
1703
 
1704
+ # Portals
1705
+
1706
+ #### View
1707
+
1708
+ <p>
1709
+ <a href="https://codesandbox.io/s/bp6tmc"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/bp6tmc/screenshot.png" alt="Demo"/></a>
1710
+ <a href="https://codesandbox.io/s/1wmlew"><img width="20%" src="https://codesandbox.io/api/v1/sandboxes/1wmlew/screenshot.png" alt="Demo"/></a>
1711
+ </p>
1712
+
1713
+ Views use gl.scissor to cut the viewport into segments. You tie a view to a tracking div which then controls the position and bounds of the viewport. This allows you to have multiple views with a single, performant canvas. These views will follow their tracking elements, scroll along, resize, etc.
1714
+
1715
+ It is advisable to re-connect the event system to a parent that contains both the canvas and the html content. This ensures that both are accessible/selectable and even allows you to mount controls or other deeper integrations into your view.
1716
+
1717
+ ```tsx
1718
+ <View
1719
+ /** The tracking element, the view will be cut according to its whereabouts */
1720
+ track: React.MutableRefObject<HTMLElement>
1721
+ /** Views take over the render loop, optional render index (1 by default) */
1722
+ index?: number
1723
+ /** If you know your view is always at the same place set this to 1 to avoid needless getBoundingClientRect overhead. The default is Infinity, which is best for css animations */
1724
+ frames?: number
1725
+ /** The scene to render, if you leave this undefined it will render the default scene */
1726
+ children?: React.ReactNode
1727
+ />
1728
+ ```
1729
+
1730
+ ```jsx
1731
+ const main = useRef()
1732
+ const div = useRef()
1733
+ return (
1734
+ <main ref={main}>
1735
+ <h1>Html content here</h1>
1736
+ <div ref={div} style={{ width: 200, height: 200 }} />
1737
+ <Canvas onCreated={(state) => state.events.connect(main.current)}>
1738
+ <View track={div}>
1739
+ <mesh />
1740
+ <OrbitControls />
1741
+ </View>
1742
+ ```
1743
+
1696
1744
  # Staging
1697
1745
 
1698
1746
  #### Center
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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)}var i=o(e),l=u(r),s=u(t);const c=l.forwardRef((({scale:e=10,frames:r=1/0,opacity:t=1,width:o=1,height:u=1,blur:c=1,far:d=10,resolution:f=512,smooth:h=!0,color:m="#000000",...p},g)=>{const v=a.useThree((({scene:e})=>e)),b=a.useThree((({gl:e})=>e)),M=l.useRef(null);o*=Array.isArray(e)?e[0]:e||1,u*=Array.isArray(e)?e[1]:e||1;const[y,w,T,S,x,R,j]=l.useMemo((()=>{const e=new s.WebGLRenderTarget(f,f),r=new s.WebGLRenderTarget(f,f);r.texture.generateMipmaps=e.texture.generateMipmaps=!1;const t=new s.PlaneBufferGeometry(o,u).rotateX(Math.PI/2),a=new s.Mesh(t),i=new s.MeshDepthMaterial;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new s.Color(m).convertSRGBToLinear()}},e.fragmentShader=e.fragmentShader.replace("void main() {","uniform vec3 ucolor;\n void main() {\n "),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );")};const l=new s.ShaderMaterial(n.HorizontalBlurShader),c=new s.ShaderMaterial(n.VerticalBlurShader);return c.depthTest=l.depthTest=!1,[e,t,i,a,l,c,r]}),[f,o,u,e]),C=l.useCallback((e=>{S.visible=!0,S.material=x,x.uniforms.tDiffuse.value=y.texture,x.uniforms.h.value=1*e/256,b.setRenderTarget(j),b.render(S,M.current),S.material=R,R.uniforms.tDiffuse.value=j.texture,R.uniforms.v.value=1*e/256,b.setRenderTarget(y),b.render(S,M.current),S.visible=!1}),[]);let O=0;return a.useFrame((()=>{if(M.current&&(r===1/0||O<r)){const e=v.background;v.background=null;const r=v.overrideMaterial;v.overrideMaterial=T,b.setRenderTarget(y),b.render(v,M.current),v.overrideMaterial=r,C(c),h&&C(.4*c),b.setRenderTarget(null),v.background=e,O++}})),l.createElement("group",i.default({"rotation-x":Math.PI/2},p,{ref:g}),l.createElement("mesh",{geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},l.createElement("meshBasicMaterial",{map:y.texture,transparent:!0,opacity:t})),l.createElement("orthographicCamera",{ref:M,args:[-o/2,o/2,u/2,-u/2,0,d]}))}));exports.ContactShadows=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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)}var i=o(e),l=u(r),s=u(t);const c=l.forwardRef((({scale:e=10,frames:r=1/0,opacity:t=1,width:o=1,height:u=1,blur:c=1,far:d=10,resolution:f=512,smooth:h=!0,color:m="#000000",...p},g)=>{const v=a.useThree((({scene:e})=>e)),b=a.useThree((({gl:e})=>e)),M=l.useRef(null);o*=Array.isArray(e)?e[0]:e||1,u*=Array.isArray(e)?e[1]:e||1;const[y,w,T,S,x,R,j]=l.useMemo((()=>{const e=new s.WebGLRenderTarget(f,f),r=new s.WebGLRenderTarget(f,f);r.texture.generateMipmaps=e.texture.generateMipmaps=!1;const t=new s.PlaneBufferGeometry(o,u).rotateX(Math.PI/2),a=new s.Mesh(t),i=new s.MeshDepthMaterial;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new s.Color(m).convertSRGBToLinear()}},e.fragmentShader=e.fragmentShader.replace("void main() {","uniform vec3 ucolor;\n void main() {\n "),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor, ( 1.0 - fragCoordZ ) * 1.0 );")};const l=new s.ShaderMaterial(n.HorizontalBlurShader),c=new s.ShaderMaterial(n.VerticalBlurShader);return c.depthTest=l.depthTest=!1,[e,t,i,a,l,c,r]}),[f,o,u,e,m]),O=e=>{S.visible=!0,S.material=x,x.uniforms.tDiffuse.value=y.texture,x.uniforms.h.value=1*e/256,b.setRenderTarget(j),b.render(S,M.current),S.material=R,R.uniforms.tDiffuse.value=j.texture,R.uniforms.v.value=1*e/256,b.setRenderTarget(y),b.render(S,M.current),S.visible=!1};let P=0;return a.useFrame((()=>{if(M.current&&(r===1/0||P<r)){const e=v.background;v.background=null;const r=v.overrideMaterial;v.overrideMaterial=T,b.setRenderTarget(y),b.render(v,M.current),v.overrideMaterial=r,O(c),h&&O(.4*c),b.setRenderTarget(null),v.background=e,P++}})),l.createElement("group",i.default({"rotation-x":Math.PI/2},p,{ref:g}),l.createElement("mesh",{geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},l.createElement("meshBasicMaterial",{map:y.texture,transparent:!0,opacity:t})),l.createElement("orthographicCamera",{ref:M,args:[-o/2,o/2,u/2,-u/2,0,d]}))}));exports.ContactShadows=c;
@@ -52,8 +52,9 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
52
52
  const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);
53
53
  verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;
54
54
  return [renderTarget, planeGeometry, depthMaterial, blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur];
55
- }, [resolution, width, height, scale]);
56
- const blurShadows = React.useCallback(blur => {
55
+ }, [resolution, width, height, scale, color]);
56
+
57
+ const blurShadows = blur => {
57
58
  blurPlane.visible = true;
58
59
  blurPlane.material = horizontalBlurMaterial;
59
60
  horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture;
@@ -66,7 +67,8 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
66
67
  gl.setRenderTarget(renderTarget);
67
68
  gl.render(blurPlane, shadowCamera.current);
68
69
  blurPlane.visible = false;
69
- }, []);
70
+ };
71
+
70
72
  let count = 0;
71
73
  useFrame(() => {
72
74
  if (shadowCamera.current && (frames === Infinity || count < frames)) {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 o=u(e),a=i(r);const l=a.forwardRef(((e,r)=>{const{camera:u,onChange:i,...l}=e,c=t.useThree((e=>e.camera)),s=t.useThree((e=>e.invalidate)),d=u||c,[f]=a.useState((()=>new n.DeviceOrientationControls(d)));return a.useEffect((()=>{const e=e=>{s(),i&&i(e)};return null==f||null==f.addEventListener||f.addEventListener("change",e),()=>null==f||null==f.removeEventListener?void 0:f.removeEventListener("change",e)}),[i,f,s]),t.useFrame((()=>null==f?void 0:f.update())),a.useEffect((()=>{const e=f;return null==e||e.connect(),()=>null==e?void 0:e.dispose()}),[f]),f?a.createElement("primitive",o.default({ref:r,dispose:void 0,object:f},l)):null}));exports.DeviceOrientationControls=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 o=u(e),a=i(r);const l=a.forwardRef(((e,r)=>{const{camera:u,onChange:i,...l}=e,c=t.useThree((e=>e.camera)),s=t.useThree((e=>e.invalidate)),f=u||c,[d]=a.useState((()=>new n.DeviceOrientationControls(f)));return a.useEffect((()=>{const e=e=>{s(),i&&i(e)};return null==d||null==d.addEventListener||d.addEventListener("change",e),()=>null==d||null==d.removeEventListener?void 0:d.removeEventListener("change",e)}),[i,d,s]),t.useFrame((()=>null==d?void 0:d.update())),a.useEffect((()=>{const e=d;return null==e||e.connect(),()=>null==e?void 0:e.dispose()}),[d]),d?a.createElement("primitive",o.default({ref:r,object:d},l)):null}));exports.DeviceOrientationControls=l;
@@ -30,7 +30,6 @@ const DeviceOrientationControls = /*#__PURE__*/React.forwardRef((props, ref) =>
30
30
  }, [controls]);
31
31
  return controls ? /*#__PURE__*/React.createElement("primitive", _extends({
32
32
  ref: ref,
33
- dispose: undefined,
34
33
  object: controls
35
34
  }, rest)) : null;
36
35
  });
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),s=require("three-stdlib"),n=require("react-merge-refs");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(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)}var i=u(e),o=c(r),d=u(n);a.extend({EffectComposer:s.EffectComposer,RenderPass:s.RenderPass,ShaderPass:s.ShaderPass});const l=()=>{try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}},f=o.forwardRef((({children:e,multisamping:r=8,renderIndex:n=1,disableGamma:u=!1,disableRenderPass:c=!1,...f},h)=>{const m=o.useRef(),b=a.useThree((({scene:e})=>e)),g=a.useThree((({camera:e})=>e)),p=a.useThree((({gl:e})=>e)),P=a.useThree((({size:e})=>e)),[v]=o.useState((()=>{if(l()&&r>0){const e=new t.WebGLRenderTarget(P.width,P.height,{format:t.RGBAFormat,encoding:t.sRGBEncoding});return e.samples=8,e}}));return o.useEffect((()=>{var e,r;null==(e=m.current)||e.setSize(P.width,P.height),null==(r=m.current)||r.setPixelRatio(p.getPixelRatio())}),[p,P]),a.useFrame((()=>{var e;return null==(e=m.current)?void 0:e.render()}),n),o.createElement("effectComposer",i.default({ref:d.default([h,m]),args:[p,v]},f),!c&&o.createElement("renderPass",{attach:"passes",args:[b,g]}),!u&&o.createElement("shaderPass",{attach:"passes",args:[s.GammaCorrectionShader]}),e)}));exports.Effects=f,exports.isWebGL2Available=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),a=require("@react-three/fiber"),n=require("three-stdlib"),s=require("react-merge-refs");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(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)}var i=u(e),o=c(r),d=u(s);a.extend({EffectComposer:n.EffectComposer,RenderPass:n.RenderPass,ShaderPass:n.ShaderPass});const l=o.forwardRef((({children:e,multisamping:r=8,renderIndex:s=1,disableGamma:u=!1,disableRenderPass:c=!1,...l},f)=>{const h=o.useRef(),m=a.useThree((e=>e.scene)),p=a.useThree((e=>e.camera)),b=a.useThree((e=>e.gl)),g=a.useThree((e=>e.size)),[E]=o.useState((()=>{const e=new t.WebGLRenderTarget(g.width,g.height,{format:t.RGBAFormat,encoding:b.outputEncoding});return e.samples=r,e}));o.useEffect((()=>{var e,r;null==(e=h.current)||e.setSize(g.width,g.height),null==(r=h.current)||r.setPixelRatio(b.getPixelRatio())}),[b,g]),a.useFrame((()=>{var e;return null==(e=h.current)?void 0:e.render()}),s);const P=[];return c||P.push(o.createElement("renderPass",{key:"renderpass",args:[m,p]})),u||P.push(o.createElement("shaderPass",{key:"gammapass",args:[n.GammaCorrectionShader]})),o.Children.forEach(e,((e,r)=>P.push(o.cloneElement(e,{key:r,attach:`passes-${r}`})))),o.createElement("effectComposer",i.default({ref:d.default([f,h]),args:[b,E]},l),P)}));exports.Effects=l,exports.isWebGL2Available=()=>{try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}};
package/core/Effects.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
- import { WebGLRenderTarget, RGBAFormat, sRGBEncoding } from 'three';
3
+ import { WebGLRenderTarget, RGBAFormat } from 'three';
4
4
  import { extend, useThree, useFrame } from '@react-three/fiber';
5
5
  import { EffectComposer, RenderPass, ShaderPass, GammaCorrectionShader } from 'three-stdlib';
6
6
  import mergeRefs from 'react-merge-refs';
@@ -27,27 +27,17 @@ const Effects = /*#__PURE__*/React.forwardRef(({
27
27
  ...props
28
28
  }, ref) => {
29
29
  const composer = React.useRef();
30
- const scene = useThree(({
31
- scene
32
- }) => scene);
33
- const camera = useThree(({
34
- camera
35
- }) => camera);
36
- const gl = useThree(({
37
- gl
38
- }) => gl);
39
- const size = useThree(({
40
- size
41
- }) => size);
30
+ const scene = useThree(state => state.scene);
31
+ const camera = useThree(state => state.camera);
32
+ const gl = useThree(state => state.gl);
33
+ const size = useThree(state => state.size);
42
34
  const [target] = React.useState(() => {
43
- if (isWebGL2Available() && multisamping > 0) {
44
- const t = new WebGLRenderTarget(size.width, size.height, {
45
- format: RGBAFormat,
46
- encoding: sRGBEncoding
47
- });
48
- t.samples = 8;
49
- return t;
50
- }
35
+ const t = new WebGLRenderTarget(size.width, size.height, {
36
+ format: RGBAFormat,
37
+ encoding: gl.outputEncoding
38
+ });
39
+ t.samples = multisamping;
40
+ return t;
51
41
  });
52
42
  React.useEffect(() => {
53
43
  var _composer$current, _composer$current2;
@@ -60,16 +50,23 @@ const Effects = /*#__PURE__*/React.forwardRef(({
60
50
 
61
51
  return (_composer$current3 = composer.current) == null ? void 0 : _composer$current3.render();
62
52
  }, renderIndex);
53
+ const passes = [];
54
+ if (!disableRenderPass) passes.push( /*#__PURE__*/React.createElement("renderPass", {
55
+ key: "renderpass",
56
+ args: [scene, camera]
57
+ }));
58
+ if (!disableGamma) passes.push( /*#__PURE__*/React.createElement("shaderPass", {
59
+ key: "gammapass",
60
+ args: [GammaCorrectionShader]
61
+ }));
62
+ React.Children.forEach(children, (el, index) => passes.push( /*#__PURE__*/React.cloneElement(el, {
63
+ key: index,
64
+ attach: `passes-${index}`
65
+ })));
63
66
  return /*#__PURE__*/React.createElement("effectComposer", _extends({
64
67
  ref: mergeRefs([ref, composer]),
65
68
  args: [gl, target]
66
- }, props), !disableRenderPass && /*#__PURE__*/React.createElement("renderPass", {
67
- attach: "passes",
68
- args: [scene, camera]
69
- }), !disableGamma && /*#__PURE__*/React.createElement("shaderPass", {
70
- attach: "passes",
71
- args: [GammaCorrectionShader]
72
- }), children);
69
+ }, props), passes);
73
70
  });
74
71
 
75
72
  export { Effects, isWebGL2Available };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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 o=u(e),i=l(r);const a=i.forwardRef((({domElement:e,...r},u)=>{const{onChange:l,...a}=r,s=t.useThree((e=>e.invalidate)),c=t.useThree((e=>e.camera)),d=t.useThree((e=>e.gl)),f=t.useThree((e=>e.events)),v=e||f.connected||d.domElement,[b]=i.useState((()=>new n.FlyControls(c,v)));return i.useEffect((()=>{const e=e=>{s(),l&&l(e)};return null==b||null==b.addEventListener||b.addEventListener("change",e),()=>null==b||null==b.removeEventListener?void 0:b.removeEventListener("change",e)}),[l,b,s]),t.useFrame(((e,t)=>null==b?void 0:b.update(t))),b?i.createElement("primitive",o.default({ref:u,dispose:void 0,object:b},a)):null}));exports.FlyControls=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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 o=u(e),a=l(r);const i=a.forwardRef((({domElement:e,...r},u)=>{const{onChange:l,...i}=r,c=t.useThree((e=>e.invalidate)),s=t.useThree((e=>e.camera)),d=t.useThree((e=>e.gl)),f=t.useThree((e=>e.events)),v=e||f.connected||d.domElement,[b]=a.useState((()=>new n.FlyControls(s,v)));return a.useEffect((()=>{const e=e=>{c(),l&&l(e)};return null==b||null==b.addEventListener||b.addEventListener("change",e),()=>null==b||null==b.removeEventListener?void 0:b.removeEventListener("change",e)}),[l,b,c]),t.useFrame(((e,t)=>null==b?void 0:b.update(t))),b?a.createElement("primitive",o.default({ref:u,object:b},i)):null}));exports.FlyControls=i;
@@ -29,7 +29,6 @@ const FlyControls = /*#__PURE__*/React.forwardRef(({
29
29
  useFrame((_, delta) => controls == null ? void 0 : controls.update(delta));
30
30
  return controls ? /*#__PURE__*/React.createElement("primitive", _extends({
31
31
  ref: ref,
32
- dispose: undefined,
33
32
  object: controls
34
33
  }, rest)) : null;
35
34
  });
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(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 s=a(e),i=o(r);const u=i.forwardRef(((e={enableDamping:!0},r)=>{const{domElement:a,camera:o,onChange:u,onStart:c,onEnd:d,...l}=e,f=t.useThree((e=>e.invalidate)),v=t.useThree((e=>e.camera)),m=t.useThree((e=>e.gl)),p=t.useThree((e=>e.events)),b=a||p.connected||m.domElement,E=o||v,h=i.useMemo((()=>new n.MapControls(E)),[E]);return i.useEffect((()=>{h.connect(b);const e=e=>{f(),u&&u(e)};return h.addEventListener("change",e),c&&h.addEventListener("start",c),d&&h.addEventListener("end",d),()=>{h.dispose(),h.removeEventListener("change",e),c&&h.removeEventListener("start",c),d&&h.removeEventListener("end",d)}}),[u,c,d,h,f,b]),t.useFrame((()=>h.update())),i.createElement("primitive",s.default({ref:r,dispose:void 0,object:h,enableDamping:!0},l))}));exports.MapControls=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(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 s=a(e),u=o(r);const i=u.forwardRef(((e={enableDamping:!0},r)=>{const{domElement:a,camera:o,onChange:i,onStart:c,onEnd:d,...l}=e,f=t.useThree((e=>e.invalidate)),m=t.useThree((e=>e.camera)),v=t.useThree((e=>e.gl)),b=t.useThree((e=>e.events)),p=a||b.connected||v.domElement,E=o||m,h=u.useMemo((()=>new n.MapControls(E)),[E]);return u.useEffect((()=>{h.connect(p);const e=e=>{f(),i&&i(e)};return h.addEventListener("change",e),c&&h.addEventListener("start",c),d&&h.addEventListener("end",d),()=>{h.dispose(),h.removeEventListener("change",e),c&&h.removeEventListener("start",c),d&&h.removeEventListener("end",d)}}),[i,c,d,h,f,p]),t.useFrame((()=>h.update())),u.createElement("primitive",s.default({ref:r,object:h,enableDamping:!0},l))}));exports.MapControls=i;
@@ -42,7 +42,6 @@ const MapControls = /*#__PURE__*/React.forwardRef((props = {
42
42
  useFrame(() => controls.update());
43
43
  return /*#__PURE__*/React.createElement("primitive", _extends({
44
44
  ref: ref,
45
- dispose: undefined,
46
45
  object: controls,
47
46
  enableDamping: true
48
47
  }, rest));
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),i=require("@react-three/fiber");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=o(e),v=s(t);class n extends r.MeshPhysicalMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._distort={value:.4},this._radius={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.radius=this._radius,e.uniforms.distort=this._distort,e.vertexShader=`\n uniform float time;\n uniform float radius;\n uniform float distort;\n #define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include <begin_vertex>","\n float updateTime = time / 50.0;\n float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));\n vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));\n ")}get time(){return this._time.value}set time(e){this._time.value=e}get distort(){return this._distort.value}set distort(e){this._distort.value=e}get radius(){return this._radius.value}set radius(e){this._radius.value=e}}const x=v.forwardRef((({speed:e=1,...t},r)=>{const[o]=v.useState((()=>new n));return i.useFrame((t=>o&&(o.time=t.clock.getElapsedTime()*e))),v.createElement("primitive",c.default({dispose:void 0,object:o,ref:r,attach:"material"},t))}));exports.MeshDistortMaterial=x;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),i=require("@react-three/fiber");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=o(e),v=s(t);class n extends r.MeshPhysicalMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._distort={value:.4},this._radius={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.radius=this._radius,e.uniforms.distort=this._distort,e.vertexShader=`\n uniform float time;\n uniform float radius;\n uniform float distort;\n #define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include <begin_vertex>","\n float updateTime = time / 50.0;\n float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));\n vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));\n ")}get time(){return this._time.value}set time(e){this._time.value=e}get distort(){return this._distort.value}set distort(e){this._distort.value=e}get radius(){return this._radius.value}set radius(e){this._radius.value=e}}const x=v.forwardRef((({speed:e=1,...t},r)=>{const[o]=v.useState((()=>new n));return i.useFrame((t=>o&&(o.time=t.clock.getElapsedTime()*e))),v.createElement("primitive",c.default({object:o,ref:r,attach:"material"},t))}));exports.MeshDistortMaterial=x;
@@ -70,7 +70,6 @@ const MeshDistortMaterial = /*#__PURE__*/React.forwardRef(({
70
70
  const [material] = React.useState(() => new DistortMaterialImpl());
71
71
  useFrame(state => material && (material.time = state.clock.getElapsedTime() * speed));
72
72
  return /*#__PURE__*/React.createElement("primitive", _extends({
73
- dispose: undefined,
74
73
  object: material,
75
74
  ref: ref,
76
75
  attach: "material"
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=i(e),s=o(t);class c extends r.MeshStandardMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._factor={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.factor=this._factor,e.vertexShader=`\n uniform float time;\n uniform float factor;\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include <begin_vertex>","float theta = sin( time + position.y ) / 2.0 * factor;\n float c = cos( theta );\n float s = sin( theta );\n mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );\n vec3 transformed = vec3( position ) * m;\n vNormal = vNormal * m;")}get time(){return this._time.value}set time(e){this._time.value=e}get factor(){return this._factor.value}set factor(e){this._factor.value=e}}const u=s.forwardRef((({speed:e=1,...t},r)=>{const[i]=s.useState((()=>new c));return a.useFrame((t=>i&&(i.time=t.clock.getElapsedTime()*e))),s.createElement("primitive",n.default({dispose:void 0,object:i,ref:r,attach:"material"},t))}));exports.MeshWobbleMaterial=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=i(e),s=o(t);class c extends r.MeshStandardMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._factor={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.factor=this._factor,e.vertexShader=`\n uniform float time;\n uniform float factor;\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include <begin_vertex>","float theta = sin( time + position.y ) / 2.0 * factor;\n float c = cos( theta );\n float s = sin( theta );\n mat3 m = mat3( c, 0, s, 0, 1, 0, -s, 0, c );\n vec3 transformed = vec3( position ) * m;\n vNormal = vNormal * m;")}get time(){return this._time.value}set time(e){this._time.value=e}get factor(){return this._factor.value}set factor(e){this._factor.value=e}}const u=s.forwardRef((({speed:e=1,...t},r)=>{const[i]=s.useState((()=>new c));return a.useFrame((t=>i&&(i.time=t.clock.getElapsedTime()*e))),s.createElement("primitive",n.default({object:i,ref:r,attach:"material"},t))}));exports.MeshWobbleMaterial=u;
@@ -56,7 +56,6 @@ const MeshWobbleMaterial = /*#__PURE__*/React.forwardRef(({
56
56
  const [material] = React.useState(() => new WobbleMaterialImpl());
57
57
  useFrame(state => material && (material.time = state.clock.getElapsedTime() * speed));
58
58
  return /*#__PURE__*/React.createElement("primitive", _extends({
59
- dispose: undefined,
60
59
  object: material,
61
60
  ref: ref,
62
61
  attach: "material"
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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 u=n(e),s=a(t);const c=1e-5;const o=s.forwardRef((function({args:[e=1,t=1,n=1]=[],radius:a=.05,steps:o=1,smoothness:f=4,children:i,...l},b){const d=s.useMemo((()=>function(e,t,n){const a=new r.Shape,u=n-c;return a.absarc(c,c,c,-Math.PI/2,-Math.PI,!0),a.absarc(c,t-2*u,c,Math.PI,Math.PI/2,!0),a.absarc(e-2*u,t-2*u,c,Math.PI/2,0,!0),a.absarc(e-2*u,c,c,0,-Math.PI/2,!0),a}(e,t,a)),[e,t,a]),h=s.useMemo((()=>({depth:n-2*a,bevelEnabled:!0,bevelSegments:2*f,steps:o,bevelSize:a-c,bevelThickness:a,curveSegments:f})),[n,a,f]),m=s.useRef();return s.useLayoutEffect((()=>{m.current&&m.current.center()}),[d,h]),s.createElement("mesh",u.default({ref:b},l),s.createElement("extrudeBufferGeometry",{attach:"geometry",ref:m,args:[d,h]}),i)}));exports.RoundedBox=o;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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 u=n(e),s=a(t);const c=1e-5;const o=s.forwardRef((function({args:[e=1,t=1,n=1]=[],radius:a=.05,steps:o=1,smoothness:f=4,children:i,...l},b){const d=s.useMemo((()=>function(e,t,n){const a=new r.Shape,u=n-c;return a.absarc(c,c,c,-Math.PI/2,-Math.PI,!0),a.absarc(c,t-2*u,c,Math.PI,Math.PI/2,!0),a.absarc(e-2*u,t-2*u,c,Math.PI/2,0,!0),a.absarc(e-2*u,c,c,0,-Math.PI/2,!0),a}(e,t,a)),[e,t,a]),h=s.useMemo((()=>({depth:n-2*a,bevelEnabled:!0,bevelSegments:2*f,steps:o,bevelSize:a-c,bevelThickness:a,curveSegments:f})),[n,a,f]),p=s.useRef();return s.useLayoutEffect((()=>{p.current&&p.current.center()}),[d,h]),s.createElement("mesh",u.default({ref:b},l),s.createElement("extrudeGeometry",{ref:p,args:[d,h]}),i)}));exports.RoundedBox=o;
@@ -40,8 +40,7 @@ const RoundedBox = /*#__PURE__*/React.forwardRef(function RoundedBox({
40
40
  }, [shape, params]);
41
41
  return /*#__PURE__*/React.createElement("mesh", _extends({
42
42
  ref: ref
43
- }, rest), /*#__PURE__*/React.createElement("extrudeBufferGeometry", {
44
- attach: "geometry",
43
+ }, rest), /*#__PURE__*/React.createElement("extrudeGeometry", {
45
44
  ref: geomRef,
46
45
  args: [shape, params]
47
46
  }), children);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=a(e),c=o(t);const l=c.forwardRef((({fog:e=!1,colorStop:t=0,color:a="black",opacity:o=.5,...l},i)=>{const u=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const o=e.getContext("2d"),n=o.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return n.addColorStop(t,new r.Color(a).getStyle()),n.addColorStop(1,"rgba(0,0,0,0)"),o.fillStyle=n,o.fillRect(0,0,e.width,e.height),e}),[a,t]);return c.createElement("mesh",n.default({ref:i},l),c.createElement("planeBufferGeometry",{attach:"geometry",args:[1,1]}),c.createElement("meshBasicMaterial",{attach:"material",transparent:!0,opacity:o,fog:e},c.createElement("canvasTexture",{attach:"map",args:[u]})))}));exports.Shadow=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=a(e),c=o(t);const l=c.forwardRef((({fog:e=!1,colorStop:t=0,color:a="black",opacity:o=.5,...l},i)=>{const u=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const o=e.getContext("2d"),n=o.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return n.addColorStop(t,new r.Color(a).getStyle()),n.addColorStop(1,"rgba(0,0,0,0)"),o.fillStyle=n,o.fillRect(0,0,e.width,e.height),e}),[a,t]);return c.createElement("mesh",n.default({ref:i},l),c.createElement("planeGeometry",null),c.createElement("meshBasicMaterial",{transparent:!0,opacity:o,fog:e},c.createElement("canvasTexture",{attach:"map",args:[u]})))}));exports.Shadow=l;
package/core/Shadow.js CHANGED
@@ -23,11 +23,7 @@ const Shadow = /*#__PURE__*/React.forwardRef(({
23
23
  }, [color, colorStop]);
24
24
  return /*#__PURE__*/React.createElement("mesh", _extends({
25
25
  ref: ref
26
- }, props), /*#__PURE__*/React.createElement("planeBufferGeometry", {
27
- attach: "geometry",
28
- args: [1, 1]
29
- }), /*#__PURE__*/React.createElement("meshBasicMaterial", {
30
- attach: "material",
26
+ }, props), /*#__PURE__*/React.createElement("planeGeometry", null), /*#__PURE__*/React.createElement("meshBasicMaterial", {
31
27
  transparent: true,
32
28
  opacity: opacity,
33
29
  fog: fog
package/core/Sky.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three-stdlib"),i=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=n(e),u=a(t);function s(e,t,r=new i.Vector3){const n=Math.PI*(e-.5),a=2*Math.PI*(t-.5);return r.x=Math.cos(a),r.y=Math.sin(n),r.z=Math.sin(a),r}const c=u.forwardRef((({inclination:e=.6,azimuth:t=.1,distance:n=1e3,mieCoefficient:a=.005,mieDirectionalG:c=.8,rayleigh:l=.5,turbidity:f=10,sunPosition:m=s(e,t),...d},b)=>{const h=u.useMemo((()=>(new i.Vector3).setScalar(n)),[n]),[v]=u.useState((()=>new r.Sky));return u.createElement("primitive",o.default({dispose:void 0,object:v,ref:b,"material-uniforms-mieCoefficient-value":a,"material-uniforms-mieDirectionalG-value":c,"material-uniforms-rayleigh-value":l,"material-uniforms-sunPosition-value":m,"material-uniforms-turbidity-value":f,scale:h},d))}));exports.Sky=c,exports.calcPosFromAngles=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three-stdlib"),i=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var u=n(e),o=a(t);function c(e,t,r=new i.Vector3){const n=Math.PI*(e-.5),a=2*Math.PI*(t-.5);return r.x=Math.cos(a),r.y=Math.sin(n),r.z=Math.sin(a),r}const l=o.forwardRef((({inclination:e=.6,azimuth:t=.1,distance:n=1e3,mieCoefficient:a=.005,mieDirectionalG:l=.8,rayleigh:s=.5,turbidity:f=10,sunPosition:m=c(e,t),...d},b)=>{const h=o.useMemo((()=>(new i.Vector3).setScalar(n)),[n]),[y]=o.useState((()=>new r.Sky));return o.createElement("primitive",u.default({object:y,ref:b,"material-uniforms-mieCoefficient-value":a,"material-uniforms-mieDirectionalG-value":l,"material-uniforms-rayleigh-value":s,"material-uniforms-sunPosition-value":m,"material-uniforms-turbidity-value":f,scale:h},d))}));exports.Sky=l,exports.calcPosFromAngles=c;
package/core/Sky.js CHANGED
@@ -25,7 +25,6 @@ const Sky = /*#__PURE__*/React.forwardRef(({
25
25
  const scale = React.useMemo(() => new Vector3().setScalar(distance), [distance]);
26
26
  const [sky] = React.useState(() => new Sky$1());
27
27
  return /*#__PURE__*/React.createElement("primitive", _extends({
28
- dispose: undefined,
29
28
  object: sky,
30
29
  ref: ref,
31
30
  "material-uniforms-mieCoefficient-value": mieCoefficient,
package/core/Stars.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("three");function n(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 a=n(e);class o extends r.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},fade:{value:1}},vertexShader:"\n uniform float time;\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(mvPosition.x + 2.0 * time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n }",fragmentShader:"\n uniform sampler2D pointTexture;\n uniform float fade;\n varying vec3 vColor;\n void main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include <tonemapping_fragment>\n\t #include <encodings_fragment>\n }"})}}const i=e=>(new r.Vector3).setFromSpherical(new r.Spherical(e,Math.acos(1-2*Math.random()),2*Math.random()*Math.PI)),c=a.forwardRef((({radius:e=100,depth:n=50,count:c=5e3,saturation:s=0,factor:u=4,fade:l=!1},f)=>{const m=a.useRef(),[d,v,p]=a.useMemo((()=>{const t=[],a=[],o=Array.from({length:c},(()=>(.5+.5*Math.random())*u)),l=new r.Color;let f=e+n;const m=n/c;for(let e=0;e<c;e++)f-=m*Math.random(),t.push(...i(f).toArray()),l.setHSL(e/c,s,.9),a.push(l.r,l.g,l.b);return[new Float32Array(t),new Float32Array(a),new Float32Array(o)]}),[c,n,u,e,s]);t.useFrame((e=>m.current&&(m.current.uniforms.time.value=e.clock.getElapsedTime())));const[g]=a.useState((()=>new o));return a.createElement("points",{ref:f},a.createElement("bufferGeometry",{attach:"geometry"},a.createElement("bufferAttribute",{attach:"attributes-position",args:[d,3]}),a.createElement("bufferAttribute",{attach:"attributes-color",args:[v,3]}),a.createElement("bufferAttribute",{attach:"attributes-size",args:[p,1]})),a.createElement("primitive",{dispose:void 0,ref:m,object:g,attach:"material",blending:r.AdditiveBlending,"uniforms-fade-value":l,transparent:!0,vertexColors:!0}))}));exports.Stars=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@react-three/fiber"),r=require("three");function n(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 a=n(e);class o extends r.ShaderMaterial{constructor(){super({uniforms:{time:{value:0},fade:{value:1}},vertexShader:"\n uniform float time;\n attribute float size;\n varying vec3 vColor;\n void main() {\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4(position, 0.5);\n gl_PointSize = size * (30.0 / -mvPosition.z) * (3.0 + sin(mvPosition.x + 2.0 * time + 100.0));\n gl_Position = projectionMatrix * mvPosition;\n }",fragmentShader:"\n uniform sampler2D pointTexture;\n uniform float fade;\n varying vec3 vColor;\n void main() {\n float opacity = 1.0;\n if (fade == 1.0) {\n float d = distance(gl_PointCoord, vec2(0.5, 0.5));\n opacity = 1.0 / (1.0 + exp(16.0 * (d - 0.25)));\n }\n gl_FragColor = vec4(vColor, opacity);\n\n #include <tonemapping_fragment>\n\t #include <encodings_fragment>\n }"})}}const i=e=>(new r.Vector3).setFromSpherical(new r.Spherical(e,Math.acos(1-2*Math.random()),2*Math.random()*Math.PI)),c=a.forwardRef((({radius:e=100,depth:n=50,count:c=5e3,saturation:l=0,factor:s=4,fade:u=!1},f)=>{const m=a.useRef(),[d,v,p]=a.useMemo((()=>{const t=[],a=[],o=Array.from({length:c},(()=>(.5+.5*Math.random())*s)),u=new r.Color;let f=e+n;const m=n/c;for(let e=0;e<c;e++)f-=m*Math.random(),t.push(...i(f).toArray()),u.setHSL(e/c,l,.9),a.push(u.r,u.g,u.b);return[new Float32Array(t),new Float32Array(a),new Float32Array(o)]}),[c,n,s,e,l]);t.useFrame((e=>m.current&&(m.current.uniforms.time.value=e.clock.getElapsedTime())));const[g]=a.useState((()=>new o));return a.createElement("points",{ref:f},a.createElement("bufferGeometry",null,a.createElement("bufferAttribute",{attach:"attributes-position",args:[d,3]}),a.createElement("bufferAttribute",{attach:"attributes-color",args:[v,3]}),a.createElement("bufferAttribute",{attach:"attributes-size",args:[p,1]})),a.createElement("primitive",{ref:m,object:g,attach:"material",blending:r.AdditiveBlending,"uniforms-fade-value":u,transparent:!0,vertexColors:!0}))}));exports.Stars=c;
package/core/Stars.js CHANGED
@@ -83,9 +83,7 @@ const Stars = /*#__PURE__*/React.forwardRef(({
83
83
  const [starfieldMaterial] = React.useState(() => new StarfieldMaterial());
84
84
  return /*#__PURE__*/React.createElement("points", {
85
85
  ref: ref
86
- }, /*#__PURE__*/React.createElement("bufferGeometry", {
87
- attach: "geometry"
88
- }, /*#__PURE__*/React.createElement("bufferAttribute", {
86
+ }, /*#__PURE__*/React.createElement("bufferGeometry", null, /*#__PURE__*/React.createElement("bufferAttribute", {
89
87
  attach: "attributes-position",
90
88
  args: [position, 3]
91
89
  }), /*#__PURE__*/React.createElement("bufferAttribute", {
@@ -95,7 +93,6 @@ const Stars = /*#__PURE__*/React.forwardRef(({
95
93
  attach: "attributes-size",
96
94
  args: [size, 1]
97
95
  })), /*#__PURE__*/React.createElement("primitive", {
98
- dispose: undefined,
99
96
  ref: material,
100
97
  object: starfieldMaterial,
101
98
  attach: "material",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),o=require("react"),a=require("three"),u=require("three-stdlib");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var i=l(e),c=l(t),d=l(r),v=s(o),f=s(a);const m=v.forwardRef((({children:e,domElement:t,onChange:r,onMouseDown:o,onMouseUp:a,onObjectChange:l,object:s,...m},h)=>{const E=["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"],{camera:b,...g}=m,p=d.default(g,E),L=c.default(g,E),j=n.useThree((e=>e.controls)),O=n.useThree((e=>e.gl)),w=n.useThree((e=>e.events)),q=n.useThree((e=>e.camera)),T=n.useThree((e=>e.invalidate)),y=b||q,C=t||w.connected||O.domElement,D=v.useMemo((()=>new u.TransformControls(y,C)),[y,C]),M=v.useRef();return v.useLayoutEffect((()=>(s?D.attach(s instanceof f.Object3D?s:s.current):M.current instanceof f.Object3D&&D.attach(M.current),()=>{D.detach()})),[s,e,D]),v.useEffect((()=>{if(j){const e=e=>j.enabled=!e.value;return D.addEventListener("dragging-changed",e),()=>D.removeEventListener("dragging-changed",e)}}),[D,j]),v.useEffect((()=>{const e=e=>{T(),r&&r(e)};return null==D||null==D.addEventListener||D.addEventListener("change",e),o&&(null==D||null==D.addEventListener||D.addEventListener("mouseDown",o)),a&&(null==D||null==D.addEventListener||D.addEventListener("mouseUp",a)),l&&(null==D||null==D.addEventListener||D.addEventListener("objectChange",l)),()=>{null==D||null==D.removeEventListener||D.removeEventListener("change",e),o&&(null==D||null==D.removeEventListener||D.removeEventListener("mouseDown",o)),a&&(null==D||null==D.removeEventListener||D.removeEventListener("mouseUp",a)),l&&(null==D||null==D.removeEventListener||D.removeEventListener("objectChange",l))}}),[r,o,a,l,D,T]),D?v.createElement(v.Fragment,null,v.createElement("primitive",i.default({ref:h,dispose:void 0,object:D},p)),v.createElement("group",i.default({ref:M},L),e)):null}));exports.TransformControls=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("@react-three/fiber"),t=require("lodash.omit"),r=require("lodash.pick"),a=require("react"),u=require("three"),o=require("three-stdlib");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var i=l(e),c=l(t),d=l(r),f=s(a),v=s(u);const m=f.forwardRef((({children:e,domElement:t,onChange:r,onMouseDown:a,onMouseUp:u,onObjectChange:l,object:s,...m},h)=>{const E=["enabled","axis","mode","translationSnap","rotationSnap","scaleSnap","space","size","showX","showY","showZ"],{camera:b,...g}=m,L=d.default(g,E),p=c.default(g,E),j=n.useThree((e=>e.controls)),O=n.useThree((e=>e.gl)),w=n.useThree((e=>e.events)),q=n.useThree((e=>e.camera)),T=n.useThree((e=>e.invalidate)),y=b||q,C=t||w.connected||O.domElement,D=f.useMemo((()=>new o.TransformControls(y,C)),[y,C]),M=f.useRef();return f.useLayoutEffect((()=>(s?D.attach(s instanceof v.Object3D?s:s.current):M.current instanceof v.Object3D&&D.attach(M.current),()=>{D.detach()})),[s,e,D]),f.useEffect((()=>{if(j){const e=e=>j.enabled=!e.value;return D.addEventListener("dragging-changed",e),()=>D.removeEventListener("dragging-changed",e)}}),[D,j]),f.useEffect((()=>{const e=e=>{T(),r&&r(e)};return null==D||null==D.addEventListener||D.addEventListener("change",e),a&&(null==D||null==D.addEventListener||D.addEventListener("mouseDown",a)),u&&(null==D||null==D.addEventListener||D.addEventListener("mouseUp",u)),l&&(null==D||null==D.addEventListener||D.addEventListener("objectChange",l)),()=>{null==D||null==D.removeEventListener||D.removeEventListener("change",e),a&&(null==D||null==D.removeEventListener||D.removeEventListener("mouseDown",a)),u&&(null==D||null==D.removeEventListener||D.removeEventListener("mouseUp",u)),l&&(null==D||null==D.removeEventListener||D.removeEventListener("objectChange",l))}}),[r,a,u,l,D,T]),D?f.createElement(f.Fragment,null,f.createElement("primitive",i.default({ref:h,object:D},L)),f.createElement("group",i.default({ref:M},p),e)):null}));exports.TransformControls=m;
@@ -69,7 +69,6 @@ const TransformControls = /*#__PURE__*/React.forwardRef(({
69
69
  }, [onChange, onMouseDown, onMouseUp, onObjectChange, controls, invalidate]);
70
70
  return controls ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("primitive", _extends({
71
71
  ref: ref,
72
- dispose: undefined,
73
72
  object: controls
74
73
  }, transformProps)), /*#__PURE__*/React.createElement("group", _extends({
75
74
  ref: group