@react-three/drei 9.116.1 → 9.116.2
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/Environment.cjs.js +1 -1
- package/core/Environment.js +10 -2
- package/core/Lightformer.cjs.js +1 -1
- package/core/Lightformer.d.ts +3 -2
- package/core/Lightformer.js +18 -8
- package/index.cjs.js +1 -1
- package/package.json +1 -1
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"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("react"),t=require("@react-three/fiber"),r=require("three"),o=require("three-stdlib"),u=require("./useEnvironment.cjs.js");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js");var c=a(e),s=i(n);function l(e,n,r,o,u={}){var a,i,c,s,l;u={backgroundBlurriness:null!==(a=u.blur)&&void 0!==a?a:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...u};const d=(e=>{return(n=e).current&&n.current.isScene?e.current:e;var n})(n||r),m=d.background,b=d.environment,g={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!==(i=null==(c=d.backgroundRotation)||null==c.clone?void 0:c.clone())&&void 0!==i?i:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!==(s=null==(l=d.environmentRotation)||null==l.clone?void 0:l.clone())&&void 0!==s?s:[0,0,0]};return"only"!==e&&(d.environment=o),e&&(d.background=o),t.applyProps(d,u),()=>{"only"!==e&&(d.environment=b),e&&(d.background=m),t.applyProps(d,g)}}function d({scene:e,background:n=!1,map:r,...o}){const u=t.useThree((e=>e.scene));return s.useLayoutEffect((()=>{if(r)return l(n,e,u,r,o)})),null}function m({background:e=!1,scene:n,blur:r,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:c,environmentRotation:d,...m}){const b=u.useEnvironment(m),g=t.useThree((e=>e.scene));return s.useLayoutEffect((()=>l(e,n,g,b,{blur:r,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:c,environmentRotation:d}))),null}function b({children:e,near:n=.1,far:o=1e3,resolution:u=256,frames:a=1,map:i,background:c=!1,blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:f,environmentIntensity:p,environmentRotation:k,scene:y,files:E,path:h,preset:j,extensions:I}){const R=t.useThree((e=>e.gl)),x=t.useThree((e=>e.scene)),P=s.useRef(null),[q]=s.useState((()=>new r.Scene)),C=s.useMemo((()=>{const e=new r.WebGLCubeRenderTarget(u);return e.texture.type=r.HalfFloatType,e}),[u]);s.useLayoutEffect((()=>{if(1===a){const e=R.autoClear;R.autoClear=!0,P.current.update(R,q),R.autoClear=e}return l(c,y,x,C.texture,{blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:f,environmentIntensity:p,environmentRotation:k})}),[e,q,C.texture,y,x,c,a,R]);let B=1;return t.useFrame((()=>{if(a===1/0||B<a){const e=R.autoClear;R.autoClear=!0,P.current.update(R,q),R.autoClear=e,B++}})),s.createElement(s.Fragment,null,t.createPortal(s.createElement(s.Fragment,null,e,s.createElement("cubeCamera",{ref:P,args:[n,o,C]}),E||j?s.createElement(m,{background:!0,files:E,preset:j,path:h,extensions:I}):i?s.createElement(d,{background:!0,map:i,extensions:I}):null),q))}function g(e){var n,r,a,i;const l=u.useEnvironment(e),m=e.map||l;s.useMemo((()=>t.extend({GroundProjectedEnvImpl:o.GroundProjectedEnv})),[]);const b=s.useMemo((()=>[m]),[m]),g=null==(n=e.ground)?void 0:n.height,v=null==(r=e.ground)?void 0:r.radius,f=null!==(a=null==(i=e.ground)?void 0:i.scale)&&void 0!==a?a:1e3;return s.createElement(s.Fragment,null,s.createElement(d,c.default({},e,{map:m})),s.createElement("groundProjectedEnvImpl",{args:b,scale:f,height:g,radius:v}))}exports.Environment=function(e){return e.ground?s.createElement(g,e):e.map?s.createElement(d,e):e.children?s.createElement(b,e):s.createElement(m,e)},exports.EnvironmentCube=m,exports.EnvironmentMap=d,exports.EnvironmentPortal=b;
|
package/core/Environment.js
CHANGED
|
@@ -81,7 +81,7 @@ function EnvironmentCube({
|
|
|
81
81
|
}
|
|
82
82
|
function EnvironmentPortal({
|
|
83
83
|
children,
|
|
84
|
-
near = 1,
|
|
84
|
+
near = 0.1,
|
|
85
85
|
far = 1000,
|
|
86
86
|
resolution = 256,
|
|
87
87
|
frames = 1,
|
|
@@ -109,7 +109,12 @@ function EnvironmentPortal({
|
|
|
109
109
|
return fbo;
|
|
110
110
|
}, [resolution]);
|
|
111
111
|
React.useLayoutEffect(() => {
|
|
112
|
-
if (frames === 1)
|
|
112
|
+
if (frames === 1) {
|
|
113
|
+
const autoClear = gl.autoClear;
|
|
114
|
+
gl.autoClear = true;
|
|
115
|
+
camera.current.update(gl, virtualScene);
|
|
116
|
+
gl.autoClear = autoClear;
|
|
117
|
+
}
|
|
113
118
|
return setEnvProps(background, scene, defaultScene, fbo.texture, {
|
|
114
119
|
blur,
|
|
115
120
|
backgroundBlurriness,
|
|
@@ -122,7 +127,10 @@ function EnvironmentPortal({
|
|
|
122
127
|
let count = 1;
|
|
123
128
|
useFrame(() => {
|
|
124
129
|
if (frames === Infinity || count < frames) {
|
|
130
|
+
const autoClear = gl.autoClear;
|
|
131
|
+
gl.autoClear = true;
|
|
125
132
|
camera.current.update(gl, virtualScene);
|
|
133
|
+
gl.autoClear = autoClear;
|
|
126
134
|
count++;
|
|
127
135
|
}
|
|
128
136
|
});
|
package/core/Lightformer.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),a=require("three");function n(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-three/fiber"),t=require("react"),a=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(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 c=n(e),l=o(t),i=o(a);const u=l.forwardRef((({light:e,args:t,map:a,toneMapped:n=!1,color:o="white",form:u="rect",intensity:s=1,scale:f=1,target:m=[0,0,0],children:p,...d},y)=>{const g=l.useRef(null);return l.useImperativeHandle(y,(()=>g.current),[]),l.useLayoutEffect((()=>{p||d.material||(r.applyProps(g.current.material,{color:o}),g.current.material.color.multiplyScalar(s))}),[o,s,p,d.material]),l.useLayoutEffect((()=>{d.rotation||g.current.quaternion.identity(),m&&!d.rotation&&("boolean"==typeof m?g.current.lookAt(0,0,0):g.current.lookAt(Array.isArray(m)?new i.Vector3(...m):m))}),[m,d.rotation]),f=Array.isArray(f)&&2===f.length?[f[0],f[1],1]:f,l.createElement("mesh",c.default({ref:g,scale:f},d),"circle"===u?l.createElement("ringGeometry",{args:t||[0,.5,64]}):"ring"===u?l.createElement("ringGeometry",{args:t||[.25,.5,64]}):"rect"===u||"plane"===u?l.createElement("planeGeometry",{args:t||[1,1]}):"box"===u?l.createElement("boxGeometry",{args:t||[1,1,1]}):l.createElement(u,{args:t}),p||l.createElement("meshBasicMaterial",{toneMapped:n,map:a,side:i.DoubleSide}),e&&l.createElement("pointLight",c.default({castShadow:!0},e)))}));exports.Lightformer=u;
|
package/core/Lightformer.d.ts
CHANGED
|
@@ -6,9 +6,10 @@ export type LightProps = JSX.IntrinsicElements['mesh'] & {
|
|
|
6
6
|
map?: THREE.Texture;
|
|
7
7
|
toneMapped?: boolean;
|
|
8
8
|
color?: ReactThreeFiber.Color;
|
|
9
|
-
form?: 'circle' | 'ring' | 'rect' | any;
|
|
9
|
+
form?: 'circle' | 'ring' | 'rect' | 'plane' | 'box' | any;
|
|
10
10
|
scale?: number | [number, number, number] | [number, number];
|
|
11
11
|
intensity?: number;
|
|
12
|
-
target?: [number, number, number] | THREE.Vector3;
|
|
12
|
+
target?: boolean | [number, number, number] | THREE.Vector3;
|
|
13
|
+
light?: Partial<JSX.IntrinsicElements['pointLight']>;
|
|
13
14
|
};
|
|
14
15
|
export declare const Lightformer: ForwardRefComponent<LightProps, THREE.Mesh>;
|
package/core/Lightformer.js
CHANGED
|
@@ -4,6 +4,7 @@ import * as React from 'react';
|
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
|
|
6
6
|
const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
7
|
+
light,
|
|
7
8
|
args,
|
|
8
9
|
map,
|
|
9
10
|
toneMapped = false,
|
|
@@ -11,7 +12,7 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
11
12
|
form: Form = 'rect',
|
|
12
13
|
intensity = 1,
|
|
13
14
|
scale = 1,
|
|
14
|
-
target,
|
|
15
|
+
target = [0, 0, 0],
|
|
15
16
|
children,
|
|
16
17
|
...props
|
|
17
18
|
}, forwardRef) => {
|
|
@@ -29,8 +30,11 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
29
30
|
|
|
30
31
|
// Target light
|
|
31
32
|
React.useLayoutEffect(() => {
|
|
32
|
-
if (
|
|
33
|
-
|
|
33
|
+
if (!props.rotation) ref.current.quaternion.identity();
|
|
34
|
+
if (target && !props.rotation) {
|
|
35
|
+
'boolean' === typeof target ? ref.current.lookAt(0, 0, 0) : ref.current.lookAt(Array.isArray(target) ? new THREE.Vector3(...target) : target);
|
|
36
|
+
}
|
|
37
|
+
}, [target, props.rotation]);
|
|
34
38
|
|
|
35
39
|
// Fix 2-dimensional scale
|
|
36
40
|
scale = Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;
|
|
@@ -38,16 +42,22 @@ const Lightformer = /* @__PURE__ */React.forwardRef(({
|
|
|
38
42
|
ref: ref,
|
|
39
43
|
scale: scale
|
|
40
44
|
}, props), Form === 'circle' ? /*#__PURE__*/React.createElement("ringGeometry", {
|
|
41
|
-
args: [0,
|
|
45
|
+
args: args ? args : [0, 0.5, 64]
|
|
42
46
|
}) : Form === 'ring' ? /*#__PURE__*/React.createElement("ringGeometry", {
|
|
43
|
-
args: [0.
|
|
44
|
-
}) : Form === 'rect' ? /*#__PURE__*/React.createElement("planeGeometry",
|
|
47
|
+
args: args ? args : [0.25, 0.5, 64]
|
|
48
|
+
}) : Form === 'rect' || Form === 'plane' ? /*#__PURE__*/React.createElement("planeGeometry", {
|
|
49
|
+
args: args ? args : [1, 1]
|
|
50
|
+
}) : Form === 'box' ? /*#__PURE__*/React.createElement("boxGeometry", {
|
|
51
|
+
args: args ? args : [1, 1, 1]
|
|
52
|
+
}) : /*#__PURE__*/React.createElement(Form, {
|
|
45
53
|
args: args
|
|
46
|
-
}), children ? children :
|
|
54
|
+
}), children ? children : /*#__PURE__*/React.createElement("meshBasicMaterial", {
|
|
47
55
|
toneMapped: toneMapped,
|
|
48
56
|
map: map,
|
|
49
57
|
side: THREE.DoubleSide
|
|
50
|
-
})
|
|
58
|
+
}), light && /*#__PURE__*/React.createElement("pointLight", _extends({
|
|
59
|
+
castShadow: true
|
|
60
|
+
}, light)));
|
|
51
61
|
});
|
|
52
62
|
|
|
53
63
|
export { Lightformer };
|