@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.
- package/core/DepthBuffer.cjs.js +1 -1
- package/core/DepthBuffer.js +3 -0
- package/core/Segments.cjs.js +1 -1
- package/core/Segments.d.ts +19 -4
- package/core/Segments.js +35 -42
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.js +1 -0
- package/core/useDepthBuffer.cjs.js +1 -0
- package/core/useDepthBuffer.d.ts +6 -0
- package/core/useDepthBuffer.js +38 -0
- package/index.cjs.js +1 -1
- package/index.js +1 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +1 -0
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -0
package/core/DepthBuffer.cjs.js
CHANGED
|
@@ -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,
|
|
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;
|
package/core/DepthBuffer.js
CHANGED
|
@@ -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,
|
package/core/Segments.cjs.js
CHANGED
|
@@ -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"),
|
|
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;
|
package/core/Segments.d.ts
CHANGED
|
@@ -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
|
|
11
|
-
end: THREE.Vector3
|
|
12
|
-
color?: THREE.Color
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
React.
|
|
86
|
-
|
|
87
|
-
|
|
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"),
|
|
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
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,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 };
|