@react-three/drei 9.102.0 → 9.102.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -12
- package/core/Effects.d.ts +2 -1
- package/core/Environment.cjs.js +1 -1
- package/core/Stage.cjs.js +1 -1
- package/core/useEnvironment.cjs.js +1 -1
- package/core/useEnvironment.d.ts +2 -4
- package/core/useEnvironment.js +1 -2
- package/core/useTexture.cjs.js +1 -1
- package/core/useTexture.js +12 -9
- package/helpers/deprecated.cjs.js +1 -1
- package/helpers/deprecated.d.ts +3 -0
- package/helpers/deprecated.js +7 -1
- package/index.cjs.js +1 -1
- package/package.json +1 -1
- package/react-three-drei-0.0.0-semantic-release.tgz +0 -0
package/README.md
CHANGED
|
@@ -448,7 +448,7 @@ Scroll controls create a HTML scroll container in front of the canvas. Everythin
|
|
|
448
448
|
You can listen and react to scroll with the `useScroll` hook which gives you useful data like the current scroll `offset`, `delta` and functions for range finding: `range`, `curve` and `visible`. The latter functions are especially useful if you want to react to the scroll offset, for instance if you wanted to fade things in and out if they are in or out of view.
|
|
449
449
|
|
|
450
450
|
```jsx
|
|
451
|
-
|
|
451
|
+
<ScrollControls pages={3} damping={0.1}>
|
|
452
452
|
{/* Canvas contents in here will *not* scroll, but receive useScroll! */}
|
|
453
453
|
<SomeModel />
|
|
454
454
|
<Scroll>
|
|
@@ -1596,7 +1596,7 @@ Radial gradient.
|
|
|
1596
1596
|
|
|
1597
1597
|
```jsx
|
|
1598
1598
|
import { GradientTexture, GradientType } from './GradientTexture'
|
|
1599
|
-
|
|
1599
|
+
<mesh>
|
|
1600
1600
|
<planeGeometry />
|
|
1601
1601
|
<meshBasicMaterial>
|
|
1602
1602
|
<GradientTexture
|
|
@@ -3725,7 +3725,7 @@ If you still experience flip flops despite the bounds you can define a limit of
|
|
|
3725
3725
|
PerformanceMonitor can also have children, if you wrap your app in it you get to use `usePerformanceMonitor` which allows individual components down the nested tree to respond to performance changes on their own.
|
|
3726
3726
|
|
|
3727
3727
|
```jsx
|
|
3728
|
-
|
|
3728
|
+
<PerformanceMonitor>
|
|
3729
3729
|
<Effects />
|
|
3730
3730
|
</PerformanceMonitor>
|
|
3731
3731
|
|
|
@@ -3755,19 +3755,16 @@ type HudProps = {
|
|
|
3755
3755
|
```
|
|
3756
3756
|
|
|
3757
3757
|
```jsx
|
|
3758
|
-
{
|
|
3759
|
-
|
|
3760
|
-
}
|
|
3761
|
-
;<Hud>
|
|
3758
|
+
{ /* Renders on top of the default scene with a perspective camera */ }
|
|
3759
|
+
<Hud>
|
|
3762
3760
|
<PerspectiveCamera makeDefault position={[0, 0, 10]} />
|
|
3763
3761
|
<mesh>
|
|
3764
3762
|
<ringGeometry />
|
|
3765
3763
|
</mesh>
|
|
3766
3764
|
</Hud>
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
}
|
|
3770
|
-
;<Hud renderPriority={2}>
|
|
3765
|
+
|
|
3766
|
+
{ /* Renders on top of the previous HUD with an orthographic camera */ }
|
|
3767
|
+
<Hud renderPriority={2}>
|
|
3771
3768
|
<OrthographicCamera makeDefault position={[0, 0, 10]} />
|
|
3772
3769
|
<mesh>
|
|
3773
3770
|
<boxGeometry />
|
|
@@ -4296,7 +4293,7 @@ const config = {
|
|
|
4296
4293
|
controls: undefined, // if using orbit controls, pass a ref here so we can update the rotation
|
|
4297
4294
|
}
|
|
4298
4295
|
|
|
4299
|
-
|
|
4296
|
+
<CameraShake {...config} />
|
|
4300
4297
|
```
|
|
4301
4298
|
|
|
4302
4299
|
```ts
|
package/core/Effects.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { TextureDataType
|
|
1
|
+
import { TextureDataType } from 'three';
|
|
2
2
|
import { ReactThreeFiber } from '@react-three/fiber';
|
|
3
3
|
import { EffectComposer, RenderPass, ShaderPass } from 'three-stdlib';
|
|
4
4
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
import { TextureEncoding } from '../helpers/deprecated';
|
|
5
6
|
type Props = ReactThreeFiber.Node<EffectComposer, typeof EffectComposer> & {
|
|
6
7
|
multisamping?: number;
|
|
7
8
|
encoding?: TextureEncoding;
|
package/core/Environment.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),n=require("@react-three/fiber"),t=require("three"),u=require("three-stdlib"),o=require("./useEnvironment.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}require("../helpers/environment-assets.cjs.js");var a=c(e),l=s(r);const i=e=>{return(r=e).current&&r.current.isScene?e.current:e;var r};function d(e,r,n,t,u=0){const o=i(r||n),c=o.background,s=o.environment,a=o.backgroundBlurriness||0;return"only"!==e&&(o.environment=t),e&&(o.background=t),e&&void 0!==o.backgroundBlurriness&&(o.backgroundBlurriness=u),()=>{"only"!==e&&(o.environment=s),e&&(o.background=c),e&&void 0!==o.backgroundBlurriness&&(o.backgroundBlurriness=a)}}function m({scene:e,background:r=!1,blur:t,map:u}){const o=n.useThree((e=>e.scene));return l.useLayoutEffect((()=>{if(u)return d(r,e,o,u,t)}),[o,e,u,r,t]),null}function f({background:e=!1,scene:r,blur:t,...u}){const c=o.useEnvironment(u),s=n.useThree((e=>e.scene));return l.useLayoutEffect((()=>d(e,r,s,c,t)),[c,e,r,s,t]),null}function b({children:e,near:r=1,far:u=1e3,resolution:o=256,frames:c=1,map:s,background:a=!1,blur:i,scene:b,files:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),n=require("@react-three/fiber"),t=require("three"),u=require("three-stdlib"),o=require("./useEnvironment.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js");var a=c(e),l=s(r);const i=e=>{return(r=e).current&&r.current.isScene?e.current:e;var r};function d(e,r,n,t,u=0){const o=i(r||n),c=o.background,s=o.environment,a=o.backgroundBlurriness||0;return"only"!==e&&(o.environment=t),e&&(o.background=t),e&&void 0!==o.backgroundBlurriness&&(o.backgroundBlurriness=u),()=>{"only"!==e&&(o.environment=s),e&&(o.background=c),e&&void 0!==o.backgroundBlurriness&&(o.backgroundBlurriness=a)}}function m({scene:e,background:r=!1,blur:t,map:u}){const o=n.useThree((e=>e.scene));return l.useLayoutEffect((()=>{if(u)return d(r,e,o,u,t)}),[o,e,u,r,t]),null}function f({background:e=!1,scene:r,blur:t,...u}){const c=o.useEnvironment(u),s=n.useThree((e=>e.scene));return l.useLayoutEffect((()=>d(e,r,s,c,t)),[c,e,r,s,t]),null}function b({children:e,near:r=1,far:u=1e3,resolution:o=256,frames:c=1,map:s,background:a=!1,blur:i,scene:b,files:p,path:g,preset:v,extensions:E}){const h=n.useThree((e=>e.gl)),j=n.useThree((e=>e.scene)),k=l.useRef(null),[x]=l.useState((()=>new t.Scene)),y=l.useMemo((()=>{const e=new t.WebGLCubeRenderTarget(o);return e.texture.type=t.HalfFloatType,e}),[o]);l.useLayoutEffect((()=>(1===c&&k.current.update(h,x),d(a,b,j,y.texture,i))),[e,x,y.texture,b,j,a,c,h]);let q=1;return n.useFrame((()=>{(c===1/0||q<c)&&(k.current.update(h,x),q++)})),l.createElement(l.Fragment,null,n.createPortal(l.createElement(l.Fragment,null,e,l.createElement("cubeCamera",{ref:k,args:[r,u,y]}),p||v?l.createElement(f,{background:!0,files:p,preset:v,path:g,extensions:E}):s?l.createElement(m,{background:!0,map:s,extensions:E}):null),x))}function p(e){var r,t,c,s;const i=o.useEnvironment(e),d=e.map||i;l.useMemo((()=>n.extend({GroundProjectedEnvImpl:u.GroundProjectedEnv})),[]);const f=l.useMemo((()=>[d]),[d]),b=null==(r=e.ground)?void 0:r.height,p=null==(t=e.ground)?void 0:t.radius,g=null!==(c=null==(s=e.ground)?void 0:s.scale)&&void 0!==c?c:1e3;return l.createElement(l.Fragment,null,l.createElement(m,a.default({},e,{map:d})),l.createElement("groundProjectedEnvImpl",{args:f,scale:g,height:b,radius:p}))}exports.Environment=function(e){return e.ground?l.createElement(p,e):e.map?l.createElement(m,e):e.children?l.createElement(b,e):l.createElement(f,e)},exports.EnvironmentCube=f,exports.EnvironmentMap=m,exports.EnvironmentPortal=b;
|
package/core/Stage.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),i=require("./Environment.cjs.js"),n=require("./ContactShadows.cjs.js"),r=require("./Center.cjs.js"),a=require("./AccumulativeShadows.cjs.js"),s=require("./Bounds.cjs.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}require("@react-three/fiber"),require("three"),require("three-stdlib"),require("./useEnvironment.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js"),require("./shaderMaterial.cjs.js"),require("../materials/DiscardMaterial.cjs.js"),require("../helpers/constants.cjs.js");var o=l(e),c=u(t);const d={rembrandt:{main:[1,2,1],fill:[-2,-.5,-2]},portrait:{main:[-1,2,.5],fill:[-1,.5,-1.5]},upfront:{main:[0,2,1],fill:[-1,.5,-1.5]},soft:{main:[-2,4,4],fill:[-1,.5,-1.5]}};function m({radius:e,adjustCamera:t}){const i=s.useBounds();return c.useEffect((()=>{t&&i.refresh().clip().fit()}),[e,t]),null}exports.Stage=function({children:e,center:t,adjustCamera:l=!0,intensity:u=.5,shadows:f="contact",environment:p="city",preset:h="rembrandt",...j}){var v,b,g,y,E,q,w,C;const S="string"==typeof h?d[h]:h,[{radius:O,height:z},B]=c.useState({radius:0,width:0,height:0,depth:0}),M=null!==(v=null==f?void 0:f.bias)&&void 0!==v?v:-1e-4,L=null!==(b=null==f?void 0:f.normalBias)&&void 0!==b?b:0,_=null!==(g=null==f?void 0:f.size)&&void 0!==g?g:1024,x=null!==(y=null==f?void 0:f.offset)&&void 0!==y?y:0,P="contact"===f||"contact"===(null==f?void 0:f.type),k="accumulative"===f||"accumulative"===(null==f?void 0:f.type),A={..."object"==typeof f?f:{}},D=p?"string"==typeof p?{preset:p}:p:null,F=c.useCallback((e=>{const{width:i,height:n,depth:r,boundingSphere:a}=e;B({radius:a.radius,width:i,height:n,depth:r}),null!=t&&t.onCentered&&t.onCentered(e)}),[]);return c.createElement(c.Fragment,null,c.createElement("ambientLight",{intensity:u/3}),c.createElement("spotLight",{penumbra:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],intensity:2*u,castShadow:!!f,"shadow-bias":M,"shadow-normalBias":L,"shadow-mapSize":_}),c.createElement("pointLight",{position:[S.fill[0]*O,S.fill[1]*O,S.fill[2]*O],intensity:u}),c.createElement(s.Bounds,o.default({fit:!!l,clip:!!l,margin:Number(l),observe:!0},j),c.createElement(m,{radius:O,adjustCamera:l}),c.createElement(r.Center,o.default({},t,{position:[0,x/2,0],onCentered:F}),e)),c.createElement("group",{position:[0,-z/2-x/2,0]},P&&c.createElement(n.ContactShadows,o.default({scale:4*O,far:O,blur:2},A)),k&&c.createElement(a.AccumulativeShadows,o.default({temporal:!0,frames:100,alphaTest:.9,toneMapped:!0,scale:4*O},A),c.createElement(a.RandomizedLight,{amount:null!==(E=A.amount)&&void 0!==E?E:8,radius:null!==(q=A.radius)&&void 0!==q?q:O,ambient:null!==(w=A.ambient)&&void 0!==w?w:.5,intensity:null!==(C=A.intensity)&&void 0!==C?C:1,position:[S.main[0]*O,S.main[1]*O,S.main[2]*O],size:4*O,bias:-M,mapSize:_}))),p&&c.createElement(i.Environment,D))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),r=require("three"),n=require("three-stdlib"),t=require("../helpers/environment-assets.cjs.js");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),r=require("three"),n=require("three-stdlib"),t=require("../helpers/environment-assets.cjs.js"),s=require("../helpers/deprecated.cjs.js");const i=e=>Array.isArray(e);exports.useEnvironment=function({files:o=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:a="",preset:p,encoding:l,extensions:c}={}){var u;let d,b=null,h=!1;if(p){if(!(p in t.presetsObj))throw new Error("Preset must be one of: "+Object.keys(t.presetsObj).join(", "));o=t.presetsObj[p],a="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/"}if(h=i(o),d=i(o)?"cube":o.startsWith("data:application/exr")?"exr":o.startsWith("data:application/hdr")?"hdr":null==(u=o.split(".").pop())||null==(u=u.split("?"))||null==(u=u.shift())?void 0:u.toLowerCase(),b=h?r.CubeTextureLoader:"hdr"===d?n.RGBELoader:"exr"===d?n.EXRLoader:null,!b)throw new Error("useEnvironment: Unrecognized file extension: "+o);const g=e.useLoader(b,h?[o]:o,(e=>{null==e.setPath||e.setPath(a),c&&c(e)})),f=h?g[0]:g;return f.mapping=h?r.CubeReflectionMapping:r.EquirectangularReflectionMapping,"colorSpace"in f?f.colorSpace=(null!=l?l:h)?"srgb":"srgb-linear":f.encoding=(null!=l?l:h)?s.sRGBEncoding:s.LinearEncoding,f};
|
package/core/useEnvironment.d.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { Texture, Loader, CubeTexture } from 'three';
|
|
2
2
|
import { PresetsType } from '../helpers/environment-assets';
|
|
3
|
-
|
|
4
|
-
declare const sRGBEncoding = 3001;
|
|
3
|
+
import { TextureEncoding } from '../helpers/deprecated';
|
|
5
4
|
export type EnvironmentLoaderProps = {
|
|
6
5
|
files?: string | string[];
|
|
7
6
|
path?: string;
|
|
8
7
|
preset?: PresetsType;
|
|
9
8
|
extensions?: (loader: Loader) => void;
|
|
10
|
-
encoding?:
|
|
9
|
+
encoding?: TextureEncoding;
|
|
11
10
|
};
|
|
12
11
|
export declare function useEnvironment({ files, path, preset, encoding, extensions, }?: Partial<EnvironmentLoaderProps>): Texture | CubeTexture | (CubeTexture & Record<"colorSpace", unknown>);
|
|
13
|
-
export {};
|
package/core/useEnvironment.js
CHANGED
|
@@ -2,11 +2,10 @@ import { useLoader } from '@react-three/fiber';
|
|
|
2
2
|
import { CubeReflectionMapping, EquirectangularReflectionMapping, CubeTextureLoader } from 'three';
|
|
3
3
|
import { RGBELoader, EXRLoader } from 'three-stdlib';
|
|
4
4
|
import { presetsObj } from '../helpers/environment-assets.js';
|
|
5
|
+
import { sRGBEncoding, LinearEncoding } from '../helpers/deprecated.js';
|
|
5
6
|
|
|
6
7
|
const CUBEMAP_ROOT = 'https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/';
|
|
7
8
|
const isArray = arr => Array.isArray(arr);
|
|
8
|
-
const LinearEncoding = 3000;
|
|
9
|
-
const sRGBEncoding = 3001;
|
|
10
9
|
function useEnvironment({
|
|
11
10
|
files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],
|
|
12
11
|
path = '',
|
package/core/useTexture.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function o(o,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("@react-three/fiber"),t=require("react");const u=e=>e===Object(e)&&!Array.isArray(e)&&"function"!=typeof e;function o(o,s){const a=r.useThree((e=>e.gl)),c=r.useLoader(e.TextureLoader,u(o)?Object.values(o):o);t.useLayoutEffect((()=>{null==s||s(c)}),[s]),t.useEffect((()=>{if("initTexture"in a){(Array.isArray(c)?c:[c]).forEach(a.initTexture)}}),[a,c]);return t.useMemo((()=>{if(u(o)){const e={};let r=0;for(const t in o)e[t]=c[r++];return e}return c}),[o,c])}o.preload=t=>r.useLoader.preload(e.TextureLoader,t),o.clear=t=>r.useLoader.clear(e.TextureLoader,t),exports.IsObject=u,exports.useTexture=o;
|
package/core/useTexture.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TextureLoader } from 'three';
|
|
2
2
|
import { useThree, useLoader } from '@react-three/fiber';
|
|
3
|
-
import { useLayoutEffect, useEffect } from 'react';
|
|
3
|
+
import { useLayoutEffect, useEffect, useMemo } from 'react';
|
|
4
4
|
|
|
5
5
|
const IsObject = url => url === Object(url) && !Array.isArray(url) && typeof url !== 'function';
|
|
6
6
|
function useTexture(input, onLoad) {
|
|
@@ -19,14 +19,17 @@ function useTexture(input, onLoad) {
|
|
|
19
19
|
array.forEach(gl.initTexture);
|
|
20
20
|
}
|
|
21
21
|
}, [gl, textures]);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const mappedTextures = useMemo(() => {
|
|
23
|
+
if (IsObject(input)) {
|
|
24
|
+
const keyed = {};
|
|
25
|
+
let i = 0;
|
|
26
|
+
for (const key in input) keyed[key] = textures[i++];
|
|
27
|
+
return keyed;
|
|
28
|
+
} else {
|
|
29
|
+
return textures;
|
|
30
|
+
}
|
|
31
|
+
}, [input, textures]);
|
|
32
|
+
return mappedTextures;
|
|
30
33
|
}
|
|
31
34
|
useTexture.preload = url => useLoader.preload(TextureLoader, url);
|
|
32
35
|
useTexture.clear = input => useLoader.clear(TextureLoader, input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.setUpdateRange=(e,t)=>{"updateRanges"in e?e.updateRanges[0]=t:e.updateRange=t};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.LinearEncoding=3e3,exports.sRGBEncoding=3001,exports.setUpdateRange=(e,t)=>{"updateRanges"in e?e.updateRanges[0]=t:e.updateRange=t};
|
package/helpers/deprecated.d.ts
CHANGED
|
@@ -2,3 +2,6 @@ export declare const setUpdateRange: (attribute: THREE.BufferAttribute, updateRa
|
|
|
2
2
|
offset: number;
|
|
3
3
|
count: number;
|
|
4
4
|
}) => void;
|
|
5
|
+
export declare const LinearEncoding = 3000;
|
|
6
|
+
export declare const sRGBEncoding = 3001;
|
|
7
|
+
export type TextureEncoding = typeof LinearEncoding | typeof sRGBEncoding;
|
package/helpers/deprecated.js
CHANGED
|
@@ -10,5 +10,11 @@ const setUpdateRange = (attribute, updateRange) => {
|
|
|
10
10
|
attribute.updateRange = updateRange;
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
|
+
const LinearEncoding = 3000;
|
|
14
|
+
const sRGBEncoding = 3001;
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
/**
|
|
17
|
+
* TextureEncoding was deprecated in r152, and removed in r162.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export { LinearEncoding, sRGBEncoding, setUpdateRange };
|