@react-three/drei 9.3.4 → 9.4.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.
@@ -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),c=u(r),l=u(t);const s=c.forwardRef((({scale:e=10,frames:r=1/0,opacity:t=1,width:o=1,height:u=1,blur:s=1,far:d=10,resolution:f=512,smooth:h=!0,color:m="#000000",...p},g)=>{const v=a.useThree((e=>e.scene)),b=a.useThree((e=>e.gl)),M=c.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]=c.useMemo((()=>{const e=new l.WebGLRenderTarget(f,f),r=new l.WebGLRenderTarget(f,f);r.texture.generateMipmaps=e.texture.generateMipmaps=!1;const t=new l.PlaneBufferGeometry(o,u).rotateX(Math.PI/2),a=new l.Mesh(t),i=new l.MeshDepthMaterial;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new l.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 c=new l.ShaderMaterial(n.HorizontalBlurShader),s=new l.ShaderMaterial(n.VerticalBlurShader);return s.depthTest=c.depthTest=!1,[e,t,i,a,c,s,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(s),h&&O(.4*s),b.setRenderTarget(null),v.background=e,P++}})),c.createElement("group",i.default({"rotation-x":Math.PI/2},p,{ref:g}),c.createElement("mesh",{geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},c.createElement("meshBasicMaterial",{map:y.texture,"map-encoding":b.outputEncoding,transparent:!0,opacity:t})),c.createElement("orthographicCamera",{ref:M,args:[-o/2,o/2,u/2,-u/2,0,d]}))}));exports.ContactShadows=s;
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 i(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 u=o(e),c=i(r),l=i(t);const s=c.forwardRef((({scale:e=10,frames:r=1/0,opacity:t=1,width:o=1,height:i=1,blur:s=1,far:d=10,resolution:f=512,smooth:h=!0,color:m="#000000",depthWrite:p=!1,renderOrder:g,...v},b)=>{const M=a.useThree((e=>e.scene)),y=a.useThree((e=>e.gl)),w=c.useRef(null);o*=Array.isArray(e)?e[0]:e||1,i*=Array.isArray(e)?e[1]:e||1;const[T,S,x,O,R,j,P]=c.useMemo((()=>{const e=new l.WebGLRenderTarget(f,f),r=new l.WebGLRenderTarget(f,f);r.texture.generateMipmaps=e.texture.generateMipmaps=!1;const t=new l.PlaneBufferGeometry(o,i).rotateX(Math.PI/2),a=new l.Mesh(t),u=new l.MeshDepthMaterial;u.depthTest=u.depthWrite=!1,u.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new l.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 c=new l.ShaderMaterial(n.HorizontalBlurShader),s=new l.ShaderMaterial(n.VerticalBlurShader);return s.depthTest=c.depthTest=!1,[e,t,u,a,c,s,r]}),[f,o,i,e,m]),B=e=>{O.visible=!0,O.material=R,R.uniforms.tDiffuse.value=T.texture,R.uniforms.h.value=1*e/256,y.setRenderTarget(P),y.render(O,w.current),O.material=j,j.uniforms.tDiffuse.value=P.texture,j.uniforms.v.value=1*e/256,y.setRenderTarget(T),y.render(O,w.current),O.visible=!1};let C=0;return a.useFrame((()=>{if(w.current&&(r===1/0||C<r)){const e=M.background;M.background=null;const r=M.overrideMaterial;M.overrideMaterial=x,y.setRenderTarget(T),y.render(M,w.current),M.overrideMaterial=r,B(s),h&&B(.4*s),y.setRenderTarget(null),M.background=e,C++}})),c.createElement("group",u.default({"rotation-x":Math.PI/2},v,{ref:b}),c.createElement("mesh",{renderOrder:g,geometry:S,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},c.createElement("meshBasicMaterial",{map:T.texture,"map-encoding":y.outputEncoding,transparent:!0,opacity:t,depthWrite:p})),c.createElement("orthographicCamera",{ref:w,args:[-o/2,o/2,i/2,-i/2,0,d]}))}));exports.ContactShadows=s;
@@ -11,4 +11,5 @@ export declare const ContactShadows: React.ForwardRefExoticComponent<Pick<Omit<i
11
11
  frames?: number | undefined;
12
12
  scale?: number | [x: number, y: number] | undefined;
13
13
  color?: THREE.ColorRepresentation | undefined;
14
- }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "smooth" | "blur" | "height" | "opacity" | "width" | "resolution" | "far" | "frames"> & React.RefAttributes<unknown>>;
14
+ depthWrite?: boolean | undefined;
15
+ }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "smooth" | "blur" | "height" | "opacity" | "width" | "depthWrite" | "resolution" | "far" | "frames"> & React.RefAttributes<unknown>>;
@@ -15,6 +15,8 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
15
15
  resolution = 512,
16
16
  smooth = true,
17
17
  color = '#000000',
18
+ depthWrite = false,
19
+ renderOrder,
18
20
  ...props
