@react-three/drei 7.20.4 → 7.21.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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber"),u=require("./useFBO.cjs.js");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var s=n(r);const a=s.forwardRef((({size:r=256},n)=>{const a=t.useThree((e=>e.viewport.dpr)),{width:i,height:o}=t.useThree((e=>e.size)),c=r||i*a,d=r||o*a,f=s.useMemo((()=>{const r=new e.DepthTexture(c,d);return r.format=e.DepthFormat,r.type=e.UnsignedShortType,{depthTexture:r}}),[c,d]),l=u.useFBO(c,d,f);return s.useImperativeHandle(n,(()=>null==l?void 0:l.depthTexture)),t.useFrame((e=>{e.gl.setRenderTarget(l),e.gl.render(e.scene,e.camera),e.gl.setRenderTarget(null)}))}));exports.DepthBuffer=a;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber"),u=require("./useFBO.cjs.js");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var s=n(r);const a=s.forwardRef((({size:r=256},n)=>{s.useEffect((()=>{console.warn("DepthBuffer has been deprecated and will be removed next major. Replace it with useDepthBuffer(size)!")}),[]);const a=t.useThree((e=>e.viewport.dpr)),{width:i,height:o}=t.useThree((e=>e.size)),c=r||i*a,f=r||o*a,d=s.useMemo((()=>{const r=new e.DepthTexture(c,f);return r.format=e.DepthFormat,r.type=e.UnsignedShortType,{depthTexture:r}}),[c,f]),l=u.useFBO(c,f,d);return s.useImperativeHandle(n,(()=>null==l?void 0:l.depthTexture)),t.useFrame((e=>{e.gl.setRenderTarget(l),e.gl.render(e.scene,e.camera),e.gl.setRenderTarget(null)}))}));exports.DepthBuffer=a;
@@ -6,6 +6,9 @@ import { useFBO } from './useFBO.js';
6
6
  const DepthBuffer = /*#__PURE__*/React.forwardRef(({
7
7
  size = 256
8
8
  }, ref) => {
9
+ React.useEffect(() => {
10
+ console.warn('DepthBuffer has been deprecated and will be removed next major. Replace it with useDepthBuffer(size)!');
11
+ }, []);
9
12
  const dpr = useThree(state => state.viewport.dpr);
10
13
  const {
11
14
  width,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),o=require("three-stdlib");function s(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 i=s(e),c=a(t),u=a(r);const l=u.createContext(null),f=e=>e instanceof c.Vector3?e.toArray():e,d=u.forwardRef(((e,t)=>{const{limit:r=1e3,lineWidth:s=1,children:a,...d}=e,[m,b]=u.useState([]),[g]=u.useState((()=>new o.Line2)),[h]=u.useState((()=>new o.LineMaterial)),[p]=u.useState((()=>new o.LineSegmentsGeometry)),[v]=u.useState((()=>new c.Vector2(512,512))),[j]=u.useState((()=>Array(r).fill(0))),[y]=u.useState((()=>Array(r).fill(1))),S=u.useMemo((()=>({subscribe:e=>(b((t=>[...t,e])),()=>b((t=>t.filter((t=>t.current!==e.current)))))})),[]);return n.useFrame((()=>{j.length=6*m.length,y.length=6*m.length,m.forEach(((e,t)=>{const r=e.current;if(r){const e=f(r.start),s=f(r.end),a=(o=r.color)instanceof c.Color?o.toArray():o;for(var n=0;n<3;n++)j[6*t+n]=e[n],j[6*t+n+3]=s[n],y[6*t+n]=a[n],y[6*t+n+3]=a[n]}var o})),p.setColors(y),p.setPositions(j),g.computeLineDistances()})),u.createElement("primitive",{object:g,ref:t},u.createElement("primitive",{object:p,attach:"geometry"}),u.createElement("primitive",i.default({object:h,attach:"material",vertexColors:!0,resolution:v,linewidth:s},d)),u.createElement(l.Provider,{value:S},a))})),m=u.forwardRef(((e,t)=>{const{start:r,end:n,color:o}=e,s=u.useContext(l);if(!s)throw"Segment must used inside Segments component.";const a=u.useRef({start:[0,0,0],end:[0,0,0],color:[1,1,1]});return u.useLayoutEffect((()=>s.subscribe(t||a)),[]),u.useLayoutEffect((()=>{var e=t||a;r&&Object.assign(e.current,{start:r}),n&&Object.assign(e.current,{end:n}),o&&Object.assign(e.current,{color:o})}),[r,n,o]),null}));exports.Segment=m,exports.Segments=d;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("react-merge-refs"),o=require("@react-three/fiber"),i=require("three-stdlib");function s(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=s(e),u=a(t),l=a(r),f=s(n);const m=l.createContext(null),d=e=>e instanceof u.Vector3?e.toArray():e,b=l.forwardRef(((e,t)=>{const{limit:r=1e3,lineWidth:n=1,children:s,...a}=e,[f,b]=l.useState([]),[h]=l.useState((()=>new i.Line2)),[v]=l.useState((()=>new i.LineMaterial)),[p]=l.useState((()=>new i.LineSegmentsGeometry)),[w]=l.useState((()=>new u.Vector2(512,512))),[S]=l.useState((()=>Array(6*r).fill(0))),[g]=l.useState((()=>Array(6*r).fill(0))),j=l.useMemo((()=>({subscribe:e=>(b((t=>[...t,e])),()=>b((t=>t.filter((t=>t.current!==e.current)))))})),[]);return o.useFrame((()=>{for(let o=0;o<r;o++){var e;const r=null==(e=f[o])?void 0:e.current,i=r?d(r.start):[0,0,0],s=r?d(r.end):[0,0,0],a=r?(n=r.color)instanceof u.Color?n.toArray():n:[1,1,1];for(var t=0;t<3;t++)S[6*o+t]=i[t],S[6*o+t+3]=s[t],g[6*o+t]=a[t],g[6*o+t+3]=a[t]}var n;p.setColors(g),p.setPositions(S),h.computeLineDistances()})),l.createElement("primitive",{object:h,ref:t},l.createElement("primitive",{object:p,attach:"geometry"}),l.createElement("primitive",c.default({object:v,attach:"material",vertexColors:!0,resolution:w,linewidth:n},a)),l.createElement(m.Provider,{value:j},s))}));class h{constructor(){this.color=new u.Color("white"),this.start=new u.Vector3(0,0,0),this.end=new u.Vector3(0,0,0)}}const v=l.forwardRef(((e,t)=>{const r=l.useContext(m);if(!r)throw"Segment must used inside Segments component.";const n=l.useRef();return l.useMemo((()=>o.extend({SegmentObject:h})),[]),l.useLayoutEffect((()=>r.subscribe(n)),[]),l.createElement("segmentObject",c.default({ref:f.default([n,t])},e))}));exports.Segment=v,exports.Segments=b;
@@ -1,5 +1,6 @@
1
1
  import * as THREE from 'three';
2
2
  import * as React from 'react';
3
+ import { ReactThreeFiber } from '@react-three/fiber';
3
4
  import { Line2 } from 'three-stdlib';
4
5
  declare type SegmentsProps = {
5
6
  limit?: number;
@@ -7,10 +8,24 @@ declare type SegmentsProps = {
7
8
  children: React.ReactNode;
8
9
  };
9
10
  declare type Segment = {
10
- start: THREE.Vector3 | [number, number, number];
11
- end: THREE.Vector3 | [number, number, number];
12
- color?: THREE.Color | [number, number, number];
11
+ start: THREE.Vector3;
12
+ end: THREE.Vector3;
13
+ color?: THREE.Color;
13
14
  };
15
+ declare type SegmentProps = JSX.IntrinsicElements['segmentObject'] & Segment;
14
16
  declare const Segments: React.ForwardRefExoticComponent<SegmentsProps & React.RefAttributes<Line2>>;
15
- declare const Segment: React.ForwardRefExoticComponent<Segment & React.RefAttributes<Segment>>;
17
+ declare global {
18
+ namespace JSX {
19
+ interface IntrinsicElements {
20
+ segmentObject: ReactThreeFiber.Object3DNode<SegmentObject, typeof SegmentObject>;
21
+ }
22
+ }
23
+ }
24
+ declare class SegmentObject {
25
+ color: THREE.Color;
26
+ start: THREE.Vector3;
27
+ end: THREE.Vector3;
28
+ constructor();
29
+ }
30
+ declare const Segment: React.ForwardRefExoticComponent<Pick<SegmentProps, "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "color" | "onClick" | "onContextMenu" | "onDoubleClick" | "onPointerDown" | "onPointerMove" | "onPointerUp" | "onPointerCancel" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOut" | "onWheel" | "onPointerMissed" | "end" | "start"> & React.RefAttributes<Segment>>;
16
31
  export { Segments, Segment };
package/core/Segments.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as THREE from 'three';
3
3
  import * as React from 'react';
4
- import { useFrame } from '@react-three/fiber';
4
+ import mergeRefs from 'react-merge-refs';
5
+ import { useFrame, extend } from '@react-three/fiber';
5
6
  import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
6
7
 
7
8
  const context = /*#__PURE__*/React.createContext(null);
@@ -22,8 +23,8 @@ const Segments = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
22
23
  const [material] = React.useState(() => new LineMaterial());
23
24
  const [geometry] = React.useState(() => new LineSegmentsGeometry());
24
25
  const [resolution] = React.useState(() => new THREE.Vector2(512, 512));
25
- const [positions] = React.useState(() => Array(limit).fill(0));
26
- const [colors] = React.useState(() => Array(limit).fill(1));
26
+ const [positions] = React.useState(() => Array(limit * 6).fill(0));
27
+ const [colors] = React.useState(() => Array(limit * 6).fill(0));
27
28
  const api = React.useMemo(() => ({
28
29
  subscribe: ref => {
29
30
  setSegments(segments => [...segments, ref]);
@@ -31,24 +32,22 @@ const Segments = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
31
32
  }
32
33
  }), []);
33
34
  useFrame(() => {
34
- positions.length = segments.length * 6;
35
- colors.length = segments.length * 6;
36
- segments.forEach((segmentRef, i) => {
37
- const segment = segmentRef.current;
35
+ for (let i = 0; i < limit; i++) {
36
+ var _segments$i;
38
37
 
39
- if (segment) {
40
- const segmentStart = arrPos(segment.start);
41
- const segmentEnd = arrPos(segment.end);
42
- const segmentColor = arrColor(segment.color);
38
+ const segment = (_segments$i = segments[i]) == null ? void 0 : _segments$i.current;
39
+ const segmentStart = segment ? arrPos(segment.start) : [0, 0, 0];
40
+ const segmentEnd = segment ? arrPos(segment.end) : [0, 0, 0];
41
+ const segmentColor = segment ? arrColor(segment.color) : [1, 1, 1]; //console.log(segmentStart, segmentEnd, segmentColor)
43
42
 
44
- for (var j = 0; j < 3; j++) {
45
- positions[i * 6 + j] = segmentStart[j];
46
- positions[i * 6 + j + 3] = segmentEnd[j];
47
- colors[i * 6 + j] = segmentColor[j];
48
- colors[i * 6 + j + 3] = segmentColor[j];
49
- }
43
+ for (var j = 0; j < 3; j++) {
44
+ positions[i * 6 + j] = segmentStart[j];
45
+ positions[i * 6 + j + 3] = segmentEnd[j];
46
+ colors[i * 6 + j] = segmentColor[j];
47
+ colors[i * 6 + j + 3] = segmentColor[j];
50
48
  }
51
- });
49
+ }
50
+
52
51
  geometry.setColors(colors);
53
52
  geometry.setPositions(positions);
54
53
  line.computeLineDistances();
@@ -69,33 +68,27 @@ const Segments = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
69
68
  value: api
70
69
  }, children));
71
70
  });
71
+
72
+ class SegmentObject {
73
+ constructor() {
74
+ this.color = new THREE.Color('white');
75
+ this.start = new THREE.Vector3(0, 0, 0);
76
+ this.end = new THREE.Vector3(0, 0, 0);
77
+ }
78
+
79
+ }
80
+
72
81
  const Segment = /*#__PURE__*/React.forwardRef((props, forwardedRef) => {
73
- const {
74
- start,
75
- end,
76
- color
77
- } = props;
78
82
  const api = React.useContext(context);
79
83
  if (!api) throw 'Segment must used inside Segments component.';
80
- const ref = React.useRef({
81
- start: [0, 0, 0],
82
- end: [0, 0, 0],
83
- color: [1, 1, 1]
84
- });
85
- React.useLayoutEffect(() => api.subscribe(forwardedRef || ref), []);
86
- React.useLayoutEffect(() => {
87
- var currRef = forwardedRef || ref;
88
- start && Object.assign(currRef.current, {
89
- start
90
- });
91
- end && Object.assign(currRef.current, {
92
- end
93
- });
94
- color && Object.assign(currRef.current, {
95
- color
96
- });
97
- }, [start, end, color]);
98
- return null;
84
+ const ref = React.useRef();
85
+ React.useMemo(() => extend({
86
+ SegmentObject
87
+ }), []);
88
+ React.useLayoutEffect(() => api.subscribe(ref), []);
89
+ return /*#__PURE__*/React.createElement("segmentObject", _extends({
90
+ ref: mergeRefs([ref, forwardedRef])
91
+ }, props));
99
92
  });
100
93
 
101
94
  export { Segment, Segments };
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./Cloud.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Environment.cjs.js"),c=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),n=require("./Image.cjs.js"),p=require("./OrthographicCamera.cjs.js"),l=require("./PerspectiveCamera.cjs.js"),x=require("./CameraShake.cjs.js"),q=require("./CubeCamera.cjs.js"),d=require("./DeviceOrientationControls.cjs.js"),C=require("./FlyControls.cjs.js"),h=require("./MapControls.cjs.js"),m=require("./OrbitControls.cjs.js"),S=require("./TrackballControls.cjs.js"),b=require("./ArcballControls.cjs.js"),P=require("./TransformControls.cjs.js"),B=require("./PointerLockControls.cjs.js"),T=require("./FirstPersonControls.cjs.js"),g=require("./GizmoHelper.cjs.js"),M=require("./GizmoViewcube.cjs.js"),f=require("./GizmoViewport.cjs.js"),v=require("./useCubeTexture.cjs.js"),L=require("./useFBX.cjs.js"),A=require("./useGLTF.cjs.js"),G=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),w=require("./Reflector.cjs.js"),z=require("./Shadow.cjs.js"),k=require("./Stats.cjs.js"),F=require("./Center.cjs.js"),I=require("./Bounds.cjs.js"),O=require("./DepthBuffer.cjs.js"),E=require("./useAspect.cjs.js"),y=require("./useCamera.cjs.js"),H=require("./useDetectGPU.cjs.js"),R=require("./useHelper.cjs.js"),V=require("./useBVH.cjs.js"),Q=require("./useContextBridge.cjs.js"),W=require("./useAnimations.cjs.js"),N=require("./useFBO.cjs.js"),U=require("./useIntersect.cjs.js"),X=require("./useSimplification.cjs.js"),K=require("./useTessellation.cjs.js"),_=require("./useEdgeSplit.cjs.js"),J=require("./CurveModifier.cjs.js"),Y=require("./MeshDistortMaterial.cjs.js"),Z=require("./MeshWobbleMaterial.cjs.js"),$=require("./PointMaterial.cjs.js"),ee=require("./shaderMaterial.cjs.js"),re=require("./Sky.cjs.js"),se=require("./softShadows.cjs.js"),te=require("./Stars.cjs.js"),oe=require("./ContactShadows.cjs.js"),ie=require("./SpotLight.cjs.js"),ue=require("./shapes.cjs.js"),ae=require("./RoundedBox.cjs.js"),ce=require("./ScreenQuad.cjs.js"),je=require("./useMatcapTexture.cjs.js"),ne=require("./useNormalTexture.cjs.js"),pe=require("./Stage.cjs.js"),le=require("./Points.cjs.js"),xe=require("./Instances.cjs.js"),qe=require("./Segments.cjs.js"),de=require("./Detailed.cjs.js"),Ce=require("./Preload.cjs.js"),he=require("./BakeShadows.cjs.js"),me=require("./meshBounds.cjs.js"),Se=require("./AdaptiveDpr.cjs.js"),be=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("../assets/cloud.base64.cjs.js"),require("three"),require("three-stdlib"),require("troika-three-text"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("../materials/MeshReflectorMaterial.cjs.js"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.Cloud=r.Cloud,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Environment=a.Environment,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=n.Image,exports.OrthographicCamera=p.OrthographicCamera,exports.PerspectiveCamera=l.PerspectiveCamera,exports.CameraShake=x.CameraShake,exports.CubeCamera=q.CubeCamera,exports.DeviceOrientationControls=d.DeviceOrientationControls,exports.FlyControls=C.FlyControls,exports.MapControls=h.MapControls,exports.OrbitControls=m.OrbitControls,exports.TrackballControls=S.TrackballControls,exports.ArcballControls=b.ArcballControls,exports.TransformControls=P.TransformControls,exports.PointerLockControls=B.PointerLockControls,exports.FirstPersonControls=T.FirstPersonControls,exports.GizmoHelper=g.GizmoHelper,exports.useGizmoContext=g.useGizmoContext,exports.GizmoViewcube=M.GizmoViewcube,exports.GizmoViewport=f.GizmoViewport,exports.useCubeTexture=v.useCubeTexture,exports.useFBX=L.useFBX,exports.useGLTF=A.useGLTF,exports.useProgress=G.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Reflector=w.Reflector,exports.Shadow=z.Shadow,exports.Stats=k.Stats,exports.Center=F.Center,exports.Bounds=I.Bounds,exports.useBounds=I.useBounds,exports.DepthBuffer=O.DepthBuffer,exports.useAspect=E.useAspect,exports.useCamera=y.useCamera,exports.useDetectGPU=H.useDetectGPU,exports.useHelper=R.useHelper,exports.useBVH=V.useBVH,exports.useContextBridge=Q.useContextBridge,exports.useAnimations=W.useAnimations,exports.useFBO=N.useFBO,exports.useIntersect=U.useIntersect,exports.useSimplification=X.useSimplification,exports.useTessellation=K.useTessellation,exports.useEdgeSplit=_.useEdgeSplit,exports.CurveModifier=J.CurveModifier,exports.MeshDistortMaterial=Y.MeshDistortMaterial,exports.MeshWobbleMaterial=Z.MeshWobbleMaterial,exports.PointMaterial=$.PointMaterial,exports.PointMaterialImpl=$.PointMaterialImpl,exports.shaderMaterial=ee.shaderMaterial,exports.Sky=re.Sky,exports.calcPosFromAngles=re.calcPosFromAngles,exports.softShadows=se.softShadows,exports.Stars=te.Stars,exports.ContactShadows=oe.ContactShadows,exports.SpotLight=ie.SpotLight,exports.Box=ue.Box,exports.Circle=ue.Circle,exports.Cone=ue.Cone,exports.Cylinder=ue.Cylinder,exports.Dodecahedron=ue.Dodecahedron,exports.Extrude=ue.Extrude,exports.Icosahedron=ue.Icosahedron,exports.Lathe=ue.Lathe,exports.Octahedron=ue.Octahedron,exports.Parametric=ue.Parametric,exports.Plane=ue.Plane,exports.Polyhedron=ue.Polyhedron,exports.Ring=ue.Ring,exports.Sphere=ue.Sphere,exports.Tetrahedron=ue.Tetrahedron,exports.Torus=ue.Torus,exports.TorusKnot=ue.TorusKnot,exports.Tube=ue.Tube,exports.RoundedBox=ae.RoundedBox,exports.ScreenQuad=ce.ScreenQuad,exports.useMatcapTexture=je.useMatcapTexture,exports.useNormalTexture=ne.useNormalTexture,exports.Stage=pe.Stage,exports.Point=le.Point,exports.Points=le.Points,exports.Instance=xe.Instance,exports.Instances=xe.Instances,exports.Merged=xe.Merged,exports.Segment=qe.Segment,exports.Segments=qe.Segments,exports.Detailed=de.Detailed,exports.Preload=Ce.Preload,exports.BakeShadows=he.BakeShadows,exports.meshBounds=me.meshBounds,exports.AdaptiveDpr=Se.AdaptiveDpr,exports.AdaptiveEvents=be.AdaptiveEvents;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./Cloud.cjs.js"),s=require("./QuadraticBezierLine.cjs.js"),t=require("./CubicBezierLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Environment.cjs.js"),c=require("./Effects.cjs.js"),j=require("./GradientTexture.cjs.js"),p=require("./Image.cjs.js"),n=require("./OrthographicCamera.cjs.js"),l=require("./PerspectiveCamera.cjs.js"),x=require("./CameraShake.cjs.js"),q=require("./CubeCamera.cjs.js"),d=require("./DeviceOrientationControls.cjs.js"),h=require("./FlyControls.cjs.js"),C=require("./MapControls.cjs.js"),m=require("./OrbitControls.cjs.js"),S=require("./TrackballControls.cjs.js"),b=require("./ArcballControls.cjs.js"),B=require("./TransformControls.cjs.js"),P=require("./PointerLockControls.cjs.js"),f=require("./FirstPersonControls.cjs.js"),T=require("./GizmoHelper.cjs.js"),g=require("./GizmoViewcube.cjs.js"),M=require("./GizmoViewport.cjs.js"),v=require("./useCubeTexture.cjs.js"),D=require("./useFBX.cjs.js"),L=require("./useGLTF.cjs.js"),A=require("./useProgress.cjs.js"),G=require("./useTexture.cjs.js"),w=require("./Reflector.cjs.js"),z=require("./Shadow.cjs.js"),k=require("./Stats.cjs.js"),F=require("./Center.cjs.js"),I=require("./Bounds.cjs.js"),O=require("./DepthBuffer.cjs.js"),E=require("./useDepthBuffer.cjs.js"),y=require("./useAspect.cjs.js"),H=require("./useCamera.cjs.js"),R=require("./useDetectGPU.cjs.js"),V=require("./useHelper.cjs.js"),Q=require("./useBVH.cjs.js"),W=require("./useContextBridge.cjs.js"),N=require("./useAnimations.cjs.js"),U=require("./useFBO.cjs.js"),X=require("./useIntersect.cjs.js"),K=require("./useSimplification.cjs.js"),_=require("./useTessellation.cjs.js"),J=require("./useEdgeSplit.cjs.js"),Y=require("./CurveModifier.cjs.js"),Z=require("./MeshDistortMaterial.cjs.js"),$=require("./MeshWobbleMaterial.cjs.js"),ee=require("./PointMaterial.cjs.js"),re=require("./shaderMaterial.cjs.js"),se=require("./Sky.cjs.js"),te=require("./softShadows.cjs.js"),oe=require("./Stars.cjs.js"),ie=require("./ContactShadows.cjs.js"),ue=require("./SpotLight.cjs.js"),ae=require("./shapes.cjs.js"),ce=require("./RoundedBox.cjs.js"),je=require("./ScreenQuad.cjs.js"),pe=require("./useMatcapTexture.cjs.js"),ne=require("./useNormalTexture.cjs.js"),le=require("./Stage.cjs.js"),xe=require("./Points.cjs.js"),qe=require("./Instances.cjs.js"),de=require("./Segments.cjs.js"),he=require("./Detailed.cjs.js"),Ce=require("./Preload.cjs.js"),me=require("./BakeShadows.cjs.js"),Se=require("./meshBounds.cjs.js"),be=require("./AdaptiveDpr.cjs.js"),Be=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("../assets/cloud.base64.cjs.js"),require("three"),require("three-stdlib"),require("troika-three-text"),require("use-asset"),require("../helpers/environment-assets.cjs.js"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("../materials/MeshReflectorMaterial.cjs.js"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.Cloud=r.Cloud,exports.QuadraticBezierLine=s.QuadraticBezierLine,exports.CubicBezierLine=t.CubicBezierLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Environment=a.Environment,exports.Effects=c.Effects,exports.isWebGL2Available=c.isWebGL2Available,exports.GradientTexture=j.GradientTexture,exports.Image=p.Image,exports.OrthographicCamera=n.OrthographicCamera,exports.PerspectiveCamera=l.PerspectiveCamera,exports.CameraShake=x.CameraShake,exports.CubeCamera=q.CubeCamera,exports.DeviceOrientationControls=d.DeviceOrientationControls,exports.FlyControls=h.FlyControls,exports.MapControls=C.MapControls,exports.OrbitControls=m.OrbitControls,exports.TrackballControls=S.TrackballControls,exports.ArcballControls=b.ArcballControls,exports.TransformControls=B.TransformControls,exports.PointerLockControls=P.PointerLockControls,exports.FirstPersonControls=f.FirstPersonControls,exports.GizmoHelper=T.GizmoHelper,exports.useGizmoContext=T.useGizmoContext,exports.GizmoViewcube=g.GizmoViewcube,exports.GizmoViewport=M.GizmoViewport,exports.useCubeTexture=v.useCubeTexture,exports.useFBX=D.useFBX,exports.useGLTF=L.useGLTF,exports.useProgress=A.useProgress,exports.IsObject=G.IsObject,exports.useTexture=G.useTexture,exports.Reflector=w.Reflector,exports.Shadow=z.Shadow,exports.Stats=k.Stats,exports.Center=F.Center,exports.Bounds=I.Bounds,exports.useBounds=I.useBounds,exports.DepthBuffer=O.DepthBuffer,exports.useDepthBuffer=E.useDepthBuffer,exports.useAspect=y.useAspect,exports.useCamera=H.useCamera,exports.useDetectGPU=R.useDetectGPU,exports.useHelper=V.useHelper,exports.useBVH=Q.useBVH,exports.useContextBridge=W.useContextBridge,exports.useAnimations=N.useAnimations,exports.useFBO=U.useFBO,exports.useIntersect=X.useIntersect,exports.useSimplification=K.useSimplification,exports.useTessellation=_.useTessellation,exports.useEdgeSplit=J.useEdgeSplit,exports.CurveModifier=Y.CurveModifier,exports.MeshDistortMaterial=Z.MeshDistortMaterial,exports.MeshWobbleMaterial=$.MeshWobbleMaterial,exports.PointMaterial=ee.PointMaterial,exports.PointMaterialImpl=ee.PointMaterialImpl,exports.shaderMaterial=re.shaderMaterial,exports.Sky=se.Sky,exports.calcPosFromAngles=se.calcPosFromAngles,exports.softShadows=te.softShadows,exports.Stars=oe.Stars,exports.ContactShadows=ie.ContactShadows,exports.SpotLight=ue.SpotLight,exports.Box=ae.Box,exports.Circle=ae.Circle,exports.Cone=ae.Cone,exports.Cylinder=ae.Cylinder,exports.Dodecahedron=ae.Dodecahedron,exports.Extrude=ae.Extrude,exports.Icosahedron=ae.Icosahedron,exports.Lathe=ae.Lathe,exports.Octahedron=ae.Octahedron,exports.Parametric=ae.Parametric,exports.Plane=ae.Plane,exports.Polyhedron=ae.Polyhedron,exports.Ring=ae.Ring,exports.Sphere=ae.Sphere,exports.Tetrahedron=ae.Tetrahedron,exports.Torus=ae.Torus,exports.TorusKnot=ae.TorusKnot,exports.Tube=ae.Tube,exports.RoundedBox=ce.RoundedBox,exports.ScreenQuad=je.ScreenQuad,exports.useMatcapTexture=pe.useMatcapTexture,exports.useNormalTexture=ne.useNormalTexture,exports.Stage=le.Stage,exports.Point=xe.Point,exports.Points=xe.Points,exports.Instance=qe.Instance,exports.Instances=qe.Instances,exports.Merged=qe.Merged,exports.Segment=de.Segment,exports.Segments=de.Segments,exports.Detailed=he.Detailed,exports.Preload=Ce.Preload,exports.BakeShadows=me.BakeShadows,exports.meshBounds=Se.meshBounds,exports.AdaptiveDpr=be.AdaptiveDpr,exports.AdaptiveEvents=Be.AdaptiveEvents;
package/core/index.d.ts CHANGED
@@ -36,6 +36,7 @@ export * from './Stats';
36
36
  export * from './Center';
37
37
  export * from './Bounds';
38
38
  export * from './DepthBuffer';
39
+ export * from './useDepthBuffer';
39
40
  export * from './useAspect';
40
41
  export * from './useCamera';
41
42
  export * from './useDetectGPU';
package/core/index.js CHANGED
@@ -36,6 +36,7 @@ export { Stats } from './Stats.js';
36
36
  export { Center } from './Center.js';
37
37
  export { Bounds, useBounds } from './Bounds.js';
38
38
  export { DepthBuffer } from './DepthBuffer.js';
39
+ export { useDepthBuffer } from './useDepthBuffer.js';
39
40
  export { useAspect } from './useAspect.js';
40
41
  export { useCamera } from './useCamera.js';
41
42
  export { useDetectGPU } from './useDetectGPU.js';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber"),u=require("./useFBO.cjs.js");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var s=n(r);exports.useDepthBuffer=function({size:r=256,frames:n=1/0}={}){const c=t.useThree((e=>e.viewport.dpr)),{width:i,height:o}=t.useThree((e=>e.size)),a=r||i*c,f=r||o*c,p=s.useMemo((()=>{const r=new e.DepthTexture(a,f);return r.format=e.DepthFormat,r.type=e.UnsignedShortType,{depthTexture:r}}),[a,f]);let d=0;const h=u.useFBO(a,f,p);return t.useFrame((e=>{(n===1/0||d<n)&&(e.gl.setRenderTarget(h),e.gl.render(e.scene,e.camera),e.gl.setRenderTarget(null),d++)})),h.depthTexture};
@@ -0,0 +1,6 @@
1
+ import { DepthTexture } from 'three';
2
+ declare function useDepthBuffer({ size, frames }?: {
3
+ size?: number;
4
+ frames?: number;
5
+ }): DepthTexture;
6
+ export { useDepthBuffer };
@@ -0,0 +1,38 @@
1
+ import { DepthTexture, DepthFormat, UnsignedShortType } from 'three';
2
+ import * as React from 'react';
3
+ import { useThree, useFrame } from '@react-three/fiber';
4
+ import { useFBO } from './useFBO.js';
5
+
6
+ function useDepthBuffer({
7
+ size = 256,
8
+ frames = Infinity
9
+ } = {}) {
10
+ const dpr = useThree(state => state.viewport.dpr);
11
+ const {
12
+ width,
13
+ height
14
+ } = useThree(state => state.size);
15
+ const w = size || width * dpr;
16
+ const h = size || height * dpr;
17
+ const depthConfig = React.useMemo(() => {
18
+ const depthTexture = new DepthTexture(w, h);
19
+ depthTexture.format = DepthFormat;
20
+ depthTexture.type = UnsignedShortType;
21
+ return {
22
+ depthTexture
23
+ };
24
+ }, [w, h]);
25
+ let count = 0;
26
+ const depthFBO = useFBO(w, h, depthConfig);
27
+ useFrame(state => {
28
+ if (frames === Infinity || count < frames) {
29
+ state.gl.setRenderTarget(depthFBO);
30
+ state.gl.render(state.scene, state.camera);
31
+ state.gl.setRenderTarget(null);
32
+ count++;
33
+ }
34
+ });
35
+ return depthFBO.depthTexture;
36
+ }
37
+
38
+ export { useDepthBuffer };