@react-three/drei 9.19.5 → 9.20.0
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/README.md +63 -13
- package/core/AccumulativeShadows.cjs.js +1 -1
- package/core/AccumulativeShadows.d.ts +6 -2
- package/core/AccumulativeShadows.js +114 -93
- package/core/Decal.cjs.js +1 -0
- package/core/Decal.d.ts +12 -0
- package/core/Decal.js +56 -0
- package/core/Reflector.d.ts +1 -1
- package/core/Sampler.cjs.js +1 -1
- package/core/Sampler.d.ts +9 -2
- package/core/Sampler.js +48 -28
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.js +2 -1
- package/index.cjs.js +1 -1
- package/index.js +2 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +2 -1
- package/package.json +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +2 -1
package/core/Sampler.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Color, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
|
|
2
|
+
import { Color, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
|
|
3
3
|
import { GroupProps } from '@react-three/fiber';
|
|
4
4
|
declare type SamplePayload = {
|
|
5
5
|
position: Vector3;
|
|
@@ -16,6 +16,13 @@ declare type Props = {
|
|
|
16
16
|
instances?: React.RefObject<InstancedMesh>;
|
|
17
17
|
weight?: string;
|
|
18
18
|
transform?: TransformFn;
|
|
19
|
+
count?: number;
|
|
19
20
|
};
|
|
20
|
-
export
|
|
21
|
+
export interface useSurfaceSamplerProps {
|
|
22
|
+
transform?: TransformFn;
|
|
23
|
+
weight?: string;
|
|
24
|
+
count?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function useSurfaceSampler(mesh: React.MutableRefObject<Mesh>, count?: number, transform?: TransformFn, weight?: string, instanceMesh?: React.MutableRefObject<InstancedMesh> | null): InstancedBufferAttribute;
|
|
27
|
+
export declare function Sampler({ children, weight, transform, instances, mesh, count, ...props }: React.PropsWithChildren<Props & GroupProps>): JSX.Element;
|
|
21
28
|
export {};
|
package/core/Sampler.js
CHANGED
|
@@ -1,29 +1,18 @@
|
|
|
1
1
|
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { MeshSurfaceSampler } from 'three-stdlib';
|
|
4
|
-
import { Vector3, Color, Object3D } from 'three';
|
|
4
|
+
import { InstancedBufferAttribute, Vector3, Color, Object3D } from 'three';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}) => {
|
|
14
|
-
const group = React.useRef(null);
|
|
15
|
-
const instancedRef = React.useRef(null);
|
|
16
|
-
const meshToSampleRef = React.useRef(null);
|
|
6
|
+
function useSurfaceSampler(mesh, count = 16, transform, weight, instanceMesh) {
|
|
7
|
+
const [buffer, setBuffer] = React.useState(() => {
|
|
8
|
+
const arr = Array.from({
|
|
9
|
+
length: count
|
|
10
|
+
}, () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]).flat();
|
|
11
|
+
return new InstancedBufferAttribute(Float32Array.from(arr), 16);
|
|
12
|
+
});
|
|
17
13
|
React.useEffect(() => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
instancedRef.current = (_instances$current = instances == null ? void 0 : instances.current) !== null && _instances$current !== void 0 ? _instances$current : group.current.children.find(c => c.hasOwnProperty('instanceMatrix'));
|
|
21
|
-
meshToSampleRef.current = (_mesh$current = mesh == null ? void 0 : mesh.current) !== null && _mesh$current !== void 0 ? _mesh$current : group.current.children.find(c => c.type === 'Mesh');
|
|
22
|
-
}, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
|
|
23
|
-
React.useEffect(() => {
|
|
24
|
-
if (typeof meshToSampleRef.current === 'undefined') return;
|
|
25
|
-
if (typeof instancedRef.current === 'undefined') return;
|
|
26
|
-
const sampler = new MeshSurfaceSampler(meshToSampleRef.current);
|
|
14
|
+
if (typeof mesh.current === 'undefined') return;
|
|
15
|
+
const sampler = new MeshSurfaceSampler(mesh.current);
|
|
27
16
|
|
|
28
17
|
if (weight) {
|
|
29
18
|
sampler.setWeightAttribute(weight);
|
|
@@ -34,15 +23,15 @@ const Sampler = ({
|
|
|
34
23
|
const normal = new Vector3();
|
|
35
24
|
const color = new Color();
|
|
36
25
|
const dummy = new Object3D();
|
|
37
|
-
|
|
26
|
+
mesh.current.updateMatrixWorld(true);
|
|
38
27
|
|
|
39
|
-
for (let i = 0; i <
|
|
28
|
+
for (let i = 0; i < count; i++) {
|
|
40
29
|
sampler.sample(position, normal, color);
|
|
41
30
|
|
|
42
31
|
if (typeof transform === 'function') {
|
|
43
32
|
transform({
|
|
44
33
|
dummy,
|
|
45
|
-
sampledMesh:
|
|
34
|
+
sampledMesh: mesh.current,
|
|
46
35
|
position,
|
|
47
36
|
normal,
|
|
48
37
|
color
|
|
@@ -52,14 +41,45 @@ const Sampler = ({
|
|
|
52
41
|
}
|
|
53
42
|
|
|
54
43
|
dummy.updateMatrix();
|
|
55
|
-
|
|
44
|
+
|
|
45
|
+
if (instanceMesh != null && instanceMesh.current) {
|
|
46
|
+
instanceMesh.current.setMatrixAt(i, dummy.matrix);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
dummy.matrix.toArray(buffer.array, i * 16);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (instanceMesh != null && instanceMesh.current) {
|
|
53
|
+
instanceMesh.current.instanceMatrix.needsUpdate = true;
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
|
|
56
|
+
buffer.needsUpdate = true;
|
|
57
|
+
setBuffer(buffer.clone());
|
|
58
|
+
}, [mesh, instanceMesh, weight, count, transform]);
|
|
59
|
+
return buffer;
|
|
60
|
+
}
|
|
61
|
+
function Sampler({
|
|
62
|
+
children,
|
|
63
|
+
weight,
|
|
64
|
+
transform,
|
|
65
|
+
instances,
|
|
66
|
+
mesh,
|
|
67
|
+
count = 16,
|
|
68
|
+
...props
|
|
69
|
+
}) {
|
|
70
|
+
const group = React.useRef(null);
|
|
71
|
+
const instancedRef = React.useRef(null);
|
|
72
|
+
const meshToSampleRef = React.useRef(null);
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
var _instances$current, _mesh$current;
|
|
75
|
+
|
|
76
|
+
instancedRef.current = (_instances$current = instances == null ? void 0 : instances.current) !== null && _instances$current !== void 0 ? _instances$current : group.current.children.find(c => c.hasOwnProperty('instanceMatrix'));
|
|
77
|
+
meshToSampleRef.current = (_mesh$current = mesh == null ? void 0 : mesh.current) !== null && _mesh$current !== void 0 ? _mesh$current : group.current.children.find(c => c.type === 'Mesh');
|
|
59
78
|
}, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
|
|
79
|
+
useSurfaceSampler(meshToSampleRef, count, transform, weight, instancedRef);
|
|
60
80
|
return /*#__PURE__*/React.createElement("group", _extends({
|
|
61
81
|
ref: group
|
|
62
82
|
}, props), children);
|
|
63
|
-
}
|
|
83
|
+
}
|
|
64
84
|
|
|
65
|
-
export { Sampler };
|
|
85
|
+
export { Sampler, useSurfaceSampler };
|
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("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./CatmullRomLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),c=require("./GradientTexture.cjs.js"),j=require("./Image.cjs.js"),p=require("./Edges.cjs.js"),x=require("./Trail.cjs.js"),l=require("./Sampler.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./CatmullRomLine.cjs.js"),o=require("./Line.cjs.js"),i=require("./PositionalAudio.cjs.js"),u=require("./Text.cjs.js"),a=require("./Text3D.cjs.js"),n=require("./Effects.cjs.js"),c=require("./GradientTexture.cjs.js"),j=require("./Image.cjs.js"),p=require("./Edges.cjs.js"),x=require("./Trail.cjs.js"),l=require("./Sampler.cjs.js"),q=require("./ComputedAttribute.cjs.js"),d=require("./Clone.cjs.js"),m=require("./MarchingCubes.cjs.js"),C=require("./Decal.cjs.js"),h=require("./OrthographicCamera.cjs.js"),S=require("./PerspectiveCamera.cjs.js"),b=require("./CubeCamera.cjs.js"),M=require("./DeviceOrientationControls.cjs.js"),B=require("./FlyControls.cjs.js"),g=require("./MapControls.cjs.js"),P=require("./OrbitControls.cjs.js"),T=require("./TrackballControls.cjs.js"),v=require("./ArcballControls.cjs.js"),f=require("./TransformControls.cjs.js"),A=require("./PointerLockControls.cjs.js"),L=require("./FirstPersonControls.cjs.js"),k=require("./GizmoHelper.cjs.js"),D=require("./GizmoViewcube.cjs.js"),E=require("./GizmoViewport.cjs.js"),G=require("./useCubeTexture.cjs.js"),w=require("./useFBX.cjs.js"),z=require("./useGLTF.cjs.js"),F=require("./useProgress.cjs.js"),R=require("./useTexture.cjs.js"),O=require("./useKTX2.cjs.js"),I=require("./Stats.cjs.js"),y=require("./useDepthBuffer.cjs.js"),H=require("./useAspect.cjs.js"),V=require("./useCamera.cjs.js"),Q=require("./useDetectGPU.cjs.js"),X=require("./useHelper.cjs.js"),K=require("./useBVH.cjs.js"),W=require("./useContextBridge.cjs.js"),N=require("./useAnimations.cjs.js"),U=require("./useFBO.cjs.js"),_=require("./useIntersect.cjs.js"),J=require("./useBoxProjectedEnv.cjs.js"),Y=require("./BBAnchor.cjs.js"),Z=require("./CurveModifier.cjs.js"),$=require("./MeshDistortMaterial.cjs.js"),ee=require("./MeshWobbleMaterial.cjs.js"),re=require("./MeshReflectorMaterial.cjs.js"),se=require("./PointMaterial.cjs.js"),te=require("./shaderMaterial.cjs.js"),oe=require("./softShadows.cjs.js"),ie=require("./shapes.cjs.js"),ue=require("./RoundedBox.cjs.js"),ae=require("./ScreenQuad.cjs.js"),ne=require("./Center.cjs.js"),ce=require("./Bounds.cjs.js"),je=require("./CameraShake.cjs.js"),pe=require("./Float.cjs.js"),xe=require("./Stage.cjs.js"),le=require("./Backdrop.cjs.js"),qe=require("./Shadow.cjs.js"),de=require("./ContactShadows.cjs.js"),me=require("./AccumulativeShadows.cjs.js"),Ce=require("./Reflector.cjs.js"),he=require("./SpotLight.cjs.js"),Se=require("./Environment.cjs.js"),be=require("./Lightformer.cjs.js"),Me=require("./Sky.cjs.js"),Be=require("./Stars.cjs.js"),ge=require("./Cloud.cjs.js"),Pe=require("./Sparkles.cjs.js"),Te=require("./useMatcapTexture.cjs.js"),ve=require("./useNormalTexture.cjs.js"),fe=require("./Points.cjs.js"),Ae=require("./Instances.cjs.js"),Le=require("./Segments.cjs.js"),ke=require("./Detailed.cjs.js"),De=require("./Preload.cjs.js"),Ee=require("./BakeShadows.cjs.js"),Ge=require("./meshBounds.cjs.js"),we=require("./AdaptiveDpr.cjs.js"),ze=require("./AdaptiveEvents.cjs.js"),Fe=require("./RenderTexture.cjs.js"),Re=require("./Mask.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("suspend-react"),require("meshline"),require("lodash.pick"),require("lodash.omit"),require("zustand"),require("stats.js"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.CatmullRomLine=t.CatmullRomLine,exports.Line=o.Line,exports.PositionalAudio=i.PositionalAudio,exports.Text=u.Text,exports.Text3D=a.Text3D,exports.Effects=n.Effects,exports.isWebGL2Available=n.isWebGL2Available,exports.GradientTexture=c.GradientTexture,exports.Image=j.Image,exports.Edges=p.Edges,exports.Trail=x.Trail,exports.useTrail=x.useTrail,exports.Sampler=l.Sampler,exports.useSurfaceSampler=l.useSurfaceSampler,exports.ComputedAttribute=q.ComputedAttribute,exports.Clone=d.Clone,exports.MarchingCube=m.MarchingCube,exports.MarchingCubes=m.MarchingCubes,exports.MarchingPlane=m.MarchingPlane,exports.Decal=C.Decal,exports.OrthographicCamera=h.OrthographicCamera,exports.PerspectiveCamera=S.PerspectiveCamera,exports.CubeCamera=b.CubeCamera,exports.DeviceOrientationControls=M.DeviceOrientationControls,exports.FlyControls=B.FlyControls,exports.MapControls=g.MapControls,exports.OrbitControls=P.OrbitControls,exports.TrackballControls=T.TrackballControls,exports.ArcballControls=v.ArcballControls,exports.TransformControls=f.TransformControls,exports.PointerLockControls=A.PointerLockControls,exports.FirstPersonControls=L.FirstPersonControls,exports.GizmoHelper=k.GizmoHelper,exports.useGizmoContext=k.useGizmoContext,exports.GizmoViewcube=D.GizmoViewcube,exports.GizmoViewport=E.GizmoViewport,exports.useCubeTexture=G.useCubeTexture,exports.useFBX=w.useFBX,exports.useGLTF=z.useGLTF,exports.useProgress=F.useProgress,exports.IsObject=R.IsObject,exports.useTexture=R.useTexture,exports.useKTX2=O.useKTX2,exports.Stats=I.Stats,exports.useDepthBuffer=y.useDepthBuffer,exports.useAspect=H.useAspect,exports.useCamera=V.useCamera,exports.useDetectGPU=Q.useDetectGPU,exports.useHelper=X.useHelper,exports.useBVH=K.useBVH,exports.useContextBridge=W.useContextBridge,exports.useAnimations=N.useAnimations,exports.useFBO=U.useFBO,exports.useIntersect=_.useIntersect,exports.useBoxProjectedEnv=J.useBoxProjectedEnv,exports.BBAnchor=Y.BBAnchor,exports.CurveModifier=Z.CurveModifier,exports.MeshDistortMaterial=$.MeshDistortMaterial,exports.MeshWobbleMaterial=ee.MeshWobbleMaterial,exports.MeshReflectorMaterial=re.MeshReflectorMaterial,exports.PointMaterial=se.PointMaterial,exports.PointMaterialImpl=se.PointMaterialImpl,exports.shaderMaterial=te.shaderMaterial,exports.softShadows=oe.softShadows,exports.Box=ie.Box,exports.Capsule=ie.Capsule,exports.Circle=ie.Circle,exports.Cone=ie.Cone,exports.Cylinder=ie.Cylinder,exports.Dodecahedron=ie.Dodecahedron,exports.Extrude=ie.Extrude,exports.Icosahedron=ie.Icosahedron,exports.Lathe=ie.Lathe,exports.Octahedron=ie.Octahedron,exports.Plane=ie.Plane,exports.Polyhedron=ie.Polyhedron,exports.Ring=ie.Ring,exports.Sphere=ie.Sphere,exports.Tetrahedron=ie.Tetrahedron,exports.Torus=ie.Torus,exports.TorusKnot=ie.TorusKnot,exports.Tube=ie.Tube,exports.RoundedBox=ue.RoundedBox,exports.ScreenQuad=ae.ScreenQuad,exports.Center=ne.Center,exports.Bounds=ce.Bounds,exports.useBounds=ce.useBounds,exports.CameraShake=je.CameraShake,exports.Float=pe.Float,exports.Stage=xe.Stage,exports.Backdrop=le.Backdrop,exports.Shadow=qe.Shadow,exports.ContactShadows=de.ContactShadows,exports.AccumulativeShadows=me.AccumulativeShadows,exports.RandomizedLight=me.RandomizedLight,exports.accumulativeContext=me.accumulativeContext,exports.Reflector=Ce.Reflector,exports.SpotLight=he.SpotLight,exports.Environment=Se.Environment,exports.EnvironmentCube=Se.EnvironmentCube,exports.EnvironmentMap=Se.EnvironmentMap,exports.EnvironmentPortal=Se.EnvironmentPortal,exports.useEnvironment=Se.useEnvironment,exports.Lightformer=be.Lightformer,exports.Sky=Me.Sky,exports.calcPosFromAngles=Me.calcPosFromAngles,exports.Stars=Be.Stars,exports.Cloud=ge.Cloud,exports.Sparkles=Pe.Sparkles,exports.useMatcapTexture=Te.useMatcapTexture,exports.useNormalTexture=ve.useNormalTexture,exports.Point=fe.Point,exports.Points=fe.Points,exports.PointsBuffer=fe.PointsBuffer,exports.Instance=Ae.Instance,exports.Instances=Ae.Instances,exports.Merged=Ae.Merged,exports.Segment=Le.Segment,exports.SegmentObject=Le.SegmentObject,exports.Segments=Le.Segments,exports.Detailed=ke.Detailed,exports.Preload=De.Preload,exports.BakeShadows=Ee.BakeShadows,exports.meshBounds=Ge.meshBounds,exports.AdaptiveDpr=we.AdaptiveDpr,exports.AdaptiveEvents=ze.AdaptiveEvents,exports.RenderTexture=Fe.RenderTexture,exports.Mask=Re.Mask,exports.useMask=Re.useMask;
|
package/core/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './Sampler';
|
|
|
15
15
|
export * from './ComputedAttribute';
|
|
16
16
|
export * from './Clone';
|
|
17
17
|
export * from './MarchingCubes';
|
|
18
|
+
export * from './Decal';
|
|
18
19
|
export * from './OrthographicCamera';
|
|
19
20
|
export * from './PerspectiveCamera';
|
|
20
21
|
export * from './CubeCamera';
|
package/core/index.js
CHANGED
|
@@ -11,10 +11,11 @@ export { GradientTexture } from './GradientTexture.js';
|
|
|
11
11
|
export { Image } from './Image.js';
|
|
12
12
|
export { Edges } from './Edges.js';
|
|
13
13
|
export { Trail, useTrail } from './Trail.js';
|
|
14
|
-
export { Sampler } from './Sampler.js';
|
|
14
|
+
export { Sampler, useSurfaceSampler } from './Sampler.js';
|
|
15
15
|
export { ComputedAttribute } from './ComputedAttribute.js';
|
|
16
16
|
export { Clone } from './Clone.js';
|
|
17
17
|
export { MarchingCube, MarchingCubes, MarchingPlane } from './MarchingCubes.js';
|
|
18
|
+
export { Decal } from './Decal.js';
|
|
18
19
|
export { OrthographicCamera } from './OrthographicCamera.js';
|
|
19
20
|
export { PerspectiveCamera } from './PerspectiveCamera.js';
|
|
20
21
|
export { CubeCamera } from './CubeCamera.js';
|