@react-three/drei 9.120.6 → 9.120.8
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 +15 -0
- package/core/Outlines.cjs.js +1 -1
- package/core/Outlines.d.ts +3 -1
- package/core/Outlines.js +8 -1
- 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"),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
|
|
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 s=a(e),c=i(n);function l(e,n,r,o,u={}){var a,i,s,c;u={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...u};const l=(e=>{return(n=e).current&&n.current.isScene?e.current:e;var n})(n||r),d=l.background,m=l.environment,g={backgroundBlurriness:l.backgroundBlurriness,backgroundIntensity:l.backgroundIntensity,backgroundRotation:null!==(a=null==(i=l.backgroundRotation)||null==i.clone?void 0:i.clone())&&void 0!==a?a:[0,0,0],environmentIntensity:l.environmentIntensity,environmentRotation:null!==(s=null==(c=l.environmentRotation)||null==c.clone?void 0:c.clone())&&void 0!==s?s:[0,0,0]};return"only"!==e&&(l.environment=o),e&&(l.background=o),t.applyProps(l,u),()=>{"only"!==e&&(l.environment=m),e&&(l.background=d),t.applyProps(l,g)}}function d({scene:e,background:n=!1,map:r,...o}){const u=t.useThree((e=>e.scene));return c.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:s,environmentRotation:d,...m}){const g=u.useEnvironment(m),b=t.useThree((e=>e.scene));return c.useLayoutEffect((()=>l(e,n,b,g,{backgroundBlurriness:null!=r?r:o,backgroundIntensity:a,backgroundRotation:i,environmentIntensity:s,environmentRotation:d}))),c.useEffect((()=>()=>{g.dispose()}),[g]),null}function g({children:e,near:n=.1,far:o=1e3,resolution:u=256,frames:a=1,map:i,background:s=!1,blur:g,backgroundBlurriness:b,backgroundIntensity:f,backgroundRotation:v,environmentIntensity:p,environmentRotation:k,scene:E,files:y,path:h,preset:j,extensions:I}){const R=t.useThree((e=>e.gl)),x=t.useThree((e=>e.scene)),P=c.useRef(null),[q]=c.useState((()=>new r.Scene)),C=c.useMemo((()=>{const e=new r.WebGLCubeRenderTarget(u);return e.texture.type=r.HalfFloatType,e}),[u]);c.useEffect((()=>()=>{C.dispose()}),[C]),c.useLayoutEffect((()=>{if(1===a){const e=R.autoClear;R.autoClear=!0,P.current.update(R,q),R.autoClear=e}return l(s,E,x,C.texture,{backgroundBlurriness:null!=g?g:b,backgroundIntensity:f,backgroundRotation:v,environmentIntensity:p,environmentRotation:k})}),[e,q,C.texture,E,x,s,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++}})),c.createElement(c.Fragment,null,t.createPortal(c.createElement(c.Fragment,null,e,c.createElement("cubeCamera",{ref:P,args:[n,o,C]}),y||j?c.createElement(m,{background:!0,files:y,preset:j,path:h,extensions:I}):i?c.createElement(d,{background:!0,map:i,extensions:I}):null),q))}function b(e){var n,r,a,i;const l=u.useEnvironment(e),m=e.map||l;c.useMemo((()=>t.extend({GroundProjectedEnvImpl:o.GroundProjectedEnv})),[]),c.useEffect((()=>()=>{l.dispose()}),[l]);const g=c.useMemo((()=>[m]),[m]),b=null==(n=e.ground)?void 0:n.height,f=null==(r=e.ground)?void 0:r.radius,v=null!==(a=null==(i=e.ground)?void 0:i.scale)&&void 0!==a?a:1e3;return c.createElement(c.Fragment,null,c.createElement(d,s.default({},e,{map:m})),c.createElement("groundProjectedEnvImpl",{args:g,scale:v,height:b,radius:f}))}exports.Environment=function(e){return e.ground?c.createElement(b,e):e.map?c.createElement(d,e):e.children?c.createElement(g,e):c.createElement(m,e)},exports.EnvironmentCube=m,exports.EnvironmentMap=d,exports.EnvironmentPortal=g;
|
package/core/Environment.js
CHANGED
|
@@ -76,6 +76,11 @@ function EnvironmentCube({
|
|
|
76
76
|
environmentRotation
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
|
+
React.useEffect(() => {
|
|
80
|
+
return () => {
|
|
81
|
+
texture.dispose();
|
|
82
|
+
};
|
|
83
|
+
}, [texture]);
|
|
79
84
|
return null;
|
|
80
85
|
}
|
|
81
86
|
function EnvironmentPortal({
|
|
@@ -107,6 +112,11 @@ function EnvironmentPortal({
|
|
|
107
112
|
fbo.texture.type = HalfFloatType;
|
|
108
113
|
return fbo;
|
|
109
114
|
}, [resolution]);
|
|
115
|
+
React.useEffect(() => {
|
|
116
|
+
return () => {
|
|
117
|
+
fbo.dispose();
|
|
118
|
+
};
|
|
119
|
+
}, [fbo]);
|
|
110
120
|
React.useLayoutEffect(() => {
|
|
111
121
|
if (frames === 1) {
|
|
112
122
|
const autoClear = gl.autoClear;
|
|
@@ -154,6 +164,11 @@ function EnvironmentGround(props) {
|
|
|
154
164
|
React.useMemo(() => extend({
|
|
155
165
|
GroundProjectedEnvImpl: GroundProjectedEnv
|
|
156
166
|
}), []);
|
|
167
|
+
React.useEffect(() => {
|
|
168
|
+
return () => {
|
|
169
|
+
textureDefault.dispose();
|
|
170
|
+
};
|
|
171
|
+
}, [textureDefault]);
|
|
157
172
|
const args = React.useMemo(() => [texture], [texture]);
|
|
158
173
|
const height = (_props$ground = props.ground) == null ? void 0 : _props$ground.height;
|
|
159
174
|
const radius = (_props$ground2 = props.ground) == null ? void 0 : _props$ground2.radius;
|
package/core/Outlines.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("three"),t=require("react"),r=require("./shaderMaterial.cjs.js"),i=require("@react-three/fiber"),o=require("three-stdlib"),c=require("../helpers/constants.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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)}var l=s(e),u=a(n),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),n=require("three"),t=require("react"),r=require("./shaderMaterial.cjs.js"),i=require("@react-three/fiber"),o=require("three-stdlib"),c=require("../helpers/constants.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(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)}var l=s(e),u=a(n),p=a(t);const d=r.shaderMaterial({screenspace:!1,color:new u.Color("black"),opacity:1,thickness:.05,size:new u.Vector2},"#include <common>\n #include <morphtarget_pars_vertex>\n #include <skinning_pars_vertex>\n #include <clipping_planes_pars_vertex>\n uniform float thickness;\n uniform bool screenspace;\n uniform vec2 size;\n void main() {\n #if defined (USE_SKINNING)\n\t #include <beginnormal_vertex>\n #include <morphnormal_vertex>\n #include <skinbase_vertex>\n #include <skinnormal_vertex>\n #include <defaultnormal_vertex>\n #endif\n #include <begin_vertex>\n\t #include <morphtarget_vertex>\n\t #include <skinning_vertex>\n #include <project_vertex>\n #include <clipping_planes_vertex>\n vec4 tNormal = vec4(normal, 0.0);\n vec4 tPosition = vec4(transformed, 1.0);\n #ifdef USE_INSTANCING\n tNormal = instanceMatrix * tNormal;\n tPosition = instanceMatrix * tPosition;\n #endif\n if (screenspace) {\n vec3 newPosition = tPosition.xyz + tNormal.xyz * thickness;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0); \n } else {\n vec4 clipPosition = projectionMatrix * modelViewMatrix * tPosition;\n vec4 clipNormal = projectionMatrix * modelViewMatrix * tNormal;\n vec2 offset = normalize(clipNormal.xy) * thickness / size * clipPosition.w * 2.0;\n clipPosition.xy += offset;\n gl_Position = clipPosition;\n }\n }",`uniform vec3 color;\n uniform float opacity;\n #include <clipping_planes_pars_fragment>\n void main(){\n #include <clipping_planes_fragment>\n gl_FragColor = vec4(color, opacity);\n #include <tonemapping_fragment>\n #include <${c.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`);exports.Outlines=function({color:e="black",opacity:n=1,transparent:t=!1,screenspace:r=!1,toneMapped:c=!0,polygonOffset:s=!1,polygonOffsetFactor:a=0,renderOrder:f=0,thickness:m=.05,angle:g=Math.PI,clippingPlanes:v,..._}){const x=p.useRef(),[y]=p.useState((()=>new d({side:u.BackSide}))),{gl:h}=i.useThree(),M=h.getDrawingBufferSize(new u.Vector2);p.useMemo((()=>i.extend({OutlinesMaterial:d})),[]);const b=p.useRef(0),P=p.useRef();return p.useLayoutEffect((()=>{const e=x.current;if(!e)return;const n=e.parent;if(n&&n.geometry&&(b.current!==g||P.current!==n.geometry)){var t;b.current=g,P.current=n.geometry;let r=null==(t=e.children)?void 0:t[0];r&&(g&&r.geometry.dispose(),e.remove(r)),n.skeleton?(r=new u.SkinnedMesh,r.material=y,r.bind(n.skeleton,n.bindMatrix),e.add(r)):n.isInstancedMesh?(r=new u.InstancedMesh(n.geometry,y,n.count),r.instanceMatrix=n.instanceMatrix,e.add(r)):(r=new u.Mesh,r.material=y,e.add(r)),r.geometry=g?o.toCreasedNormals(n.geometry,g):n.geometry}})),p.useLayoutEffect((()=>{const o=x.current;if(!o)return;const l=o.children[0];l&&(l.renderOrder=f,i.applyProps(l.material,{transparent:t,thickness:m,color:e,opacity:n,size:M,screenspace:r,toneMapped:c,polygonOffset:s,polygonOffsetFactor:a,clippingPlanes:v,clipping:v&&v.length>0}))})),p.useEffect((()=>()=>{const e=x.current;if(!e)return;const n=e.children[0];n&&(g&&n.geometry.dispose(),e.remove(n))}),[]),p.createElement("group",l.default({ref:x},_))};
|
package/core/Outlines.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
1
2
|
import * as React from 'react';
|
|
2
3
|
import { ReactThreeFiber } from '@react-three/fiber';
|
|
3
4
|
type OutlinesProps = JSX.IntrinsicElements['group'] & {
|
|
@@ -7,10 +8,11 @@ type OutlinesProps = JSX.IntrinsicElements['group'] & {
|
|
|
7
8
|
transparent?: boolean;
|
|
8
9
|
thickness?: number;
|
|
9
10
|
angle?: number;
|
|
11
|
+
clippingPlanes?: THREE.Plane[];
|
|
10
12
|
toneMapped?: boolean;
|
|
11
13
|
polygonOffset?: boolean;
|
|
12
14
|
polygonOffsetFactor?: number;
|
|
13
15
|
renderOrder?: number;
|
|
14
16
|
};
|
|
15
|
-
export declare function Outlines({ color, opacity, transparent, screenspace, toneMapped, polygonOffset, polygonOffsetFactor, renderOrder, thickness, angle, ...props }: OutlinesProps): React.JSX.Element;
|
|
17
|
+
export declare function Outlines({ color, opacity, transparent, screenspace, toneMapped, polygonOffset, polygonOffsetFactor, renderOrder, thickness, angle, clippingPlanes, ...props }: OutlinesProps): React.JSX.Element;
|
|
16
18
|
export {};
|
package/core/Outlines.js
CHANGED
|
@@ -15,6 +15,7 @@ const OutlinesMaterial = /* @__PURE__ */shaderMaterial({
|
|
|
15
15
|
}, `#include <common>
|
|
16
16
|
#include <morphtarget_pars_vertex>
|
|
17
17
|
#include <skinning_pars_vertex>
|
|
18
|
+
#include <clipping_planes_pars_vertex>
|
|
18
19
|
uniform float thickness;
|
|
19
20
|
uniform bool screenspace;
|
|
20
21
|
uniform vec2 size;
|
|
@@ -30,6 +31,7 @@ const OutlinesMaterial = /* @__PURE__ */shaderMaterial({
|
|
|
30
31
|
#include <morphtarget_vertex>
|
|
31
32
|
#include <skinning_vertex>
|
|
32
33
|
#include <project_vertex>
|
|
34
|
+
#include <clipping_planes_vertex>
|
|
33
35
|
vec4 tNormal = vec4(normal, 0.0);
|
|
34
36
|
vec4 tPosition = vec4(transformed, 1.0);
|
|
35
37
|
#ifdef USE_INSTANCING
|
|
@@ -48,7 +50,9 @@ const OutlinesMaterial = /* @__PURE__ */shaderMaterial({
|
|
|
48
50
|
}
|
|
49
51
|
}`, `uniform vec3 color;
|
|
50
52
|
uniform float opacity;
|
|
53
|
+
#include <clipping_planes_pars_fragment>
|
|
51
54
|
void main(){
|
|
55
|
+
#include <clipping_planes_fragment>
|
|
52
56
|
gl_FragColor = vec4(color, opacity);
|
|
53
57
|
#include <tonemapping_fragment>
|
|
54
58
|
#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>
|
|
@@ -64,6 +68,7 @@ function Outlines({
|
|
|
64
68
|
renderOrder = 0,
|
|
65
69
|
thickness = 0.05,
|
|
66
70
|
angle = Math.PI,
|
|
71
|
+
clippingPlanes,
|
|
67
72
|
...props
|
|
68
73
|
}) {
|
|
69
74
|
const ref = React.useRef();
|
|
@@ -128,7 +133,9 @@ function Outlines({
|
|
|
128
133
|
screenspace,
|
|
129
134
|
toneMapped,
|
|
130
135
|
polygonOffset,
|
|
131
|
-
polygonOffsetFactor
|
|
136
|
+
polygonOffsetFactor,
|
|
137
|
+
clippingPlanes,
|
|
138
|
+
clipping: clippingPlanes && clippingPlanes.length > 0
|
|
132
139
|
});
|
|
133
140
|
}
|
|
134
141
|
});
|