@react-three/drei 9.101.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 +11 -12
- package/core/Cloud.d.ts +1 -1
- package/core/Edges.cjs.js +1 -1
- package/core/Edges.d.ts +10 -6
- package/core/Edges.js +33 -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
|
|
@@ -4887,6 +4884,8 @@ type CloudsProps = JSX.IntrinsicElements['group'] & {
|
|
|
4887
4884
|
range?: number
|
|
4888
4885
|
/** Which material it will override, default: MeshLambertMaterial */
|
|
4889
4886
|
material?: typeof Material
|
|
4887
|
+
/** Frustum culling, default: true */
|
|
4888
|
+
frustumCulled?: boolean
|
|
4890
4889
|
}
|
|
4891
4890
|
|
|
4892
4891
|
type CloudProps = JSX.IntrinsicElements['group'] & {
|
package/core/Cloud.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ type CloudsProps = JSX.IntrinsicElements['group'] & {
|
|
|
33
33
|
limit?: number;
|
|
34
34
|
range?: number;
|
|
35
35
|
material?: typeof Material;
|
|
36
|
+
frustumCulled?: boolean;
|
|
36
37
|
};
|
|
37
38
|
type CloudProps = JSX.IntrinsicElements['group'] & {
|
|
38
39
|
seed?: number;
|
|
@@ -51,7 +52,6 @@ type CloudProps = JSX.IntrinsicElements['group'] & {
|
|
|
51
52
|
fade?: number;
|
|
52
53
|
opacity?: number;
|
|
53
54
|
color?: ReactThreeFiber.Color;
|
|
54
|
-
frustumCulled?: boolean;
|
|
55
55
|
};
|
|
56
56
|
export declare const Clouds: React.ForwardRefExoticComponent<Omit<CloudsProps, "ref"> & React.RefAttributes<Group>>;
|
|
57
57
|
export declare const CloudInstance: React.ForwardRefExoticComponent<Omit<CloudProps, "ref"> & React.RefAttributes<Group>>;
|
package/core/Edges.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("three-stdlib"),i=require("@react-three/fiber");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=u(e),o=a(t),s=a(r);const l=o.forwardRef((({children:e,threshold:t=15,color:r="black",opacity:u=1,linewidth:a,lineWidth:l,...d},f)=>{var m;const b=o.useRef(null);o.useImperativeHandle(f,(()=>b.current),[]);const h=o.useMemo((()=>new n.LineSegmentsGeometry),[]),p=o.useMemo((()=>new n.LineMaterial),[]),y=i.useThree((e=>e.size)),g=o.useRef(),v=o.useRef();return o.useLayoutEffect((()=>{const e=b.current.parent;if(e){const r=e.geometry;if(r!==g.current||t!==v.current){g.current=r,v.current=t;const e=new s.EdgesGeometry(r,t).attributes.position.array;b.current.geometry.setPositions(e),b.current.geometry.attributes.instanceStart.needsUpdate=!0,b.current.geometry.attributes.instanceEnd.needsUpdate=!0}}})),o.createElement("mesh",c.default({ref:b,raycast:()=>null},d),o.createElement("primitive",{object:h,attach:"geometry"}),o.createElement("primitive",{object:p,attach:"material",color:r,opacity:u,transparent:u<1,resolution:[y.width,y.height],linewidth:null!==(m=null!=a?a:l)&&void 0!==m?m:1}),e)}));exports.Edges=l;
|
package/core/Edges.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { ReactThreeFiber } from '@react-three/fiber';
|
|
2
1
|
import * as THREE from 'three';
|
|
2
|
+
import { LineSegmentsGeometry, LineMaterial } from 'three-stdlib';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
type
|
|
4
|
+
import { type Color, type ThreeElements } from '@react-three/fiber';
|
|
5
|
+
export type EdgesRef = THREE.Mesh<LineSegmentsGeometry, LineMaterial>;
|
|
6
|
+
export interface EdgesProps extends Partial<ThreeElements['mesh']> {
|
|
7
|
+
color?: Color;
|
|
8
|
+
opacity?: number;
|
|
5
9
|
threshold?: number;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export
|
|
10
|
+
linewidth?: number;
|
|
11
|
+
lineWidth?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const Edges: ForwardRefComponent<EdgesProps, EdgesRef>;
|
package/core/Edges.js
CHANGED
|
@@ -1,34 +1,55 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
|
+
import { LineSegmentsGeometry, LineMaterial } from 'three-stdlib';
|
|
5
|
+
import { useThree } from '@react-three/fiber';
|
|
4
6
|
|
|
5
7
|
const Edges = /* @__PURE__ */React.forwardRef(({
|
|
6
|
-
userData,
|
|
7
8
|
children,
|
|
8
|
-
geometry,
|
|
9
9
|
threshold = 15,
|
|
10
10
|
color = 'black',
|
|
11
|
+
opacity = 1,
|
|
12
|
+
linewidth,
|
|
13
|
+
lineWidth,
|
|
11
14
|
...props
|
|
12
15
|
}, fref) => {
|
|
16
|
+
var _ref;
|
|
13
17
|
const ref = React.useRef(null);
|
|
18
|
+
React.useImperativeHandle(fref, () => ref.current, []);
|
|
19
|
+
const geometry = React.useMemo(() => new LineSegmentsGeometry(), []);
|
|
20
|
+
const material = React.useMemo(() => new LineMaterial(), []);
|
|
21
|
+
const size = useThree(s => s.size);
|
|
22
|
+
const memoizedGeometry = React.useRef();
|
|
23
|
+
const memoizedThreshold = React.useRef();
|
|
14
24
|
React.useLayoutEffect(() => {
|
|
15
25
|
const parent = ref.current.parent;
|
|
16
26
|
if (parent) {
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
27
|
+
const geometry = parent.geometry;
|
|
28
|
+
if (geometry !== memoizedGeometry.current || threshold !== memoizedThreshold.current) {
|
|
29
|
+
memoizedGeometry.current = geometry;
|
|
30
|
+
memoizedThreshold.current = threshold;
|
|
31
|
+
const points = new THREE.EdgesGeometry(geometry, threshold).attributes.position.array;
|
|
32
|
+
ref.current.geometry.setPositions(points);
|
|
33
|
+
ref.current.geometry.attributes.instanceStart.needsUpdate = true;
|
|
34
|
+
ref.current.geometry.attributes.instanceEnd.needsUpdate = true;
|
|
22
35
|
}
|
|
23
36
|
}
|
|
24
37
|
});
|
|
25
|
-
React.
|
|
26
|
-
return /*#__PURE__*/React.createElement("lineSegments", _extends({
|
|
38
|
+
return /*#__PURE__*/React.createElement("mesh", _extends({
|
|
27
39
|
ref: ref,
|
|
28
40
|
raycast: () => null
|
|
29
|
-
}, props),
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
}, props), /*#__PURE__*/React.createElement("primitive", {
|
|
42
|
+
object: geometry,
|
|
43
|
+
attach: "geometry"
|
|
44
|
+
}), /*#__PURE__*/React.createElement("primitive", {
|
|
45
|
+
object: material,
|
|
46
|
+
attach: "material",
|
|
47
|
+
color: color,
|
|
48
|
+
opacity: opacity,
|
|
49
|
+
transparent: opacity < 1,
|
|
50
|
+
resolution: [size.width, size.height],
|
|
51
|
+
linewidth: (_ref = linewidth !== null && linewidth !== void 0 ? linewidth : lineWidth) !== null && _ref !== void 0 ? _ref : 1
|
|
52
|
+
}), children);
|
|
32
53
|
});
|
|
33
54
|
|
|
34
55
|
export { Edges };
|
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 };
|