@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.
@@ -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"),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(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)}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,t,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||t),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),r.applyProps(d,u),()=>{"only"!==e&&(d.environment=b),e&&(d.background=m),r.applyProps(d,g)}}function d({scene:e,background:n=!1,map:t,...o}){const u=r.useThree((e=>e.scene));return s.useLayoutEffect((()=>{if(t)return l(n,e,u,t,o)})),null}function m({background:e=!1,scene:n,blur:t,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:c,environmentRotation:d,...m}){const b=u.useEnvironment(m),g=r.useThree((e=>e.scene));return s.useLayoutEffect((()=>l(e,n,g,b,{blur:t,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:p,environmentIntensity:f,environmentRotation:k,scene:y,files:E,path:h,preset:j,extensions:I}){const R=r.useThree((e=>e.gl)),x=r.useThree((e=>e.scene)),P=s.useRef(null),[q]=s.useState((()=>new t.Scene)),B=s.useMemo((()=>{const e=new t.WebGLCubeRenderTarget(u);return e.texture.type=t.HalfFloatType,e}),[u]);s.useLayoutEffect((()=>(1===a&&P.current.update(R,q),l(c,y,x,B.texture,{blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:p,environmentIntensity:f,environmentRotation:k}))),[e,q,B.texture,y,x,c,a,R]);let O=1;return r.useFrame((()=>{(a===1/0||O<a)&&(P.current.update(R,q),O++)})),s.createElement(s.Fragment,null,r.createPortal(s.createElement(s.Fragment,null,e,s.createElement("cubeCamera",{ref:P,args:[n,o,B]}),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,t,a,i;const l=u.useEnvironment(e),m=e.map||l;s.useMemo((()=>r.extend({GroundProjectedEnvImpl:o.GroundProjectedEnv})),[]);const b=s.useMemo((()=>[m]),[m]),g=null==(n=e.ground)?void 0:n.height,v=null==(t=e.ground)?void 0:t.radius,p=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:p,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;
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;
@@ -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) camera.current.update(gl, virtualScene);
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
  });
@@ -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 l(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),u=l(t),i=l(a);const o=u.forwardRef((({args:e,map:t,toneMapped:a=!1,color:n="white",form:l="rect",intensity:o=1,scale:s=1,target:f,children:m,...p},d)=>{const y=u.useRef(null);return u.useImperativeHandle(d,(()=>y.current),[]),u.useLayoutEffect((()=>{m||p.material||(r.applyProps(y.current.material,{color:n}),y.current.material.color.multiplyScalar(o))}),[n,o,m,p.material]),u.useLayoutEffect((()=>{f&&y.current.lookAt(Array.isArray(f)?new i.Vector3(...f):f)}),[f]),s=Array.isArray(s)&&2===s.length?[s[0],s[1],1]:s,u.createElement("mesh",c.default({ref:y,scale:s},p),"circle"===l?u.createElement("ringGeometry",{args:[0,1,64]}):"ring"===l?u.createElement("ringGeometry",{args:[.5,1,64]}):"rect"===l?u.createElement("planeGeometry",null):u.createElement(l,{args:e}),m||(p.material?null:u.createElement("meshBasicMaterial",{toneMapped:a,map:t,side:i.DoubleSide})))}));exports.Lightformer=o;
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;
@@ -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>;
@@ -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 (target) ref.current.lookAt(Array.isArray(target) ? new THREE.Vector3(...target) : target);
33
- }, [target]);
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, 1, 64]
45
+ args: args ? args : [0, 0.5, 64]
42
46
  }) : Form === 'ring' ? /*#__PURE__*/React.createElement("ringGeometry", {
43
- args: [0.5, 1, 64]
44
- }) : Form === 'rect' ? /*#__PURE__*/React.createElement("planeGeometry", null) : /*#__PURE__*/React.createElement(Form, {
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 : !props.material ? /*#__PURE__*/React.createElement("meshBasicMaterial", {
54
+ }), children ? children : /*#__PURE__*/React.createElement("meshBasicMaterial", {
47
55
  toneMapped: toneMapped,
48
56
  map: map,
49
57
  side: THREE.DoubleSide
50
- }) : null);
58
+ }), light && /*#__PURE__*/React.createElement("pointLight", _extends({
59
+ castShadow: true
60
+ }, light)));
51
61
  });
52
62
 
53
63
  export { Lightformer };