19
21
  }, ref) => {
20
22
  const scene = useThree(state => state.scene);
@@ -87,6 +89,7 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
87
89
  }, props, {
88
90
  ref: ref
89
91
  }), /*#__PURE__*/React.createElement("mesh", {
92
+ renderOrder: renderOrder,
90
93
  geometry: planeGeometry,
91
94
  scale: [1, -1, 1],
92
95
  rotation: [-Math.PI / 2, 0, 0]
@@ -94,7 +97,8 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
94
97
  map: renderTarget.texture,
95
98
  "map-encoding": gl.outputEncoding,
96
99
  transparent: true,
97
- opacity: opacity
100
+ opacity: opacity,
101
+ depthWrite: depthWrite
98
102
  })), /*#__PURE__*/React.createElement("orthographicCamera", {
99
103
  ref: shadowCamera,
100
104
  args: [-width / 2, width / 2, height / 2, -height / 2, 0, far]
@@ -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"),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}};
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 m=o.useRef(),{scene:h,camera:p,gl:b,size:g,viewport:v}=a.useThree(),[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=m.current)||e.setSize(g.width,g.height),null==(r=m.current)||r.setPixelRatio(v.dpr)}),[b,g,v.dpr]),a.useFrame((()=>{var e;return null==(e=m.current)?void 0:e.render()}),s);const P=[];return c||P.push(o.createElement("renderPass",{key:"renderpass",args:[h,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,m]),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
@@ -27,10 +27,13 @@ const Effects = /*#__PURE__*/React.forwardRef(({
27
27
  ...props
28
28
  }, ref) => {
29
29
  const composer = React.useRef();
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);
30
+ const {
31
+ scene,
32
+ camera,
33
+ gl,
34
+ size,
35
+ viewport
36
+ } = useThree();
34
37
  const [target] = React.useState(() => {
35
38
  const t = new WebGLRenderTarget(size.width, size.height, {
36
39
  format: RGBAFormat,
@@ -43,8 +46,8 @@ const Effects = /*#__PURE__*/React.forwardRef(({
43
46
  var _composer$current, _composer$current2;
44
47
 
45
48
  (_composer$current = composer.current) == null ? void 0 : _composer$current.setSize(size.width, size.height);
46
- (_composer$current2 = composer.current) == null ? void 0 : _composer$current2.setPixelRatio(gl.getPixelRatio());
47
- }, [gl, size]);
49
+ (_composer$current2 = composer.current) == null ? void 0 : _composer$current2.setPixelRatio(viewport.dpr);
50
+ }, [gl, size, viewport.dpr]);
48
51
  useFrame(() => {
49
52
  var _composer$current3;
50
53
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("react"),r=require("@react-three/fiber"),t=require("three"),o=require("three-stdlib"),i=require("../helpers/environment-assets.cjs.js"),c=require("./shapes.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var s=a(e),l=u(n);const d=e=>{return(n=e).current&&n.current.isScene?e.current:e;var n};function f({scene:e,background:n=!1,map:t}){const o=r.useThree((e=>e.scene));return l.useLayoutEffect((()=>{if(t){const r=d(e||o),i=r.background,c=r.environment;return"only"!==n&&(r.environment=t),n&&(r.background=t),()=>{"only"!==n&&(r.environment=c),n&&(r.background=i)}}}),[o,e,t,n]),null}function m({files:e=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:n="",preset:c,extensions:a}){if(c){if(!(c in i.presetsObj))throw new Error("Preset must be one of: "+Object.keys(i.presetsObj).join(", "));e=i.presetsObj[c],n="https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/"}const u=Array.isArray(e),s=u?t.CubeTextureLoader:o.RGBELoader,l=r.useLoader(s,u?[e]:e,(e=>{e.setPath(n),a&&a(e)})),d=u?l[0]:l;return d.mapping=u?t.CubeReflectionMapping:t.EquirectangularReflectionMapping,d}function p({background:e=!1,scene:n,...t}){const o=m(t),i=r.useThree((e=>e.scene));return l.useLayoutEffect((()=>{const r=d(n||i),t=r.background,c=r.environment;return"only"!==e&&(r.environment=o),e&&(r.background=o),()=>{"only"!==e&&(r.environment=c),e&&(r.background=t)}}),[o,e,n,i]),null}function v({children:e,near:n=1,far:o=1e3,resolution:i=256,frames:c=1,map:a,background:u=!1,scene:s,files:m,path:v,preset:g,extensions:b}){const h=r.useThree((e=>e.gl)),E=r.useThree((e=>e.scene)),P=l.useRef(null),[x]=l.useState((()=>new t.Scene)),_=l.useMemo((()=>{const e=new t.WebGLCubeRenderTarget(i);return e.texture.type=t.HalfFloatType,e}),[i]);l.useLayoutEffect((()=>{1===c&&P.current.update(h,x);const e=d(s||E),n=e.background,r=e.environment;return"only"!==u&&(e.environment=_.texture),u&&(e.background=_.texture),()=>{"only"!==u&&(e.environment=r),u&&(e.background=n)}}),[e,x,_.texture,s,E,u,c,h]);let y=1;return r.useFrame((()=>{(c===1/0||y<c)&&(P.current.update(h,x),y++)})),l.createElement(l.Fragment,null,r.createPortal(l.createElement(l.Fragment,null,e,l.createElement("cubeCamera",{ref:P,args:[n,o,_]}),m||g?l.createElement(p,{background:!0,files:m,preset:g,path:v,extensions:b}):a?l.createElement(f,{background:!0,map:a,extensions:b}):null),x))}function g(e){var n,r,o,i;const a=m(e),u=e.map||a,d=(p=u)&&p.isCubeTexture;var p;const v=l.useMemo((()=>{var e,n;const r=(null!==(e=d?null==(n=u.image[0])?void 0:n.width:u.image.width)&&void 0!==e?e:1024)/4,t=Math.floor(Math.log2(r)),o=Math.pow(2,t),i=3*Math.max(o,112);return[d?"#define ENVMAP_TYPE_CUBE":"","#define CUBEUV_TEXEL_WIDTH "+1/i,"#define CUBEUV_TEXEL_HEIGHT "+1/(4*o),`#define CUBEUV_MAX_MIP ${t}.0`,""]}),[]),g=l.useMemo((()=>v.join("\n")+"#define GLSLIFY 1\n#define ENVMAP_TYPE_CUBE_UV\nvarying vec3 vWorldPosition;uniform float radius;uniform float height;\n#ifdef ENVMAP_TYPE_CUBE\nuniform samplerCube cubemap;\n#else\nuniform sampler2D cubemap;\n#endif\nfloat diskIntersect(in vec3 ro,in vec3 rd,vec3 c,vec3 n,float r){vec3 o=ro-c;float t=-dot(n,o)/dot(rd,n);vec3 q=o+rd*t;return(dot(q,q)<r*r)? t : 1e6;}float sphereIntersect(in vec3 ro,in vec3 rd,in vec3 ce,float ra){vec3 oc=ro-ce;float b=dot(oc,rd);float c=dot(oc,oc)-ra*ra;float h=b*b-c;if(h<0.0)-1.0;h=sqrt(h);return-b+h;}vec3 project(){vec3 p=normalize(vWorldPosition);vec3 camPos=cameraPosition;camPos.y-=height;float intersection=sphereIntersect(camPos,p,vec3(0.),radius);if(intersection>0.){vec3 h=vec3(0.0,-height,0.0);float intersection2=diskIntersect(camPos,p,h,vec3(0.0,-1.0,0.0),radius);p=(camPos+min(intersection,intersection2)*p)/radius;}else{p=vec3(0.0,1.0,0.0);}return p;}\n#include <common>\n#include <cube_uv_reflection_fragment>\nvoid main(){vec3 projectedWorldPosition=project();\n#ifdef ENVMAP_TYPE_CUBE\nvec3 outcolor=textureCube(cubemap,projectedWorldPosition).rgb;\n#else\nvec3 direction=normalize(projectedWorldPosition);vec2 uv=equirectUv(direction);vec3 outcolor=texture2D(cubemap,uv).rgb;\n#endif\ngl_FragColor=vec4(outcolor,1.0);\n#include <tonemapping_fragment>\n#include <encodings_fragment>\n}"),[v]),b=l.useMemo((()=>({cubemap:{value:null},height:{value:15},radius:{value:60}})),[]),h=l.useRef(null),E=null==(n=e.ground)?void 0:n.height,P=null==(r=e.ground)?void 0:r.radius,x=null!==(o=null==(i=e.ground)?void 0:i.scale)&&void 0!==o?o:1e3;return l.useEffect((()=>{E&&(h.current.uniforms.height.value=E)}),[E]),l.useEffect((()=>{P&&(h.current.uniforms.radius.value=P)}),[P]),l.useEffect((()=>{h.current.uniforms.cubemap.value=u}),[u]),l.createElement(l.Fragment,null,l.createElement(f,s.default({},e,{map:u})),l.createElement(c.Icosahedron,{scale:x,args:[1,16]},l.createElement("shaderMaterial",{ref:h,side:t.BackSide,vertexShader:"#define GLSLIFY 1\nvarying vec3 vWorldPosition;void main(){vec4 worldPosition=modelMatrix*vec4(position,1.0);vWorldPosition=worldPosition.xyz;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}",fragmentShader:g,uniforms:b})))}exports.Environment=function(e){return e.ground?l.createElement(g,e):e.map?l.createElement(f,e):e.children?l.createElement(v,e):l.createElement(p,e)},exports.EnvironmentCube=p,exports.EnvironmentMap=f,exports.EnvironmentPortal=v,exports.useEnvironment=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("react"),r=require("@react-three/fiber"),t=require("three"),o=require("three-stdlib"),i=require("../helpers/environment-assets.cjs.js"),c=require("./shapes.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var s=a(e),l=u(n);const d=e=>{return(n=e).current&&n.current.isScene?e.current:e;var n};function f({scene:e,background:n=!1,map:t}){const o=r.useThree((e=>e.scene));return l.useLayoutEffect((()=>{if(t){const r=d(e||o),i=r.background,c=r.environment;return"only"!==n&&(r.environment=t),n&&(r.background=t),()=>{"only"!==n&&(r.environment=c),n&&(r.background=i)}}}),[o,e,t,n]),null}function m({files:e=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:n="",preset:c,extensions:a}){if(c){if(!(c in i.presetsObj))throw new Error("Preset must be one of: "+Object.keys(i.presetsObj).join(", "));e=i.presetsObj[c],n="https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/"}const u=Array.isArray(e),s=u?t.CubeTextureLoader:o.RGBELoader,l=r.useLoader(s,u?[e]:e,(e=>{e.setPath(n),a&&a(e)})),d=u?l[0]:l;return d.mapping=u?t.CubeReflectionMapping:t.EquirectangularReflectionMapping,d}function p({background:e=!1,scene:n,...t}){const o=m(t),i=r.useThree((e=>e.scene));return l.useLayoutEffect((()=>{const r=d(n||i),t=r.background,c=r.environment;return"only"!==e&&(r.environment=o),e&&(r.background=o),()=>{"only"!==e&&(r.environment=c),e&&(r.background=t)}}),[o,e,n,i]),null}function v({children:e,near:n=1,far:o=1e3,resolution:i=256,frames:c=1,map:a,background:u=!1,scene:s,files:m,path:v,preset:g,extensions:b}){const h=r.useThree((e=>e.gl)),E=r.useThree((e=>e.scene)),P=l.useRef(null),[x]=l.useState((()=>new t.Scene)),_=l.useMemo((()=>{const e=new t.WebGLCubeRenderTarget(i);return e.texture.type=t.HalfFloatType,e}),[i]);l.useLayoutEffect((()=>{1===c&&P.current.update(h,x);const e=d(s||E),n=e.background,r=e.environment;return"only"!==u&&(e.environment=_.texture),u&&(e.background=_.texture),()=>{"only"!==u&&(e.environment=r),u&&(e.background=n)}}),[e,x,_.texture,s,E,u,c,h]);let y=1;return r.useFrame((()=>{(c===1/0||y<c)&&(P.current.update(h,x),y++)})),l.createElement(l.Fragment,null,r.createPortal(l.createElement(l.Fragment,null,e,l.createElement("cubeCamera",{ref:P,args:[n,o,_]}),m||g?l.createElement(p,{background:!0,files:m,preset:g,path:v,extensions:b}):a?l.createElement(f,{background:!0,map:a,extensions:b}):null),x))}function g(e){var n,r,o,i;const a=m(e),u=e.map||a,d=(p=u)&&p.isCubeTexture;var p;const v=l.useMemo((()=>{var e,n;const r=(null!==(e=d?null==(n=u.image[0])?void 0:n.width:u.image.width)&&void 0!==e?e:1024)/4,t=Math.floor(Math.log2(r)),o=Math.pow(2,t),i=3*Math.max(o,112);return[d?"#define ENVMAP_TYPE_CUBE":"","#define CUBEUV_TEXEL_WIDTH "+1/i,"#define CUBEUV_TEXEL_HEIGHT "+1/(4*o),`#define CUBEUV_MAX_MIP ${t}.0`,""]}),[]),g=l.useMemo((()=>v.join("\n")+"#define GLSLIFY 1\n#define ENVMAP_TYPE_CUBE_UV\nvarying vec3 vWorldPosition;uniform float radius;uniform float height;\n#ifdef ENVMAP_TYPE_CUBE\nuniform samplerCube cubemap;\n#else\nuniform sampler2D cubemap;\n#endif\nfloat diskIntersect(in vec3 ro,in vec3 rd,vec3 c,vec3 n,float r){vec3 o=ro-c;float t=-dot(n,o)/dot(rd,n);vec3 q=o+rd*t;return(dot(q,q)<r*r)? t : 1e6;}float sphereIntersect(in vec3 ro,in vec3 rd,in vec3 ce,float ra){vec3 oc=ro-ce;float b=dot(oc,rd);float c=dot(oc,oc)-ra*ra;float h=b*b-c;if(h<0.0)-1.0;h=sqrt(h);return-b+h;}vec3 project(){vec3 p=normalize(vWorldPosition);vec3 camPos=cameraPosition;camPos.y-=height;float intersection=sphereIntersect(camPos,p,vec3(0.),radius);if(intersection>0.){vec3 h=vec3(0.0,-height,0.0);float intersection2=diskIntersect(camPos,p,h,vec3(0.0,-1.0,0.0),radius);p=(camPos+min(intersection,intersection2)*p)/radius;}else{p=vec3(0.0,1.0,0.0);}return p;}\n#include <common>\n#include <cube_uv_reflection_fragment>\nvoid main(){vec3 projectedWorldPosition=project();\n#ifdef ENVMAP_TYPE_CUBE\nvec3 outcolor=textureCube(cubemap,projectedWorldPosition).rgb;\n#else\nvec3 direction=normalize(projectedWorldPosition);vec2 uv=equirectUv(direction);vec3 outcolor=texture2D(cubemap,uv).rgb;\n#endif\ngl_FragColor=vec4(outcolor,1.0);\n#include <tonemapping_fragment>\n#include <encodings_fragment>\n}"),[v]),b=l.useMemo((()=>({cubemap:{value:null},height:{value:15},radius:{value:60}})),[]),h=l.useRef(null),E=null==(n=e.ground)?void 0:n.height,P=null==(r=e.ground)?void 0:r.radius,x=null!==(o=null==(i=e.ground)?void 0:i.scale)&&void 0!==o?o:1e3;return l.useEffect((()=>{E&&(h.current.uniforms.height.value=E)}),[E]),l.useEffect((()=>{P&&(h.current.uniforms.radius.value=P)}),[P]),l.useEffect((()=>{h.current.uniforms.cubemap.value=u}),[u]),l.createElement(l.Fragment,null,l.createElement(f,s.default({},e,{map:u})),l.createElement(c.Icosahedron,{scale:x,args:[1,16]},l.createElement("shaderMaterial",{ref:h,side:t.BackSide,vertexShader:"#define GLSLIFY 1\nvarying vec3 vWorldPosition;void main(){vec4 worldPosition=modelMatrix*vec4(position,1.0);vWorldPosition=worldPosition.xyz;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}",fragmentShader:g,uniforms:b,depthTest:!1})))}exports.Environment=function(e){return e.ground?l.createElement(g,e):e.map?l.createElement(f,e):e.children?l.createElement(v,e):l.createElement(p,e)},exports.EnvironmentCube=p,exports.EnvironmentMap=f,exports.EnvironmentPortal=v,exports.useEnvironment=m;
@@ -185,11 +185,11 @@ function EnvironmentGround(props) {
185
185
  args: [1, 16]
186
186
  }, /*#__PURE__*/React.createElement("shaderMaterial", {
187
187
  ref: mat,
188
- side: BackSide //
189
- ,
188
+ side: BackSide,
190
189
  vertexShader: vertexShader,
191
190
  fragmentShader: fragment,
192
- uniforms: uniforms
191
+ uniforms: uniforms,
192
+ depthTest: false
193
193
  })));
194
194
  }
195
195
 
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),o=require("@react-three/fiber"),i=require("./shaderMaterial.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var l=a(e),s=n(t),c=n(r);const f=i.shaderMaterial({time:0,pixelRatio:2},"#define GLSLIFY 1\nuniform float pixelRatio;uniform float time;attribute float size;attribute float speed;attribute float opacity;attribute vec3 noise;attribute vec3 color;varying vec3 vColor;varying float vOpacity;void main(){vec4 modelPosition=modelMatrix*vec4(position,1.0);modelPosition.y+=sin(time*speed+modelPosition.x*noise.x*100.0)*0.2;modelPosition.z+=cos(time*speed+modelPosition.x*noise.y*100.0)*0.2;modelPosition.x+=cos(time*speed+modelPosition.x*noise.z*100.0)*0.2;vec4 viewPosition=viewMatrix*modelPosition;vec4 projectionPostion=projectionMatrix*viewPosition;gl_Position=projectionPostion;gl_PointSize=size*25.*pixelRatio;gl_PointSize*=(1.0/-viewPosition.z);vColor=color;vOpacity=opacity;}","#define GLSLIFY 1\nvarying vec3 vColor;varying float vOpacity;void main(){float distanceToCenter=distance(gl_PointCoord,vec2(0.5));float strength=0.05/distanceToCenter-0.1;gl_FragColor=vec4(vColor,strength*vOpacity);}");o.extend({ParticleMaterial:f});const u=e=>e&&e.constructor===Float32Array,d=e=>e instanceof c.Vector2||e instanceof c.Vector3||e instanceof c.Vector4,m=e=>Array.isArray(e)?e:d(e)?e.toArray():[e,e,e];function p(e,t,r){return s.useMemo((()=>{if(void 0!==t){if(u(t))return t;if(t instanceof c.Color){const r=Array.from({length:3*e},(()=>{return[(e=t).r,e.g,e.b];var e})).flat();return Float32Array.from(r)}if(d(t)||Array.isArray(t)){const r=Array.from({length:3*e},(()=>m(t))).flat();return Float32Array.from(r)}return Float32Array.from({length:e},(()=>t))}return Float32Array.from({length:e},r)}),[t])}const v=s.forwardRef((({noise:e=1,count:t=100,speed:r=1,opacity:i=1,pixelRatio:a,scale:n=[1,1,1],size:f,color:d,...v},b)=>{const y=s.useRef(),g=Float32Array.from(Array.from({length:t},(()=>m(n).map(c.MathUtils.randFloatSpread))).flat()),P=p(t,f,(()=>Math.random())),h=p(t,i),A=p(t,r),x=p(3*t,e),j=p(void 0===d?3*t:t,u(d)?d:new c.Color(d),(()=>1));return o.useFrame((({clock:e})=>y.current.uniforms.time.value=e.elapsedTime)),s.useEffect((()=>{y.current.uniforms.pixelRatio.value=null!=a?a:window.devicePixelRatio}),[a]),s.createElement("points",l.default({key:`particle-${t}-${JSON.stringify(n)}`},v,{ref:b}),s.createElement("bufferGeometry",null,s.createElement("bufferAttribute",{attach:"attributes-position",args:[g,3]}),s.createElement("bufferAttribute",{attach:"attributes-size",args:[P,1]}),s.createElement("bufferAttribute",{attach:"attributes-opacity",args:[h,1]}),s.createElement("bufferAttribute",{attach:"attributes-speed",args:[A,1]}),s.createElement("bufferAttribute",{attach:"attributes-color",args:[j,3]}),s.createElement("bufferAttribute",{attach:"attributes-noise",args:[x,3]})),s.createElement("particleMaterial",{ref:y,transparent:!0,pixelRatio:a,depthWrite:!1}))}));exports.Particles=v;
@@ -0,0 +1,40 @@
1
+ import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ import { Node } from '@react-three/fiber';
4
+ interface Props {
5
+ count?: number;
6
+ speed?: number | Float32Array;
7
+ opacity?: number | Float32Array;
8
+ color?: THREE.ColorRepresentation | Float32Array;
9
+ pixelRatio?: number;
10
+ size?: number | Float32Array;
11
+ scale?: number | [number, number, number] | THREE.Vector3;
12
+ noise?: number | [number, number, number] | THREE.Vector3 | Float32Array;
13
+ }
14
+ declare global {
15
+ namespace JSX {
16
+ interface IntrinsicElements {
17
+ particleMaterial: Node<any, any>;
18
+ }
19
+ }
20
+ }
21
+ export declare const Particles: React.ForwardRefExoticComponent<Pick<Props & Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>, import("@react-three/fiber").NodeProps<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>, typeof THREE.Points>>>, import("@react-three/fiber").NonFunctionKeys<{
22
+ position?: import("@react-three/fiber").Vector3 | undefined;
23
+ up?: import("@react-three/fiber").Vector3 | undefined;
24
+ scale?: import("@react-three/fiber").Vector3 | undefined;
25
+ rotation?: import("@react-three/fiber").Euler | undefined;
26
+ matrix?: import("@react-three/fiber").Matrix4 | undefined;
27
+ quaternion?: import("@react-three/fiber").Quaternion | undefined;
28
+ layers?: import("@react-three/fiber").Layers | undefined;
29
+ dispose?: (() => void) | null | undefined;
30
+ }>> & {
31
+ position?: import("@react-three/fiber").Vector3 | undefined;
32
+ up?: import("@react-three/fiber").Vector3 | undefined;
33
+ scale?: import("@react-three/fiber").Vector3 | undefined;
34
+ rotation?: import("@react-three/fiber").Euler | undefined;
35
+ matrix?: import("@react-three/fiber").Matrix4 | undefined;
36
+ quaternion?: import("@react-three/fiber").Quaternion | undefined;
37
+ layers?: import("@react-three/fiber").Layers | undefined;
38
+ dispose?: (() => void) | null | undefined;
39
+ } & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "material" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "updateMorphTargets" | "isPoints" | keyof Props> & React.RefAttributes<THREE.Points<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
40
+ export {};
@@ -0,0 +1,112 @@
1
+ import _extends from '@babel/runtime/helpers/esm/extends';
2
+ import * as React from 'react';
3
+ import * as THREE from 'three';
4
+ import { extend, useFrame } from '@react-three/fiber';
5
+ import fragShader from '../helpers/glsl/Particles.frag.glsl.js';
6
+ import vertShader from '../helpers/glsl/Particles.vert.glsl.js';
7
+ import { shaderMaterial } from './shaderMaterial.js';
8
+
9
+ const ParticleMaterial = shaderMaterial({
10
+ time: 0,
11
+ pixelRatio: 2
12
+ }, vertShader, fragShader);
13
+ extend({
14
+ ParticleMaterial
15
+ });
16
+
17
+ const isFloat32Array = def => def && def.constructor === Float32Array;
18
+
19
+ const expandColor = v => [v.r, v.g, v.b];
20
+
21
+ const isVector = v => v instanceof THREE.Vector2 || v instanceof THREE.Vector3 || v instanceof THREE.Vector4;
22
+
23
+ const normalizeVector = v => {
24
+ if (Array.isArray(v)) return v;else if (isVector(v)) return v.toArray();
25
+ return [v, v, v];
26
+ };
27
+
28
+ function usePropAsIsOrAsAttribute(count, prop, setDefault) {
29
+ return React.useMemo(() => {
30
+ if (prop !== undefined) {
31
+ if (isFloat32Array(prop)) {
32
+ return prop;
33
+ } else {
34
+ if (prop instanceof THREE.Color) {
35
+ const a = Array.from({
36
+ length: count * 3
37
+ }, () => expandColor(prop)).flat();
38
+ return Float32Array.from(a);
39
+ } else if (isVector(prop) || Array.isArray(prop)) {
40
+ const a = Array.from({
41
+ length: count * 3
42
+ }, () => normalizeVector(prop)).flat();
43
+ return Float32Array.from(a);
44
+ }
45
+
46
+ return Float32Array.from({
47
+ length: count
48
+ }, () => prop);
49
+ }
50
+ }
51
+
52
+ return Float32Array.from({
53
+ length: count
54
+ }, setDefault);
55
+ }, [prop]);
56
+ }
57
+
58
+ const Particles = /*#__PURE__*/React.forwardRef(({
59
+ noise = 1,
60
+ count = 100,
61
+ speed = 1,
62
+ opacity = 1,
63
+ pixelRatio,
64
+ scale = [1, 1, 1],
65
+ size,
66
+ color,
67
+ ...props
68
+ }, forwardRef) => {
69
+ const matRef = React.useRef();
70
+ const positions = Float32Array.from(Array.from({
71
+ length: count
72
+ }, () => normalizeVector(scale).map(THREE.MathUtils.randFloatSpread)).flat());
73
+ const sizes = usePropAsIsOrAsAttribute(count, size, () => Math.random());
74
+ const opacities = usePropAsIsOrAsAttribute(count, opacity);
75
+ const speeds = usePropAsIsOrAsAttribute(count, speed);
76
+ const noises = usePropAsIsOrAsAttribute(count * 3, noise);
77
+ const colors = usePropAsIsOrAsAttribute(color === undefined ? count * 3 : count, !isFloat32Array(color) ? new THREE.Color(color) : color, () => 1);
78
+ useFrame(({
79
+ clock
80
+ }) => matRef.current.uniforms.time.value = clock.elapsedTime);
81
+ React.useEffect(() => void (matRef.current.uniforms.pixelRatio.value = pixelRatio !== null && pixelRatio !== void 0 ? pixelRatio : window.devicePixelRatio), [pixelRatio]);
82
+ return /*#__PURE__*/React.createElement("points", _extends({
83
+ key: `particle-${count}-${JSON.stringify(scale)}`
84
+ }, props, {
85
+ ref: forwardRef
86
+ }), /*#__PURE__*/React.createElement("bufferGeometry", null, /*#__PURE__*/React.createElement("bufferAttribute", {
87
+ attach: "attributes-position",
88
+ args: [positions, 3]
89
+ }), /*#__PURE__*/React.createElement("bufferAttribute", {
90
+ attach: "attributes-size",
91
+ args: [sizes, 1]
92
+ }), /*#__PURE__*/React.createElement("bufferAttribute", {
93
+ attach: "attributes-opacity",
94
+ args: [opacities, 1]
95
+ }), /*#__PURE__*/React.createElement("bufferAttribute", {
96
+ attach: "attributes-speed",
97
+ args: [speeds, 1]
98
+ }), /*#__PURE__*/React.createElement("bufferAttribute", {
99
+ attach: "attributes-color",
100
+ args: [colors, 3]
101
+ }), /*#__PURE__*/React.createElement("bufferAttribute", {
102
+ attach: "attributes-noise",
103
+ args: [noises, 3]
104
+ })), /*#__PURE__*/React.createElement("particleMaterial", {
105
+ ref: matRef,
106
+ transparent: true,
107
+ pixelRatio: pixelRatio,
108
+ depthWrite: false
109
+ }));
110
+ });
111
+
112
+ export { Particles };
@@ -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("planeGeometry",null),c.createElement("meshBasicMaterial",{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 i=c.forwardRef((({fog:e=!1,renderOrder:t,depthWrite:a=!1,colorStop:o=0,color:i="black",opacity:l=.5,...d},u)=>{const f=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const t=e.getContext("2d"),a=t.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return a.addColorStop(o,new r.Color(i).getStyle()),a.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=a,t.fillRect(0,0,e.width,e.height),e}),[i,o]);return c.createElement("mesh",n.default({renderOrder:t,ref:u,"rotation-x":-Math.PI/2},d),c.createElement("planeGeometry",null),c.createElement("meshBasicMaterial",{transparent:!0,opacity:l,fog:e,depthWrite:a,side:r.DoubleSide},c.createElement("canvasTexture",{attach:"map",args:[f]})))}));exports.Shadow=i;
package/core/Shadow.d.ts CHANGED
@@ -23,4 +23,5 @@ export declare const Shadow: React.ForwardRefExoticComponent<Pick<Omit<import("@
23
23
  fog?: boolean | undefined;
24
24
  color?: string | number | Color | undefined;
25
25
  opacity?: number | undefined;
26
- }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "material" | "fog" | "opacity" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "colorStop"> & React.RefAttributes<unknown>>;
26
+ depthWrite?: boolean | undefined;
27
+ }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "material" | "fog" | "opacity" | "depthWrite" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "colorStop"> & React.RefAttributes<unknown>>;
package/core/Shadow.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
- import { Color } from 'three';
3
+ import { Color, DoubleSide } from 'three';
4
4
 
5
5
  const Shadow = /*#__PURE__*/React.forwardRef(({
6
6
  fog = false,
7
+ renderOrder,
8
+ depthWrite = false,
7
9
  colorStop = 0.0,
8
10
  color = 'black',
9
11
  opacity = 0.5,
@@ -22,11 +24,15 @@ const Shadow = /*#__PURE__*/React.forwardRef(({
22
24
  return canvas;
23
25
  }, [color, colorStop]);
24
26
  return /*#__PURE__*/React.createElement("mesh", _extends({
25
- ref: ref
27
+ renderOrder: renderOrder,
28
+ ref: ref,
29
+ "rotation-x": -Math.PI / 2
26
30
  }, props), /*#__PURE__*/React.createElement("planeGeometry", null), /*#__PURE__*/React.createElement("meshBasicMaterial", {
27
31
  transparent: true,
28
32
  opacity: opacity,
29
- fog: fog
33
+ fog: fog,
34
+ depthWrite: depthWrite,
35
+ side: DoubleSide
30
36
  }, /*#__PURE__*/React.createElement("canvasTexture", {
31
37
  attach: "map",
32
38
  args: [canvas]
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("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),n=require("./Image.cjs.js"),j=require("./Edges.cjs.js"),c=require("./Trail.cjs.js"),p=require("./Sampler.cjs.js"),l=require("./ComputedAttribute.cjs.js"),x=require("./Clone.cjs.js"),q=require("./OrthographicCamera.cjs.js"),d=require("./PerspectiveCamera.cjs.js"),C=require("./CubeCamera.cjs.js"),m=require("./DeviceOrientationControls.cjs.js"),h=require("./FlyControls.cjs.js"),b=require("./MapControls.cjs.js"),B=require("./OrbitControls.cjs.js"),P=require("./TrackballControls.cjs.js"),S=require("./ArcballControls.cjs.js"),M=require("./TransformControls.cjs.js"),T=require("./PointerLockControls.cjs.js"),f=require("./FirstPersonControls.cjs.js"),v=require("./GizmoHelper.cjs.js"),g=require("./GizmoViewcube.cjs.js"),E=require("./GizmoViewport.cjs.js"),L=require("./useCubeTexture.cjs.js"),A=require("./useFBX.cjs.js"),G=require("./useGLTF.cjs.js"),k=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),F=require("./useKTX2.cjs.js"),w=require("./Stats.cjs.js"),z=require("./useDepthBuffer.cjs.js"),I=require("./useAspect.cjs.js"),O=require("./useCamera.cjs.js"),R=require("./useDetectGPU.cjs.js"),y=require("./useHelper.cjs.js"),H=require("./useBVH.cjs.js"),V=require("./useContextBridge.cjs.js"),Q=require("./useAnimations.cjs.js"),X=require("./useFBO.cjs.js"),K=require("./useIntersect.cjs.js"),W=require("./useBoxProjectedEnv.cjs.js"),N=require("./CurveModifier.cjs.js"),U=require("./MeshDistortMaterial.cjs.js"),_=require("./MeshWobbleMaterial.cjs.js"),J=require("./MeshReflectorMaterial.cjs.js"),Y=require("./PointMaterial.cjs.js"),Z=require("./shaderMaterial.cjs.js"),$=require("./softShadows.cjs.js"),ee=require("./shapes.cjs.js"),re=require("./RoundedBox.cjs.js"),se=require("./ScreenQuad.cjs.js"),te=require("./Center.cjs.js"),oe=require("./Bounds.cjs.js"),ie=require("./CameraShake.cjs.js"),ue=require("./Float.cjs.js"),ae=require("./Stage.cjs.js"),ne=require("./Backdrop.cjs.js"),je=require("./Shadow.cjs.js"),ce=require("./ContactShadows.cjs.js"),pe=require("./Reflector.cjs.js"),le=require("./SpotLight.cjs.js"),xe=require("./Environment.cjs.js"),qe=require("./Lightformer.cjs.js"),de=require("./Sky.cjs.js"),Ce=require("./Stars.cjs.js"),me=require("./Cloud.cjs.js"),he=require("./useMatcapTexture.cjs.js"),be=require("./useNormalTexture.cjs.js"),Be=require("./Points.cjs.js"),Pe=require("./Instances.cjs.js"),Se=require("./Segments.cjs.js"),Me=require("./Detailed.cjs.js"),Te=require("./Preload.cjs.js"),fe=require("./BakeShadows.cjs.js"),ve=require("./meshBounds.cjs.js"),ge=require("./AdaptiveDpr.cjs.js"),Ee=require("./AdaptiveEvents.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("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=t.Line,exports.PositionalAudio=o.PositionalAudio,exports.Text=i.Text,exports.Effects=u.Effects,exports.isWebGL2Available=u.isWebGL2Available,exports.GradientTexture=a.GradientTexture,exports.Image=n.Image,exports.Edges=j.Edges,exports.Trail=c.Trail,exports.useTrail=c.useTrail,exports.Sampler=p.Sampler,exports.ComputedAttribute=l.ComputedAttribute,exports.Clone=x.Clone,exports.OrthographicCamera=q.OrthographicCamera,exports.PerspectiveCamera=d.PerspectiveCamera,exports.CubeCamera=C.CubeCamera,exports.DeviceOrientationControls=m.DeviceOrientationControls,exports.FlyControls=h.FlyControls,exports.MapControls=b.MapControls,exports.OrbitControls=B.OrbitControls,exports.TrackballControls=P.TrackballControls,exports.ArcballControls=S.ArcballControls,exports.TransformControls=M.TransformControls,exports.PointerLockControls=T.PointerLockControls,exports.FirstPersonControls=f.FirstPersonControls,exports.GizmoHelper=v.GizmoHelper,exports.useGizmoContext=v.useGizmoContext,exports.GizmoViewcube=g.GizmoViewcube,exports.GizmoViewport=E.GizmoViewport,exports.useCubeTexture=L.useCubeTexture,exports.useFBX=A.useFBX,exports.useGLTF=G.useGLTF,exports.useProgress=k.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.useKTX2=F.useKTX2,exports.Stats=w.Stats,exports.useDepthBuffer=z.useDepthBuffer,exports.useAspect=I.useAspect,exports.useCamera=O.useCamera,exports.useDetectGPU=R.useDetectGPU,exports.useHelper=y.useHelper,exports.useBVH=H.useBVH,exports.useContextBridge=V.useContextBridge,exports.useAnimations=Q.useAnimations,exports.useFBO=X.useFBO,exports.useIntersect=K.useIntersect,exports.useBoxProjectedEnv=W.useBoxProjectedEnv,exports.CurveModifier=N.CurveModifier,exports.MeshDistortMaterial=U.MeshDistortMaterial,exports.MeshWobbleMaterial=_.MeshWobbleMaterial,exports.MeshReflectorMaterial=J.MeshReflectorMaterial,exports.PointMaterial=Y.PointMaterial,exports.PointMaterialImpl=Y.PointMaterialImpl,exports.shaderMaterial=Z.shaderMaterial,exports.softShadows=$.softShadows,exports.Box=ee.Box,exports.Circle=ee.Circle,exports.Cone=ee.Cone,exports.Cylinder=ee.Cylinder,exports.Dodecahedron=ee.Dodecahedron,exports.Extrude=ee.Extrude,exports.Icosahedron=ee.Icosahedron,exports.Lathe=ee.Lathe,exports.Octahedron=ee.Octahedron,exports.Plane=ee.Plane,exports.Polyhedron=ee.Polyhedron,exports.Ring=ee.Ring,exports.Sphere=ee.Sphere,exports.Tetrahedron=ee.Tetrahedron,exports.Torus=ee.Torus,exports.TorusKnot=ee.TorusKnot,exports.Tube=ee.Tube,exports.RoundedBox=re.RoundedBox,exports.ScreenQuad=se.ScreenQuad,exports.Center=te.Center,exports.Bounds=oe.Bounds,exports.useBounds=oe.useBounds,exports.CameraShake=ie.CameraShake,exports.Float=ue.Float,exports.Stage=ae.Stage,exports.Backdrop=ne.Backdrop,exports.Shadow=je.Shadow,exports.ContactShadows=ce.ContactShadows,exports.Reflector=pe.Reflector,exports.SpotLight=le.SpotLight,exports.Environment=xe.Environment,exports.EnvironmentCube=xe.EnvironmentCube,exports.EnvironmentMap=xe.EnvironmentMap,exports.EnvironmentPortal=xe.EnvironmentPortal,exports.useEnvironment=xe.useEnvironment,exports.Lightformer=qe.Lightformer,exports.Sky=de.Sky,exports.calcPosFromAngles=de.calcPosFromAngles,exports.Stars=Ce.Stars,exports.Cloud=me.Cloud,exports.useMatcapTexture=he.useMatcapTexture,exports.useNormalTexture=be.useNormalTexture,exports.Point=Be.Point,exports.Points=Be.Points,exports.PointsBuffer=Be.PointsBuffer,exports.Instance=Pe.Instance,exports.Instances=Pe.Instances,exports.Merged=Pe.Merged,exports.Segment=Se.Segment,exports.Segments=Se.Segments,exports.Detailed=Me.Detailed,exports.Preload=Te.Preload,exports.BakeShadows=fe.BakeShadows,exports.meshBounds=ve.meshBounds,exports.AdaptiveDpr=ge.AdaptiveDpr,exports.AdaptiveEvents=Ee.AdaptiveEvents;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),n=require("./Image.cjs.js"),j=require("./Edges.cjs.js"),c=require("./Trail.cjs.js"),p=require("./Sampler.cjs.js"),l=require("./ComputedAttribute.cjs.js"),x=require("./Clone.cjs.js"),q=require("./OrthographicCamera.cjs.js"),d=require("./PerspectiveCamera.cjs.js"),C=require("./CubeCamera.cjs.js"),m=require("./DeviceOrientationControls.cjs.js"),h=require("./FlyControls.cjs.js"),P=require("./MapControls.cjs.js"),b=require("./OrbitControls.cjs.js"),B=require("./TrackballControls.cjs.js"),S=require("./ArcballControls.cjs.js"),M=require("./TransformControls.cjs.js"),T=require("./PointerLockControls.cjs.js"),f=require("./FirstPersonControls.cjs.js"),v=require("./GizmoHelper.cjs.js"),g=require("./GizmoViewcube.cjs.js"),E=require("./GizmoViewport.cjs.js"),L=require("./useCubeTexture.cjs.js"),A=require("./useFBX.cjs.js"),G=require("./useGLTF.cjs.js"),k=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),F=require("./useKTX2.cjs.js"),w=require("./Stats.cjs.js"),z=require("./useDepthBuffer.cjs.js"),I=require("./useAspect.cjs.js"),O=require("./useCamera.cjs.js"),R=require("./useDetectGPU.cjs.js"),y=require("./useHelper.cjs.js"),H=require("./useBVH.cjs.js"),V=require("./useContextBridge.cjs.js"),Q=require("./useAnimations.cjs.js"),X=require("./useFBO.cjs.js"),K=require("./useIntersect.cjs.js"),W=require("./useBoxProjectedEnv.cjs.js"),N=require("./CurveModifier.cjs.js"),U=require("./MeshDistortMaterial.cjs.js"),_=require("./MeshWobbleMaterial.cjs.js"),J=require("./MeshReflectorMaterial.cjs.js"),Y=require("./PointMaterial.cjs.js"),Z=require("./shaderMaterial.cjs.js"),$=require("./softShadows.cjs.js"),ee=require("./shapes.cjs.js"),re=require("./RoundedBox.cjs.js"),se=require("./ScreenQuad.cjs.js"),te=require("./Center.cjs.js"),oe=require("./Bounds.cjs.js"),ie=require("./CameraShake.cjs.js"),ue=require("./Float.cjs.js"),ae=require("./Stage.cjs.js"),ne=require("./Backdrop.cjs.js"),je=require("./Shadow.cjs.js"),ce=require("./ContactShadows.cjs.js"),pe=require("./Reflector.cjs.js"),le=require("./SpotLight.cjs.js"),xe=require("./Environment.cjs.js"),qe=require("./Lightformer.cjs.js"),de=require("./Sky.cjs.js"),Ce=require("./Stars.cjs.js"),me=require("./Cloud.cjs.js"),he=require("./Particles.cjs.js"),Pe=require("./useMatcapTexture.cjs.js"),be=require("./useNormalTexture.cjs.js"),Be=require("./Points.cjs.js"),Se=require("./Instances.cjs.js"),Me=require("./Segments.cjs.js"),Te=require("./Detailed.cjs.js"),fe=require("./Preload.cjs.js"),ve=require("./BakeShadows.cjs.js"),ge=require("./meshBounds.cjs.js"),Ee=require("./AdaptiveDpr.cjs.js"),Le=require("./AdaptiveEvents.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("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=t.Line,exports.PositionalAudio=o.PositionalAudio,exports.Text=i.Text,exports.Effects=u.Effects,exports.isWebGL2Available=u.isWebGL2Available,exports.GradientTexture=a.GradientTexture,exports.Image=n.Image,exports.Edges=j.Edges,exports.Trail=c.Trail,exports.useTrail=c.useTrail,exports.Sampler=p.Sampler,exports.ComputedAttribute=l.ComputedAttribute,exports.Clone=x.Clone,exports.OrthographicCamera=q.OrthographicCamera,exports.PerspectiveCamera=d.PerspectiveCamera,exports.CubeCamera=C.CubeCamera,exports.DeviceOrientationControls=m.DeviceOrientationControls,exports.FlyControls=h.FlyControls,exports.MapControls=P.MapControls,exports.OrbitControls=b.OrbitControls,exports.TrackballControls=B.TrackballControls,exports.ArcballControls=S.ArcballControls,exports.TransformControls=M.TransformControls,exports.PointerLockControls=T.PointerLockControls,exports.FirstPersonControls=f.FirstPersonControls,exports.GizmoHelper=v.GizmoHelper,exports.useGizmoContext=v.useGizmoContext,exports.GizmoViewcube=g.GizmoViewcube,exports.GizmoViewport=E.GizmoViewport,exports.useCubeTexture=L.useCubeTexture,exports.useFBX=A.useFBX,exports.useGLTF=G.useGLTF,exports.useProgress=k.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.useKTX2=F.useKTX2,exports.Stats=w.Stats,exports.useDepthBuffer=z.useDepthBuffer,exports.useAspect=I.useAspect,exports.useCamera=O.useCamera,exports.useDetectGPU=R.useDetectGPU,exports.useHelper=y.useHelper,exports.useBVH=H.useBVH,exports.useContextBridge=V.useContextBridge,exports.useAnimations=Q.useAnimations,exports.useFBO=X.useFBO,exports.useIntersect=K.useIntersect,exports.useBoxProjectedEnv=W.useBoxProjectedEnv,exports.CurveModifier=N.CurveModifier,exports.MeshDistortMaterial=U.MeshDistortMaterial,exports.MeshWobbleMaterial=_.MeshWobbleMaterial,exports.MeshReflectorMaterial=J.MeshReflectorMaterial,exports.PointMaterial=Y.PointMaterial,exports.PointMaterialImpl=Y.PointMaterialImpl,exports.shaderMaterial=Z.shaderMaterial,exports.softShadows=$.softShadows,exports.Box=ee.Box,exports.Circle=ee.Circle,exports.Cone=ee.Cone,exports.Cylinder=ee.Cylinder,exports.Dodecahedron=ee.Dodecahedron,exports.Extrude=ee.Extrude,exports.Icosahedron=ee.Icosahedron,exports.Lathe=ee.Lathe,exports.Octahedron=ee.Octahedron,exports.Plane=ee.Plane,exports.Polyhedron=ee.Polyhedron,exports.Ring=ee.Ring,exports.Sphere=ee.Sphere,exports.Tetrahedron=ee.Tetrahedron,exports.Torus=ee.Torus,exports.TorusKnot=ee.TorusKnot,exports.Tube=ee.Tube,exports.RoundedBox=re.RoundedBox,exports.ScreenQuad=se.ScreenQuad,exports.Center=te.Center,exports.Bounds=oe.Bounds,exports.useBounds=oe.useBounds,exports.CameraShake=ie.CameraShake,exports.Float=ue.Float,exports.Stage=ae.Stage,exports.Backdrop=ne.Backdrop,exports.Shadow=je.Shadow,exports.ContactShadows=ce.ContactShadows,exports.Reflector=pe.Reflector,exports.SpotLight=le.SpotLight,exports.Environment=xe.Environment,exports.EnvironmentCube=xe.EnvironmentCube,exports.EnvironmentMap=xe.EnvironmentMap,exports.EnvironmentPortal=xe.EnvironmentPortal,exports.useEnvironment=xe.useEnvironment,exports.Lightformer=qe.Lightformer,exports.Sky=de.Sky,exports.calcPosFromAngles=de.calcPosFromAngles,exports.Stars=Ce.Stars,exports.Cloud=me.Cloud,exports.Particles=he.Particles,exports.useMatcapTexture=Pe.useMatcapTexture,exports.useNormalTexture=be.useNormalTexture,exports.Point=Be.Point,exports.Points=Be.Points,exports.PointsBuffer=Be.PointsBuffer,exports.Instance=Se.Instance,exports.Instances=Se.Instances,exports.Merged=Se.Merged,exports.Segment=Me.Segment,exports.Segments=Me.Segments,exports.Detailed=Te.Detailed,exports.Preload=fe.Preload,exports.BakeShadows=ve.BakeShadows,exports.meshBounds=ge.meshBounds,exports.AdaptiveDpr=Ee.AdaptiveDpr,exports.AdaptiveEvents=Le.AdaptiveEvents;
package/core/index.d.ts CHANGED
@@ -70,6 +70,7 @@ export * from './Lightformer';
70
70
  export * from './Sky';
71
71
  export * from './Stars';
72
72
  export * from './Cloud';
73
+ export * from './Particles';
73
74
  export * from './useMatcapTexture';
74
75
  export * from './useNormalTexture';
75
76
  export * from './Points';
package/core/index.js CHANGED
@@ -70,6 +70,7 @@ export { Lightformer } from './Lightformer.js';
70
70
  export { Sky, calcPosFromAngles } from './Sky.js';
71
71
  export { Stars } from './Stars.js';
72
72
  export { Cloud } from './Cloud.js';
73
+ export { Particles } from './Particles.js';
73
74
  export { useMatcapTexture } from './useMatcapTexture.js';
74
75
  export { useNormalTexture } from './useNormalTexture.js';
75
76
  export { Point, Points, PointsBuffer } from './Points.js';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("three"),r=require("@react-three/fiber");function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var u=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,u.get?u:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var n=u(e),i=u(t);exports.useFBO=function(e,t,u){const{gl:o,size:s}=r.useThree(),a=n.useMemo((()=>o.getPixelRatio()),[o]),c="number"==typeof e?e:s.width*a,f="number"==typeof t?t:s.height*a,l=("number"==typeof e?u:e)||{},{samples:p,...b}=l,d=n.useMemo((()=>{let e;return e=new i.WebGLRenderTarget(c,f,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,encoding:o.outputEncoding,type:i.HalfFloatType,...b}),e.samples=p,e}),[]);return n.useLayoutEffect((()=>{d.setSize(c,f),p&&(d.samples=p)}),[p,d,c,f]),n.useEffect((()=>()=>d.dispose()),[]),d};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("three"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=n(e),i=n(r);exports.useFBO=function(e,r,n){const{gl:o,size:s,viewport:a}=t.useThree(),c="number"==typeof e?e:s.width*a.dpr,f="number"==typeof r?r:s.height*a.dpr,l=("number"==typeof e?n:e)||{},{samples:p,...d}=l,b=u.useMemo((()=>{let e;return e=new i.WebGLRenderTarget(c,f,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,encoding:o.outputEncoding,type:i.HalfFloatType,...d}),e.samples=p,e}),[]);return u.useLayoutEffect((()=>{b.setSize(c,f),p&&(b.samples=p)}),[p,b,c,f]),u.useEffect((()=>()=>b.dispose()),[]),b};
package/core/useFBO.js CHANGED
@@ -7,13 +7,13 @@ import { useThree } from '@react-three/fiber';
7
7
  function useFBO(width, height, settings) {
8
8
  const {
9
9
  gl,
10
- size
10
+ size,
11
+ viewport
11
12
  } = useThree();
12
- const dpr = React.useMemo(() => gl.getPixelRatio(), [gl]);
13
13
 
14
- const _width = typeof width === 'number' ? width : size.width * dpr;
14
+ const _width = typeof width === 'number' ? width : size.width * viewport.dpr;
15
15
 
16
- const _height = typeof height === 'number' ? height : size.height * dpr;
16
+ const _height = typeof height === 'number' ? height : size.height * viewport.dpr;
17
17
 
18
18
  const _settings = (typeof width === 'number' ? settings : width) || {};
19
19
 
@@ -0,0 +1,3 @@
1
+ var fragShader = "#define GLSLIFY 1\nvarying vec3 vColor;varying float vOpacity;void main(){float distanceToCenter=distance(gl_PointCoord,vec2(0.5));float strength=0.05/distanceToCenter-0.1;gl_FragColor=vec4(vColor,strength*vOpacity);}"; // eslint-disable-line
2
+
3
+ export { fragShader as default };
@@ -0,0 +1,3 @@
1
+ var vertShader = "#define GLSLIFY 1\nuniform float pixelRatio;uniform float time;attribute float size;attribute float speed;attribute float opacity;attribute vec3 noise;attribute vec3 color;varying vec3 vColor;varying float vOpacity;void main(){vec4 modelPosition=modelMatrix*vec4(position,1.0);modelPosition.y+=sin(time*speed+modelPosition.x*noise.x*100.0)*0.2;modelPosition.z+=cos(time*speed+modelPosition.x*noise.y*100.0)*0.2;modelPosition.x+=cos(time*speed+modelPosition.x*noise.z*100.0)*0.2;vec4 viewPosition=viewMatrix*modelPosition;vec4 projectionPostion=projectionMatrix*viewPosition;gl_Position=projectionPostion;gl_PointSize=size*25.*pixelRatio;gl_PointSize*=(1.0/-viewPosition.z);vColor=color;vOpacity=opacity;}"; // eslint-disable-line
2
+
3
+ export { vertShader as default };