@react-three/drei 9.121.3 → 10.0.0-rc.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/LICENSE +21 -21
- package/README.md +852 -852
- package/core/AccumulativeShadows.d.ts +8 -10
- package/core/ArcballControls.d.ts +3 -3
- package/core/AsciiRenderer.d.ts +1 -2
- package/core/BBAnchor.d.ts +3 -3
- package/core/Backdrop.d.ts +2 -1
- package/core/Billboard.d.ts +3 -2
- package/core/Billboard.js +8 -8
- package/core/Bounds.d.ts +2 -1
- package/core/Bounds.js +2 -2
- package/core/Bvh.d.ts +3 -2
- package/core/Bvh.js +2 -2
- package/core/CameraControls.d.ts +4 -4
- package/core/CatmullRomLine.d.ts +2 -3
- package/core/Caustics.d.ts +14 -17
- package/core/Center.d.ts +3 -2
- package/core/Clone.d.ts +4 -4
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +50 -12
- package/core/Cloud.js +3 -3
- package/core/ComputedAttribute.cjs.js +1 -1
- package/core/ComputedAttribute.d.ts +3 -4
- package/core/ComputedAttribute.js +5 -5
- package/core/ContactShadows.d.ts +3 -2
- package/core/CubeCamera.d.ts +3 -3
- package/core/CubeTexture.d.ts +5 -6
- package/core/CubeTexture.js +2 -7
- package/core/CubicBezierLine.d.ts +2 -3
- package/core/CurveModifier.d.ts +2 -1
- package/core/Decal.d.ts +2 -2
- package/core/Detailed.d.ts +3 -3
- package/core/DetectGPU.d.ts +1 -2
- package/core/DeviceOrientationControls.d.ts +2 -2
- package/core/Edges.cjs.js +1 -1
- package/core/Edges.d.ts +2 -2
- package/core/Edges.js +2 -2
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.d.ts +9 -13
- package/core/Effects.js +3 -3
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +5 -7
- package/core/Example.js +2 -2
- package/core/Fbo.d.ts +1 -4
- package/core/Fbo.js +0 -2
- package/core/Fbx.d.ts +1 -1
- package/core/FirstPersonControls.d.ts +2 -2
- package/core/Fisheye.d.ts +2 -1
- package/core/Float.d.ts +2 -1
- package/core/FlyControls.d.ts +2 -2
- package/core/GizmoHelper.d.ts +2 -1
- package/core/GizmoViewport.d.ts +2 -2
- package/core/Gltf.d.ts +9 -5
- package/core/GradientTexture.d.ts +4 -4
- package/core/GradientTexture.js +0 -2
- package/core/Grid.d.ts +6 -7
- package/core/Helper.cjs.js +1 -1
- package/core/Helper.d.ts +1 -1
- package/core/Helper.js +1 -1
- package/core/Hud.d.ts +1 -2
- package/core/Image.d.ts +6 -8
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +27 -35
- package/core/Instances.js +38 -33
- package/core/Ktx2.d.ts +1 -1
- package/core/Lightformer.d.ts +3 -3
- package/core/Line.d.ts +4 -4
- package/core/MapControls.d.ts +4 -4
- package/core/MarchingCubes.d.ts +6 -6
- package/core/Mask.d.ts +3 -3
- package/core/MeshDiscardMaterial.d.ts +6 -7
- package/core/MeshDistortMaterial.d.ts +15 -17
- package/core/MeshPortalMaterial.cjs.js +1 -1
- package/core/MeshPortalMaterial.d.ts +14 -17
- package/core/MeshPortalMaterial.js +2 -2
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +9 -22
- package/core/MeshReflectorMaterial.js +2 -4
- package/core/MeshRefractionMaterial.cjs.js +1 -1
- package/core/MeshRefractionMaterial.d.ts +5 -8
- package/core/MeshRefractionMaterial.js +2 -2
- package/core/MeshTransmissionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.d.ts +7 -8
- package/core/MeshTransmissionMaterial.js +2 -1
- package/core/MeshWobbleMaterial.d.ts +15 -17
- package/core/MotionPathControls.cjs.js +1 -1
- package/core/MotionPathControls.d.ts +18 -6
- package/core/MotionPathControls.js +2 -3
- package/core/MultiMaterial.cjs.js +1 -1
- package/core/MultiMaterial.d.ts +3 -1
- package/core/MultiMaterial.js +2 -3
- package/core/OrbitControls.d.ts +4 -4
- package/core/OrthographicCamera.d.ts +3 -3
- package/core/Outlines.cjs.js +1 -1
- package/core/Outlines.d.ts +2 -3
- package/core/Outlines.js +2 -2
- package/core/PerformanceMonitor.d.ts +2 -2
- package/core/PerspectiveCamera.d.ts +3 -3
- package/core/PointMaterial.d.ts +3 -11
- package/core/PointerLockControls.d.ts +2 -2
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +10 -13
- package/core/Points.js +10 -20
- package/core/PositionalAudio.d.ts +3 -3
- package/core/Preload.d.ts +2 -3
- package/core/QuadraticBezierLine.d.ts +5 -7
- package/core/RenderCubeTexture.d.ts +2 -2
- package/core/RenderTexture.cjs.js +1 -1
- package/core/RenderTexture.d.ts +3 -3
- package/core/RenderTexture.js +3 -2
- package/core/Resize.d.ts +9 -2
- package/core/RoundedBox.d.ts +4 -4
- package/core/Sampler.d.ts +4 -4
- package/core/ScreenQuad.d.ts +3 -3
- package/core/ScreenSizer.d.ts +3 -3
- package/core/ScreenSizer.js +12 -12
- package/core/ScreenSpace.d.ts +3 -2
- package/core/Segments.d.ts +6 -8
- package/core/Shadow.d.ts +3 -3
- package/core/ShadowAlpha.cjs.js +1 -1
- package/core/ShadowAlpha.d.ts +1 -2
- package/core/ShadowAlpha.js +9 -9
- package/core/Sky.d.ts +2 -3
- package/core/Sparkles.d.ts +14 -16
- package/core/Splat.d.ts +6 -8
- package/core/SpotLight.d.ts +2 -1
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +36 -3
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.d.ts +3 -2
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.d.ts +6 -8
- package/core/Stars.js +1 -1
- package/core/Stats.d.ts +2 -3
- package/core/StatsGl.d.ts +2 -2
- package/core/Svg.d.ts +6 -6
- package/core/Text.d.ts +3 -4
- package/core/Text3D.d.ts +7 -10
- package/core/Text3D.js +3 -3
- package/core/Texture.d.ts +1 -1
- package/core/TrackballControls.d.ts +4 -4
- package/core/Trail.cjs.js +1 -1
- package/core/Trail.d.ts +3 -3
- package/core/Trail.js +3 -3
- package/core/TrailTexture.d.ts +3 -2
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +3 -3
- package/core/TransformControls.js +4 -5
- package/core/VideoTexture.cjs.js +1 -1
- package/core/VideoTexture.js +1 -1
- package/core/Wireframe.d.ts +5 -7
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +0 -1
- package/core/index.js +2 -4
- package/core/shapes.d.ts +21 -20
- package/core/softShadows.d.ts +1 -2
- package/core/softShadows.js +13 -13
- package/core/useAnimations.cjs.js +1 -1
- package/core/useAnimations.d.ts +2 -2
- package/core/useAnimations.js +1 -1
- package/core/useBoxProjectedEnv.d.ts +1 -1
- package/core/useCamera.cjs.js +1 -1
- package/core/useCamera.d.ts +1 -1
- package/core/useCamera.js +1 -8
- package/core/useContextBridge.d.ts +1 -1
- package/core/useContextBridge.js +4 -4
- package/core/useEnvironment.cjs.js +1 -1
- package/core/useEnvironment.d.ts +3 -4
- package/core/useEnvironment.js +11 -19
- package/core/useIntersect.d.ts +1 -1
- package/core/useSpriteLoader.d.ts +1 -1
- package/helpers/deprecated.cjs.js +1 -1
- package/helpers/deprecated.d.ts +1 -4
- package/helpers/deprecated.js +4 -16
- package/helpers/ts-utils.d.ts +4 -0
- package/helpers/useEffectfulState.d.ts +1 -1
- package/index.cjs.js +1 -1
- package/index.js +0 -1
- package/materials/BlurPass.js +0 -1
- package/materials/MeshReflectorMaterial.d.ts +0 -16
- package/native/index.cjs.js +1 -1
- package/native/index.js +0 -2
- package/package.json +7 -8
- package/web/CycleRaycast.d.ts +1 -1
- package/web/FaceControls.js +8 -8
- package/web/FaceLandmarker.d.ts +1 -2
- package/web/Facemesh.d.ts +3 -2
- package/web/Html.cjs.js +1 -1
- package/web/Html.d.ts +4 -4
- package/web/Html.js +1 -1
- package/web/KeyboardControls.d.ts +1 -1
- package/web/PresentationControls.cjs.js +1 -1
- package/web/PresentationControls.d.ts +3 -4
- package/web/PresentationControls.js +20 -28
- package/web/ScreenVideoTexture.js +2 -2
- package/web/ScrollControls.d.ts +1 -1
- package/web/Select.d.ts +3 -3
- package/web/Select.js +6 -2
- package/web/View.cjs.js +1 -1
- package/web/View.d.ts +8 -10
- package/web/View.js +4 -34
- package/web/WebcamVideoTexture.js +2 -2
- package/web/index.cjs.js +1 -1
- package/web/index.js +1 -4
- package/web/pivotControls/AxisArrow.js +0 -2
- package/web/pivotControls/AxisRotator.js +0 -2
- package/web/pivotControls/PlaneSlider.js +1 -3
- package/web/pivotControls/ScalingSphere.js +0 -1
- package/web/pivotControls/index.d.ts +1 -2
- package/core/Reflector.cjs.js +0 -1
- package/core/Reflector.d.ts +0 -30
- package/core/Reflector.js +0 -180
package/core/Instances.d.ts
CHANGED
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ThreeElement, ThreeElements } from '@react-three/fiber';
|
|
4
4
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
-
declare
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
positionMesh: ReactThreeFiber.Object3DNode<PositionMesh, typeof PositionMesh>;
|
|
9
|
-
}
|
|
5
|
+
declare module '@react-three/fiber' {
|
|
6
|
+
interface ThreeElements {
|
|
7
|
+
positionMesh: ThreeElement<typeof PositionMesh>;
|
|
10
8
|
}
|
|
11
9
|
}
|
|
12
10
|
type Api = {
|
|
13
|
-
getParent: () => React.
|
|
14
|
-
subscribe: <T>(ref: React.
|
|
11
|
+
getParent: () => React.RefObject<InstancedMesh>;
|
|
12
|
+
subscribe: <T>(ref: React.RefObject<T>) => void;
|
|
15
13
|
};
|
|
16
|
-
export type InstancesProps =
|
|
14
|
+
export type InstancesProps = Omit<ThreeElements['instancedMesh'], 'ref' | 'args'> & {
|
|
17
15
|
context?: React.Context<Api>;
|
|
18
16
|
range?: number;
|
|
19
17
|
limit?: number;
|
|
20
18
|
frames?: number;
|
|
21
19
|
};
|
|
22
|
-
export type InstanceProps =
|
|
20
|
+
export type InstanceProps = Omit<ThreeElements['positionMesh'], 'ref'> & {
|
|
23
21
|
context?: React.Context<Api>;
|
|
24
22
|
};
|
|
25
|
-
export type InstancedAttributeProps =
|
|
23
|
+
export type InstancedAttributeProps = Omit<ThreeElements['instancedBufferAttribute'], 'ref' | 'args'> & {
|
|
26
24
|
name: string;
|
|
27
25
|
defaultValue: any;
|
|
28
26
|
normalized?: boolean;
|
|
@@ -34,39 +32,33 @@ type InstancedMesh = Omit<THREE.InstancedMesh, 'instanceMatrix' | 'instanceColor
|
|
|
34
32
|
};
|
|
35
33
|
export declare class PositionMesh extends THREE.Group {
|
|
36
34
|
color: THREE.Color;
|
|
37
|
-
instance: React.
|
|
38
|
-
instanceKey: React.
|
|
35
|
+
instance: React.RefObject<THREE.InstancedMesh | undefined>;
|
|
36
|
+
instanceKey: React.RefObject<PositionMesh | undefined>;
|
|
39
37
|
constructor();
|
|
40
|
-
get geometry(): THREE.BufferGeometry | undefined;
|
|
38
|
+
get geometry(): THREE.BufferGeometry<THREE.NormalBufferAttributes> | undefined;
|
|
41
39
|
raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]): void;
|
|
42
40
|
}
|
|
43
|
-
export declare const Instance: React.ForwardRefExoticComponent<Omit<InstanceProps, "ref"> &
|
|
41
|
+
export declare const Instance: React.ForwardRefExoticComponent<Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<PositionMesh, import("@react-three/fiber").MathProps<PositionMesh> & import("@react-three/fiber").ReactProps<PositionMesh> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<PositionMesh, typeof PositionMesh>, "object">>>, "ref"> & {
|
|
42
|
+
context?: React.Context<Api>;
|
|
43
|
+
} & React.RefAttributes<unknown>>;
|
|
44
44
|
export declare const Instances: ForwardRefComponent<InstancesProps, THREE.InstancedMesh>;
|
|
45
45
|
export interface MergedProps extends InstancesProps {
|
|
46
46
|
meshes: THREE.Mesh[];
|
|
47
47
|
children: React.ReactNode;
|
|
48
48
|
}
|
|
49
49
|
export declare const Merged: ForwardRefComponent<any, THREE.Group>;
|
|
50
|
-
export declare function createInstances<T = InstanceProps>(): readonly [React.ForwardRefExoticComponent<Omit<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
quaternion?: ReactThreeFiber.Quaternion;
|
|
57
|
-
layers?: ReactThreeFiber.Layers;
|
|
58
|
-
dispose?: (() => void) | null;
|
|
59
|
-
}>> & {
|
|
60
|
-
position?: ReactThreeFiber.Vector3;
|
|
61
|
-
up?: ReactThreeFiber.Vector3;
|
|
62
|
-
scale?: ReactThreeFiber.Vector3;
|
|
63
|
-
rotation?: ReactThreeFiber.Euler;
|
|
64
|
-
matrix?: ReactThreeFiber.Matrix4;
|
|
65
|
-
quaternion?: ReactThreeFiber.Quaternion;
|
|
66
|
-
layers?: ReactThreeFiber.Layers;
|
|
67
|
-
dispose?: (() => void) | null;
|
|
68
|
-
} & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers & {
|
|
50
|
+
export declare function createInstances<T = InstanceProps>(): readonly [React.ForwardRefExoticComponent<Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>, import("@react-three/fiber").MathProps<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>> & import("@react-three/fiber").ReactProps<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>, typeof THREE.InstancedMesh>, "object">>>, "ref" | "args"> & {
|
|
51
|
+
context?: React.Context<Api>;
|
|
52
|
+
range?: number;
|
|
53
|
+
limit?: number;
|
|
54
|
+
frames?: number;
|
|
55
|
+
} & React.RefAttributes<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>>>, React.ForwardRefExoticComponent<React.PropsWithoutRef<T & Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<PositionMesh, import("@react-three/fiber").MathProps<PositionMesh> & import("@react-three/fiber").ReactProps<PositionMesh> & Partial<import("@react-three/fiber").EventHandlers>>>, Omit<import("@react-three/fiber").InstanceProps<PositionMesh, typeof PositionMesh>, "object">>>, "ref"> & {
|
|
69
56
|
context?: React.Context<Api>;
|
|
70
57
|
}> & React.RefAttributes<PositionMesh & T>>];
|
|
71
|
-
export declare const InstancedAttribute: React.ForwardRefExoticComponent<Omit<
|
|
58
|
+
export declare const InstancedAttribute: React.ForwardRefExoticComponent<Omit<import("@react-three/fiber/dist/declarations/src/core/utils").Mutable<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<Partial<import("@react-three/fiber/dist/declarations/src/core/utils").Overwrite<THREE.InstancedBufferAttribute, import("@react-three/fiber").MathProps<THREE.InstancedBufferAttribute> & import("@react-three/fiber").ReactProps<THREE.InstancedBufferAttribute>>>, Omit<import("@react-three/fiber").InstanceProps<THREE.InstancedBufferAttribute, typeof THREE.InstancedBufferAttribute>, "object">>>, "ref" | "args"> & {
|
|
59
|
+
name: string;
|
|
60
|
+
defaultValue: any;
|
|
61
|
+
normalized?: boolean;
|
|
62
|
+
usage?: number;
|
|
63
|
+
} & React.RefAttributes<unknown>>;
|
|
72
64
|
export {};
|
package/core/Instances.js
CHANGED
|
@@ -2,7 +2,6 @@ import _extends from '@babel/runtime/helpers/esm/extends';
|
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { extend, useFrame } from '@react-three/fiber';
|
|
5
|
-
import Composer from 'react-composer';
|
|
6
5
|
import { setUpdateRange } from '../helpers/deprecated.js';
|
|
7
6
|
|
|
8
7
|
function isFunctionChild(value) {
|
|
@@ -74,7 +73,7 @@ const Instance = /* @__PURE__ */React.forwardRef(({
|
|
|
74
73
|
React.useMemo(() => extend({
|
|
75
74
|
PositionMesh
|
|
76
75
|
}), []);
|
|
77
|
-
const group = React.useRef();
|
|
76
|
+
const group = React.useRef(null);
|
|
78
77
|
React.useImperativeHandle(ref, () => group.current, []);
|
|
79
78
|
const {
|
|
80
79
|
subscribe,
|
|
@@ -135,11 +134,11 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
135
134
|
count = Math.min(limit, range !== undefined ? range : limit, instances.length);
|
|
136
135
|
parentRef.current.count = count;
|
|
137
136
|
setUpdateRange(parentRef.current.instanceMatrix, {
|
|
138
|
-
|
|
137
|
+
start: 0,
|
|
139
138
|
count: count * 16
|
|
140
139
|
});
|
|
141
140
|
setUpdateRange(parentRef.current.instanceColor, {
|
|
142
|
-
|
|
141
|
+
start: 0,
|
|
143
142
|
count: count * 3
|
|
144
143
|
});
|
|
145
144
|
for (let i = 0; i < instances.length; i++) {
|
|
@@ -175,15 +174,11 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
175
174
|
raycast: () => null
|
|
176
175
|
}, props), /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
177
176
|
attach: "instanceMatrix",
|
|
178
|
-
|
|
179
|
-
array: matrices,
|
|
180
|
-
itemSize: 16,
|
|
177
|
+
args: [matrices, 16],
|
|
181
178
|
usage: THREE.DynamicDrawUsage
|
|
182
179
|
}), /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
183
180
|
attach: "instanceColor",
|
|
184
|
-
|
|
185
|
-
array: colors,
|
|
186
|
-
itemSize: 3,
|
|
181
|
+
args: [colors, 3],
|
|
187
182
|
usage: THREE.DynamicDrawUsage
|
|
188
183
|
}), isFunctionChild(children) ? /*#__PURE__*/React.createElement(localContext.Provider, {
|
|
189
184
|
value: api
|
|
@@ -193,34 +188,42 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
193
188
|
value: api
|
|
194
189
|
}, children));
|
|
195
190
|
});
|
|
196
|
-
const Merged =
|
|
191
|
+
const Merged = /*#__PURE__*/React.forwardRef(function Merged({
|
|
197
192
|
meshes,
|
|
198
193
|
children,
|
|
199
|
-
...
|
|
194
|
+
...rest
|
|
200
195
|
}, ref) {
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
const instances = [];
|
|
197
|
+
if (Array.isArray(meshes)) {
|
|
198
|
+
for (const mesh of meshes) {
|
|
199
|
+
if (mesh != null && mesh.isMesh) {
|
|
200
|
+
instances.push(props => /*#__PURE__*/React.createElement(Instances, _extends({
|
|
201
|
+
key: mesh.geometry.uuid,
|
|
202
|
+
geometry: mesh.geometry,
|
|
203
|
+
material: mesh.material
|
|
204
|
+
}, rest, props)));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
} else if (meshes != null && typeof meshes === 'object') {
|
|
208
|
+
for (const key in meshes) {
|
|
209
|
+
const mesh = meshes[key];
|
|
210
|
+
if (mesh != null && mesh.isMesh) {
|
|
211
|
+
instances.push(props => /*#__PURE__*/React.createElement(Instances, _extends({
|
|
212
|
+
key: mesh.geometry.uuid,
|
|
213
|
+
geometry: mesh.geometry,
|
|
214
|
+
material: mesh.material
|
|
215
|
+
}, rest, props)));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
204
219
|
return /*#__PURE__*/React.createElement("group", {
|
|
205
220
|
ref: ref
|
|
206
|
-
},
|
|
207
|
-
components: (isArray ? meshes : Object.values(meshes)).map(({
|
|
208
|
-
geometry,
|
|
209
|
-
material
|
|
210
|
-
}) => /*#__PURE__*/React.createElement(Instances, _extends({
|
|
211
|
-
key: geometry.uuid,
|
|
212
|
-
geometry: geometry,
|
|
213
|
-
material: material
|
|
214
|
-
}, props)))
|
|
215
|
-
}, args => isArray ? children(...args) : children(Object.keys(meshes).filter(key => meshes[key].isMesh).reduce((acc, key, i) => ({
|
|
216
|
-
...acc,
|
|
217
|
-
[key]: args[i]
|
|
218
|
-
}), {}))));
|
|
221
|
+
}, children(instances));
|
|
219
222
|
});
|
|
220
223
|
|
|
221
|
-
/** Idea and implementation for global instances and instanced attributes by
|
|
222
|
-
/* Matias Gonzalez Fernandez https://x.com/matiNotFound
|
|
223
|
-
/* and Paul Henschel https://x.com/0xca0a
|
|
224
|
+
/** Idea and implementation for global instances and instanced attributes by
|
|
225
|
+
/* Matias Gonzalez Fernandez https://x.com/matiNotFound
|
|
226
|
+
/* and Paul Henschel https://x.com/0xca0a
|
|
224
227
|
*/
|
|
225
228
|
function createInstances() {
|
|
226
229
|
const context = /*#__PURE__*/React.createContext(null);
|
|
@@ -241,7 +244,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
241
244
|
const ref = React.useRef(null);
|
|
242
245
|
React.useImperativeHandle(fref, () => ref.current, []);
|
|
243
246
|
React.useLayoutEffect(() => {
|
|
244
|
-
const parent = ref.current.__r3f.parent;
|
|
247
|
+
const parent = ref.current.__r3f.parent.object;
|
|
245
248
|
parent.geometry.attributes[name] = ref.current;
|
|
246
249
|
const value = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
|
|
247
250
|
const array = Array.from({
|
|
@@ -249,6 +252,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
249
252
|
}, () => value).flat();
|
|
250
253
|
ref.current.array = new Float32Array(array);
|
|
251
254
|
ref.current.itemSize = value.length;
|
|
255
|
+
// @ts-expect-error
|
|
252
256
|
ref.current.count = array.length / ref.current.itemSize;
|
|
253
257
|
return () => {
|
|
254
258
|
delete parent.geometry.attributes[name];
|
|
@@ -256,7 +260,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
256
260
|
}, [name]);
|
|
257
261
|
let iterations = 0;
|
|
258
262
|
useFrame(() => {
|
|
259
|
-
const parent = ref.current.__r3f.parent;
|
|
263
|
+
const parent = ref.current.__r3f.parent.object;
|
|
260
264
|
if (parent.userData.frames === Infinity || iterations < parent.userData.frames) {
|
|
261
265
|
for (let i = 0; i < parent.userData.instances.length; i++) {
|
|
262
266
|
const instance = parent.userData.instances[i].current;
|
|
@@ -269,6 +273,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
269
273
|
iterations++;
|
|
270
274
|
}
|
|
271
275
|
});
|
|
276
|
+
// @ts-expect-error we're abusing three API here by mutating immutable args
|
|
272
277
|
return /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
273
278
|
ref: ref,
|
|
274
279
|
usage: usage,
|
package/core/Ktx2.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare function useKTX2<Url extends string[] | string | Record<string, s
|
|
|
4
4
|
[key in keyof Url]: Texture;
|
|
5
5
|
} : Texture;
|
|
6
6
|
export declare namespace useKTX2 {
|
|
7
|
-
var preload: (url: string extends any[] ? string[] : string, basisPath?: string) =>
|
|
7
|
+
var preload: (url: string extends any[] ? string[] : string, basisPath?: string) => void;
|
|
8
8
|
var clear: (input: string | string[]) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare const Ktx2: ({ children, input, basisPath, }: {
|
package/core/Lightformer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ReactThreeFiber } from '@react-three/fiber';
|
|
1
|
+
import { ReactThreeFiber, ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
export type LightProps =
|
|
4
|
+
export type LightProps = Omit<ThreeElements['mesh'], 'ref'> & {
|
|
5
5
|
args?: any[];
|
|
6
6
|
map?: THREE.Texture;
|
|
7
7
|
toneMapped?: boolean;
|
|
@@ -10,6 +10,6 @@ export type LightProps = JSX.IntrinsicElements['mesh'] & {
|
|
|
10
10
|
scale?: number | [number, number, number] | [number, number];
|
|
11
11
|
intensity?: number;
|
|
12
12
|
target?: boolean | [number, number, number] | THREE.Vector3;
|
|
13
|
-
light?: Partial<
|
|
13
|
+
light?: Partial<ThreeElements['pointLight']>;
|
|
14
14
|
};
|
|
15
15
|
export declare const Lightformer: ForwardRefComponent<LightProps, THREE.Mesh>;
|
package/core/Line.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Color, ColorRepresentation } from 'three';
|
|
2
|
-
import {
|
|
2
|
+
import { Vector2 as FiberVector2, Vector3 as FiberVector3, ThreeElement } from '@react-three/fiber';
|
|
3
3
|
import { LineMaterial, LineMaterialParameters, Line2, LineSegments2 } from 'three-stdlib';
|
|
4
4
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
-
export type LineProps = {
|
|
5
|
+
export type LineProps = Omit<{
|
|
6
6
|
points: ReadonlyArray<FiberVector2 | FiberVector3>;
|
|
7
7
|
vertexColors?: ReadonlyArray<Color | [number, number, number] | [number, number, number, number]>;
|
|
8
8
|
lineWidth?: number;
|
|
9
9
|
segments?: boolean;
|
|
10
|
-
} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> & Omit<
|
|
10
|
+
} & Omit<LineMaterialParameters, 'vertexColors' | 'color'> & Omit<ThreeElement<typeof Line2>, 'ref' | 'args'> & Omit<ThreeElement<typeof LineMaterial>, 'ref' | 'color' | 'vertexColors' | 'args'> & {
|
|
11
11
|
color?: ColorRepresentation;
|
|
12
|
-
}
|
|
12
|
+
}, 'ref'>;
|
|
13
13
|
export declare const Line: ForwardRefComponent<LineProps, Line2 | LineSegments2>;
|
package/core/MapControls.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ReactThreeFiber } from '@react-three/fiber';
|
|
1
|
+
import { ReactThreeFiber, ThreeElement } from '@react-three/fiber';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { MapControls as MapControlsImpl } from 'three-stdlib';
|
|
4
|
-
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
-
export type MapControlsProps =
|
|
4
|
+
import { ForwardRefComponent, Overwrite } from '../helpers/ts-utils';
|
|
5
|
+
export type MapControlsProps = Omit<Overwrite<ThreeElement<typeof MapControlsImpl>, {
|
|
6
6
|
target?: ReactThreeFiber.Vector3;
|
|
7
7
|
camera?: THREE.Camera;
|
|
8
8
|
makeDefault?: boolean;
|
|
@@ -10,5 +10,5 @@ export type MapControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber.Object3
|
|
|
10
10
|
onStart?: (e?: THREE.Event) => void;
|
|
11
11
|
onEnd?: (e?: THREE.Event) => void;
|
|
12
12
|
domElement?: HTMLElement;
|
|
13
|
-
}>;
|
|
13
|
+
}>, 'ref' | 'args'>;
|
|
14
14
|
export declare const MapControls: ForwardRefComponent<MapControlsProps, MapControlsImpl>;
|
package/core/MarchingCubes.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import { Color } from 'three';
|
|
3
3
|
import { MarchingCubes as MarchingCubesImpl } from 'three-stdlib';
|
|
4
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
5
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
6
|
export type MarchingCubesProps = {
|
|
6
7
|
resolution?: number;
|
|
7
8
|
maxPolyCount?: number;
|
|
8
9
|
enableUvs?: boolean;
|
|
9
10
|
enableColors?: boolean;
|
|
10
|
-
} &
|
|
11
|
+
} & Omit<ThreeElements['group'], 'ref'>;
|
|
11
12
|
export declare const MarchingCubes: ForwardRefComponent<MarchingCubesProps, MarchingCubesImpl>;
|
|
12
|
-
type MarchingCubeProps = {
|
|
13
|
+
export type MarchingCubeProps = {
|
|
13
14
|
strength?: number;
|
|
14
15
|
subtract?: number;
|
|
15
16
|
color?: Color;
|
|
16
|
-
} &
|
|
17
|
+
} & ThreeElements['group'];
|
|
17
18
|
export declare const MarchingCube: ForwardRefComponent<MarchingCubeProps, THREE.Group>;
|
|
18
|
-
type MarchingPlaneProps = {
|
|
19
|
+
export type MarchingPlaneProps = {
|
|
19
20
|
planeType?: 'x' | 'y' | 'z';
|
|
20
21
|
strength?: number;
|
|
21
22
|
subtract?: number;
|
|
22
|
-
} &
|
|
23
|
+
} & ThreeElements['group'];
|
|
23
24
|
export declare const MarchingPlane: ForwardRefComponent<MarchingPlaneProps, THREE.Group>;
|
|
24
|
-
export {};
|
package/core/Mask.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
3
|
-
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
export type MaskProps = Omit<ThreeElements['mesh'], 'ref' | 'id'> & {
|
|
4
5
|
id: number;
|
|
5
6
|
colorWrite?: boolean;
|
|
6
7
|
depthWrite?: boolean;
|
|
7
8
|
};
|
|
8
|
-
export declare const Mask: ForwardRefComponent<
|
|
9
|
+
export declare const Mask: ForwardRefComponent<MaskProps, THREE.Mesh>;
|
|
9
10
|
export declare function useMask(id: number, inverse?: boolean): {
|
|
10
11
|
stencilWrite: boolean;
|
|
11
12
|
stencilRef: number;
|
|
@@ -14,4 +15,3 @@ export declare function useMask(id: number, inverse?: boolean): {
|
|
|
14
15
|
stencilZFail: 7680;
|
|
15
16
|
stencilZPass: 7680;
|
|
16
17
|
};
|
|
17
|
-
export {};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ShaderMaterial } from 'three';
|
|
2
|
-
import {
|
|
2
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
discardMaterialImpl: ReactThreeFiber.ShaderMaterialProps;
|
|
8
|
-
}
|
|
4
|
+
declare module '@react-three/fiber' {
|
|
5
|
+
interface ThreeElements {
|
|
6
|
+
discardMaterialImpl: ThreeElements['shaderMaterial'];
|
|
9
7
|
}
|
|
10
8
|
}
|
|
11
|
-
export
|
|
9
|
+
export type MeshDiscardMaterialProps = Omit<ThreeElements['shaderMaterial'], 'ref'>;
|
|
10
|
+
export declare const MeshDiscardMaterial: ForwardRefComponent<MeshDiscardMaterialProps, ShaderMaterial>;
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
import { IUniform, MeshPhysicalMaterial, MeshPhysicalMaterialParameters } from 'three';
|
|
2
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
2
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
3
|
-
type DistortMaterialType = JSX.IntrinsicElements['meshPhysicalMaterial'] & {
|
|
4
|
-
time?: number;
|
|
5
|
-
distort?: number;
|
|
6
|
-
radius?: number;
|
|
7
|
-
};
|
|
8
|
-
type Props = DistortMaterialType & {
|
|
9
|
-
speed?: number;
|
|
10
|
-
factor?: number;
|
|
11
|
-
};
|
|
12
|
-
declare global {
|
|
13
|
-
namespace JSX {
|
|
14
|
-
interface IntrinsicElements {
|
|
15
|
-
distortMaterialImpl: DistortMaterialType;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
4
|
interface Uniform<T> {
|
|
20
5
|
value: T;
|
|
21
6
|
}
|
|
@@ -37,5 +22,18 @@ declare class DistortMaterialImpl extends MeshPhysicalMaterial {
|
|
|
37
22
|
get radius(): number;
|
|
38
23
|
set radius(v: number);
|
|
39
24
|
}
|
|
40
|
-
|
|
25
|
+
declare module '@react-three/fiber' {
|
|
26
|
+
interface ThreeElements {
|
|
27
|
+
distortMaterialImpl: ThreeElements['meshPhysicalMaterial'] & {
|
|
28
|
+
time?: number;
|
|
29
|
+
distort?: number;
|
|
30
|
+
radius?: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export type MeshDistortMaterialProps = Omit<ThreeElements['distortMaterialImpl'], 'ref'> & {
|
|
35
|
+
speed?: number;
|
|
36
|
+
factor?: number;
|
|
37
|
+
};
|
|
38
|
+
export declare const MeshDistortMaterial: ForwardRefComponent<MeshDistortMaterialProps, DistortMaterialImpl>;
|
|
41
39
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./Fbo.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),u=require("three-stdlib"),s=require("../helpers/constants.cjs.js");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var d=v(e),m=c(r),f=c(t);const g=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new m.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }",`uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`),p=f.forwardRef((({children:e,events:r,blur:t=0,eventPriority:o=0,renderPriority:u=0,worldUnits:s=!1,resolution:v=512,...c},p)=>{n.extend({PortalMaterialImpl:g});const h=f.useRef(null),{scene:y,gl:b,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(v,v),[R,S]=f.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),f.useEffect((()=>{void 0!==r&&U({enabled:!r})}),[r]);const[_,D]=f.useState(!0),j=a.useIntersect(D);f.useLayoutEffect((()=>{var e;j.current=null==(e=h.current)?void 0:e.__r3f.parent}),[]),f.useLayoutEffect((()=>{if(j.current&&t&&null===h.current.sdf){const e=new m.Mesh(j.current.geometry,new m.MeshBasicMaterial),r=(new m.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new m.OrthographicCamera(r.min.x*(1+2/v),r.max.x*(1+2/v),r.max.y*(1+2/v),r.min.y*(1+2/v),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),b.setRenderTarget(T),b.render(e,t);const n=F(v,v,b)(T.texture),a=new Float32Array(v*v);b.readRenderTargetPixels(n,0,0,v,v,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,b.setRenderTarget(null)}}),[v,t]),f.useImperativeHandle(p,(()=>h.current));const P=f.useCallback(((e,r,t)=>{var n;if(!j.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(j.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return f.createElement("portalMaterialImpl",d.default({ref:h,blur:t,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],attach:"material"},c),f.createElement(l.RenderTexture,{attach:"map",frames:_?1/0:0,eventPriority:o,renderPriority:u,compute:P},e,f.createElement(x,{events:r,rootScene:y,priority:R,material:h,worldUnits:s})))}));function x({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),v=n.useThree((e=>e.setEvents)),c=i.useFBO(),d=i.useFBO();f.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),f.useEffect((()=>{void 0!==e&&v({enabled:e})}),[e]);const[g,p]=f.useMemo((()=>{const e={value:0};return[new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{a:{value:c.texture},b:{value:d.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)?void 0:n.__r3f.parent;if(i){var u,s,v,m;if(l)o.matrixWorld.identity();else a&&1===(null==(u=t.current)?void 0:u.blend)&&i.updateWorldMatrix(!0,!1),o.matrixWorld.copy(i.matrixWorld);if(a)(null==(s=t.current)?void 0:s.blend)>0&&(null==(v=t.current)?void 0:v.blend)<1?(p.value=t.current.blend,e.gl.setRenderTarget(c),e.gl.render(o,e.camera),e.gl.setRenderTarget(d),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),g.render(e.gl)):1===(null==(m=t.current)?void 0:m.blend)&&e.gl.render(o,e.camera)}}),a),f.createElement(f.Fragment,null)}const F=(e,r,t)=>{let n=new m.WebGLRenderTarget(e,r,{minFilter:m.LinearMipmapLinearFilter,magFilter:m.LinearFilter,type:m.FloatType,format:m.RedFormat,generateMipmaps:!0}),a=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),i=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),l=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),o=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),s=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat}),v=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat});const c=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),d=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new m.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),p=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:s.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return u=>{let x=n;u.minFilter=m.NearestFilter,u.magFilter=m.NearestFilter,c.material.uniforms.tex.value=u,t.setRenderTarget(a),c.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,y=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}t.setRenderTarget(s),g.material.uniforms.tex.value=y.texture,g.render(t),d.material.uniforms.tex.value=u,t.setRenderTarget(i),d.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}return t.setRenderTarget(v),g.material.uniforms.tex.value=y.texture,g.render(t),t.setRenderTarget(x),p.material.uniforms.tex.value=u,p.render(t),t.setRenderTarget(null),x}};exports.MeshPortalMaterial=p;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./Fbo.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),u=require("three-stdlib"),s=require("../helpers/constants.cjs.js");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var d=v(e),m=c(r),f=c(t);const g=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new m.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }",`uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`),p=f.forwardRef((({children:e,events:r,blur:t=0,eventPriority:o=0,renderPriority:u=0,worldUnits:s=!1,resolution:v=512,...c},p)=>{n.extend({PortalMaterialImpl:g});const h=f.useRef(null),{scene:b,gl:y,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(v,v),[R,S]=f.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),f.useEffect((()=>{void 0!==r&&U({enabled:!r})}),[r]);const[_,j]=f.useState(!0),D=a.useIntersect(j);f.useLayoutEffect((()=>{var e;D.current=null==(e=h.current)||null==(e=e.__r3f.parent)?void 0:e.object}),[]),f.useLayoutEffect((()=>{if(D.current&&t&&null===h.current.sdf){const e=new m.Mesh(D.current.geometry,new m.MeshBasicMaterial),r=(new m.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new m.OrthographicCamera(r.min.x*(1+2/v),r.max.x*(1+2/v),r.max.y*(1+2/v),r.min.y*(1+2/v),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),y.setRenderTarget(T),y.render(e,t);const n=F(v,v,y)(T.texture),a=new Float32Array(v*v);y.readRenderTargetPixels(n,0,0,v,v,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,y.setRenderTarget(null)}}),[v,t]),f.useImperativeHandle(p,(()=>h.current));const P=f.useCallback(((e,r,t)=>{var n;if(!D.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(D.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return f.createElement("portalMaterialImpl",d.default({ref:h,blur:t,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],attach:"material"},c),f.createElement(l.RenderTexture,{attach:"map",frames:_?1/0:0,eventPriority:o,renderPriority:u,compute:P},e,f.createElement(x,{events:r,rootScene:b,priority:R,material:h,worldUnits:s})))}));function x({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),v=n.useThree((e=>e.setEvents)),c=i.useFBO(),d=i.useFBO();f.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),f.useEffect((()=>{void 0!==e&&v({enabled:e})}),[e]);const[g,p]=f.useMemo((()=>{const e={value:0};return[new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{a:{value:c.texture},b:{value:d.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)||null==(n=n.__r3f.parent)?void 0:n.object;if(i){var u,s,v,m;if(l)o.matrixWorld.identity();else a&&1===(null==(u=t.current)?void 0:u.blend)&&i.updateWorldMatrix(!0,!1),o.matrixWorld.copy(i.matrixWorld);if(a)(null==(s=t.current)?void 0:s.blend)>0&&(null==(v=t.current)?void 0:v.blend)<1?(p.value=t.current.blend,e.gl.setRenderTarget(c),e.gl.render(o,e.camera),e.gl.setRenderTarget(d),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),g.render(e.gl)):1===(null==(m=t.current)?void 0:m.blend)&&e.gl.render(o,e.camera)}}),a),f.createElement(f.Fragment,null)}const F=(e,r,t)=>{let n=new m.WebGLRenderTarget(e,r,{minFilter:m.LinearMipmapLinearFilter,magFilter:m.LinearFilter,type:m.FloatType,format:m.RedFormat,generateMipmaps:!0}),a=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),i=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),l=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),o=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),s=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat}),v=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat});const c=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),d=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new m.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),p=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:s.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return u=>{let x=n;u.minFilter=m.NearestFilter,u.magFilter=m.NearestFilter,c.material.uniforms.tex.value=u,t.setRenderTarget(a),c.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,b=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);b=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(b),f.render(t),h=b}t.setRenderTarget(s),g.material.uniforms.tex.value=b.texture,g.render(t),d.material.uniforms.tex.value=u,t.setRenderTarget(i),d.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);b=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(b),f.render(t),h=b}return t.setRenderTarget(v),g.material.uniforms.tex.value=b.texture,g.render(t),t.setRenderTarget(x),p.material.uniforms.tex.value=u,p.render(t),t.setRenderTarget(null),x}};exports.MeshPortalMaterial=p;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
interface IntrinsicElements {
|
|
15
|
-
portalMaterialImpl: PortalMaterialType;
|
|
16
|
-
}
|
|
2
|
+
import { ReactThreeFiber, ThreeElements } from '@react-three/fiber';
|
|
3
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
+
declare module '@react-three/fiber' {
|
|
5
|
+
interface ThreeElements {
|
|
6
|
+
portalMaterialImpl: ThreeElements['shaderMaterial'] & {
|
|
7
|
+
resolution: ReactThreeFiber.Vector2;
|
|
8
|
+
blur: number;
|
|
9
|
+
blend: number;
|
|
10
|
+
size?: number;
|
|
11
|
+
sdf?: THREE.Texture;
|
|
12
|
+
map?: THREE.Texture;
|
|
13
|
+
};
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
|
-
export type PortalProps =
|
|
16
|
+
export type PortalProps = Omit<ThreeElements['portalMaterialImpl'], 'ref' | 'blend'> & {
|
|
20
17
|
blend?: number;
|
|
21
18
|
blur?: number;
|
|
22
19
|
resolution?: number;
|
|
@@ -25,4 +22,4 @@ export type PortalProps = JSX.IntrinsicElements['shaderMaterial'] & {
|
|
|
25
22
|
renderPriority?: number;
|
|
26
23
|
events?: boolean;
|
|
27
24
|
};
|
|
28
|
-
export declare const MeshPortalMaterial:
|
|
25
|
+
export declare const MeshPortalMaterial: ForwardRefComponent<PortalProps, ThreeElements['portalMaterialImpl']>;
|
|
@@ -78,7 +78,7 @@ const MeshPortalMaterial = /* @__PURE__ */React.forwardRef(({
|
|
|
78
78
|
var _ref$current;
|
|
79
79
|
// Since the ref above is not tied to a mesh directly (we're inside a material),
|
|
80
80
|
// it has to be tied to the parent mesh here
|
|
81
|
-
parent.current = (_ref$current = ref.current) == null ? void 0 : _ref$current.
|
|
81
|
+
parent.current = (_ref$current = ref.current) == null || (_ref$current = _ref$current.__r3f.parent) == null ? void 0 : _ref$current.object;
|
|
82
82
|
}, []);
|
|
83
83
|
React.useLayoutEffect(() => {
|
|
84
84
|
if (!parent.current) return;
|
|
@@ -201,7 +201,7 @@ function ManagePortalScene({
|
|
|
201
201
|
}, []);
|
|
202
202
|
useFrame(state => {
|
|
203
203
|
var _material$current;
|
|
204
|
-
let parent = material == null || (_material$current = material.current) == null ? void 0 : _material$current.
|
|
204
|
+
let parent = material == null || (_material$current = material.current) == null || (_material$current = _material$current.__r3f.parent) == null ? void 0 : _material$current.object;
|
|
205
205
|
if (parent) {
|
|
206
206
|
// Move portal contents along with the parent if worldUnits is true
|
|
207
207
|
if (!worldUnits) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("../materials/BlurPass.cjs.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),a=require("@react-three/fiber"),n=require("../materials/BlurPass.cjs.js"),o=require("../materials/MeshReflectorMaterial.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("../materials/ConvolutionMaterial.cjs.js"),require("../helpers/constants.cjs.js");var l=s(e),u=i(t);const d=u.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:s=256,blur:i=[0,0],minDepthThreshold:d=.9,maxDepthThreshold:c=1,depthScale:p=0,depthToBlurRatioBias:m=.25,mirror:h=0,distortion:f=1,mixContrast:x=1,distortionMap:M,reflectorOffset:T=0,...S},y)=>{a.extend({MeshReflectorMaterialImpl:o.MeshReflectorMaterial});const b=a.useThree((({gl:e})=>e)),w=a.useThree((({camera:e})=>e)),j=a.useThree((({scene:e})=>e)),R=(i=Array.isArray(i)?i:[i,i])[0]+i[1]>0,v=u.useRef(null);u.useImperativeHandle(y,(()=>v.current),[]);const[g]=u.useState((()=>new r.Plane)),[D]=u.useState((()=>new r.Vector3)),[B]=u.useState((()=>new r.Vector3)),[_]=u.useState((()=>new r.Vector3)),[O]=u.useState((()=>new r.Matrix4)),[P]=u.useState((()=>new r.Vector3(0,0,-1))),[U]=u.useState((()=>new r.Vector4)),[V]=u.useState((()=>new r.Vector3)),[E]=u.useState((()=>new r.Vector3)),[F]=u.useState((()=>new r.Vector4)),[W]=u.useState((()=>new r.Matrix4)),[I]=u.useState((()=>new r.PerspectiveCamera)),q=u.useCallback((()=>{var e;const t=v.current.parent||(null==(e=v.current)||null==(e=e.__r3f.parent)?void 0:e.object);if(!t)return;if(B.setFromMatrixPosition(t.matrixWorld),_.setFromMatrixPosition(w.matrixWorld),O.extractRotation(t.matrixWorld),D.set(0,0,1),D.applyMatrix4(O),B.addScaledVector(D,T),V.subVectors(B,_),V.dot(D)>0)return;V.reflect(D).negate(),V.add(B),O.extractRotation(w.matrixWorld),P.set(0,0,-1),P.applyMatrix4(O),P.add(_),E.subVectors(B,P),E.reflect(D).negate(),E.add(B),I.position.copy(V),I.up.set(0,1,0),I.up.applyMatrix4(O),I.up.reflect(D),I.lookAt(E),I.far=w.far,I.updateMatrixWorld(),I.projectionMatrix.copy(w.projectionMatrix),W.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),W.multiply(I.projectionMatrix),W.multiply(I.matrixWorldInverse),W.multiply(t.matrixWorld),g.setFromNormalAndCoplanarPoint(D,B),g.applyMatrix4(I.matrixWorldInverse),U.set(g.normal.x,g.normal.y,g.normal.z,g.constant);const r=I.projectionMatrix;F.x=(Math.sign(U.x)+r.elements[8])/r.elements[0],F.y=(Math.sign(U.y)+r.elements[9])/r.elements[5],F.z=-1,F.w=(1+r.elements[10])/r.elements[14],U.multiplyScalar(2/U.dot(F)),r.elements[2]=U.x,r.elements[6]=U.y,r.elements[10]=U.z+1,r.elements[14]=U.w}),[w,T]),[C,k,L,z]=u.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,type:r.HalfFloatType},o=new r.WebGLRenderTarget(s,s,a);o.depthBuffer=!0,o.depthTexture=new r.DepthTexture(s,s),o.depthTexture.format=r.DepthFormat,o.depthTexture.type=r.UnsignedShortType;const l=new r.WebGLRenderTarget(s,s,a);return[o,l,new n.BlurPass({gl:b,resolution:s,width:i[0],height:i[1],minDepthThreshold:d,maxDepthThreshold:c,depthScale:p,depthToBlurRatioBias:m}),{mirror:h,textureMatrix:W,mixBlur:e,tDiffuse:o.texture,tDepth:o.depthTexture,tDiffuseBlur:l.texture,hasBlur:R,mixStrength:t,minDepthThreshold:d,maxDepthThreshold:c,depthScale:p,depthToBlurRatioBias:m,distortion:f,distortionMap:M,mixContrast:x,"defines-USE_BLUR":R?"":void 0,"defines-USE_DEPTH":p>0?"":void 0,"defines-USE_DISTORTION":M?"":void 0}]}),[b,i,W,s,h,R,e,t,d,c,p,m,f,M,x]);return a.useFrame((()=>{var e;const t=v.current.parent||(null==(e=v.current)||null==(e=e.__r3f.parent)?void 0:e.object);if(!t)return;t.visible=!1;const r=b.xr.enabled,a=b.shadowMap.autoUpdate;q(),b.xr.enabled=!1,b.shadowMap.autoUpdate=!1,b.setRenderTarget(C),b.state.buffers.depth.setMask(!0),b.autoClear||b.clear(),b.render(j,I),R&&L.render(b,C,k),b.xr.enabled=r,b.shadowMap.autoUpdate=a,t.visible=!0,b.setRenderTarget(null)})),u.createElement("meshReflectorMaterialImpl",l.default({attach:"material",key:"key"+z["defines-USE_BLUR"]+z["defines-USE_DEPTH"]+z["defines-USE_DISTORTION"],ref:v},z,S))}));exports.MeshReflectorMaterial=d;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ThreeElements, ThreeElement } from '@react-three/fiber';
|
|
2
|
+
import { MeshReflectorMaterial as MeshReflectorMaterialImpl } from '../materials/MeshReflectorMaterial';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
|
|
4
|
+
declare module '@react-three/fiber' {
|
|
5
|
+
interface ThreeElements {
|
|
6
|
+
meshReflectorMaterialImpl: ThreeElement<typeof MeshReflectorMaterialImpl>;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export type MeshReflectorMaterialProps = ThreeElements['meshReflectorMaterialImpl'] & {
|
|
5
10
|
resolution?: number;
|
|
6
|
-
mixBlur?: number;
|
|
7
|
-
mixStrength?: number;
|
|
8
11
|
blur?: [number, number] | number;
|
|
9
|
-
mirror: number;
|
|
10
|
-
minDepthThreshold?: number;
|
|
11
|
-
maxDepthThreshold?: number;
|
|
12
|
-
depthScale?: number;
|
|
13
|
-
depthToBlurRatioBias?: number;
|
|
14
|
-
distortionMap?: Texture;
|
|
15
|
-
distortion?: number;
|
|
16
|
-
mixContrast?: number;
|
|
17
12
|
reflectorOffset?: number;
|
|
18
13
|
};
|
|
19
|
-
declare
|
|
20
|
-
namespace JSX {
|
|
21
|
-
interface IntrinsicElements {
|
|
22
|
-
meshReflectorMaterialImpl: MeshReflectorMaterialProps;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export declare const MeshReflectorMaterial: ForwardRefComponent<Props, MeshReflectorMaterialImpl>;
|
|
27
|
-
export {};
|
|
14
|
+
export declare const MeshReflectorMaterial: ForwardRefComponent<MeshReflectorMaterialProps, MeshReflectorMaterialImpl>;
|
|
@@ -51,8 +51,7 @@ const MeshReflectorMaterial = /* @__PURE__ */React.forwardRef(({
|
|
|
51
51
|
const [virtualCamera] = React.useState(() => new PerspectiveCamera());
|
|
52
52
|
const beforeRender = React.useCallback(() => {
|
|
53
53
|
var _materialRef$current;
|
|
54
|
-
|
|
55
|
-
const parent = materialRef.current.parent || ((_materialRef$current = materialRef.current) == null ? void 0 : _materialRef$current.__r3f.parent);
|
|
54
|
+
const parent = materialRef.current.parent || ((_materialRef$current = materialRef.current) == null || (_materialRef$current = _materialRef$current.__r3f.parent) == null ? void 0 : _materialRef$current.object);
|
|
56
55
|
if (!parent) return;
|
|
57
56
|
reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);
|
|
58
57
|
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
|
|
@@ -149,8 +148,7 @@ const MeshReflectorMaterial = /* @__PURE__ */React.forwardRef(({
|
|
|
149
148
|
}, [gl, blur, textureMatrix, resolution, mirror, hasBlur, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, distortion, distortionMap, mixContrast]);
|
|
150
149
|
useFrame(() => {
|
|
151
150
|
var _materialRef$current2;
|
|
152
|
-
|
|
153
|
-
const parent = materialRef.current.parent || ((_materialRef$current2 = materialRef.current) == null ? void 0 : _materialRef$current2.__r3f.parent);
|
|
151
|
+
const parent = materialRef.current.parent || ((_materialRef$current2 = materialRef.current) == null || (_materialRef$current2 = _materialRef$current2.__r3f.parent) == null ? void 0 : _materialRef$current2.object);
|
|
154
152
|
if (!parent) return;
|
|
155
153
|
parent.visible = false;
|
|
156
154
|
const currentXrEnabled = gl.xr.enabled;
|