@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.
- package/core/ContactShadows.cjs.js +1 -1
- package/core/ContactShadows.d.ts +2 -1
- package/core/ContactShadows.js +5 -1
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.js +9 -6
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.js +3 -3
- package/core/Particles.cjs.js +1 -0
- package/core/Particles.d.ts +40 -0
- package/core/Particles.js +112 -0
- package/core/Shadow.cjs.js +1 -1
- package/core/Shadow.d.ts +2 -1
- package/core/Shadow.js +9 -3
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.js +1 -0
- package/core/useFBO.cjs.js +1 -1
- package/core/useFBO.js +4 -4
- package/helpers/glsl/Particles.frag.glsl.js +3 -0
- package/helpers/glsl/Particles.vert.glsl.js +3 -0
- package/index.cjs.js +1 -1
- package/index.js +1 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +1 -0
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -0
|
@@ -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
|
|
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;
|
package/core/ContactShadows.d.ts
CHANGED
|
@@ -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
|
-
|
|
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>>;
|
package/core/ContactShadows.js
CHANGED
|
@@ -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]
|
package/core/Effects.cjs.js
CHANGED
|
@@ -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
|
|
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
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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(
|
|
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
|
|
package/core/Environment.cjs.js
CHANGED
|
@@ -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;
|
package/core/Environment.js
CHANGED
|
@@ -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 };
|
package/core/Shadow.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");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
|
|
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
|
-
|
|
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
|
-
|
|
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"),
|
|
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
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';
|
package/core/useFBO.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),
|
|
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 };
|