@react-three/drei 9.121.6-rc.1 → 9.122.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/core/AccumulativeShadows.d.ts +10 -8
- package/core/ArcballControls.d.ts +4 -4
- package/core/AsciiRenderer.d.ts +2 -1
- package/core/BBAnchor.d.ts +3 -3
- package/core/Backdrop.d.ts +1 -2
- package/core/Billboard.cjs.js +1 -1
- package/core/Billboard.d.ts +2 -3
- package/core/Billboard.js +1 -1
- package/core/Bounds.d.ts +1 -2
- package/core/Bvh.d.ts +2 -3
- package/core/CameraControls.d.ts +4 -4
- package/core/CatmullRomLine.d.ts +3 -2
- package/core/Caustics.d.ts +17 -14
- package/core/Center.d.ts +2 -3
- package/core/Clone.d.ts +4 -4
- package/core/Cloud.cjs.js +1 -1
- package/core/Cloud.d.ts +12 -50
- package/core/Cloud.js +3 -3
- package/core/ComputedAttribute.cjs.js +1 -1
- package/core/ComputedAttribute.d.ts +4 -3
- package/core/ComputedAttribute.js +1 -1
- package/core/ContactShadows.d.ts +2 -3
- package/core/CubeCamera.d.ts +3 -3
- package/core/CubeTexture.d.ts +6 -5
- package/core/CubeTexture.js +7 -2
- package/core/CubicBezierLine.d.ts +3 -2
- package/core/CurveModifier.d.ts +1 -2
- package/core/Decal.d.ts +2 -2
- package/core/Detailed.d.ts +3 -3
- package/core/DetectGPU.d.ts +2 -1
- 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 +13 -9
- package/core/Effects.js +3 -3
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.d.ts +7 -5
- package/core/Fbo.d.ts +4 -1
- package/core/Fbo.js +2 -0
- package/core/Fbx.d.ts +1 -1
- package/core/FirstPersonControls.d.ts +2 -2
- package/core/Fisheye.d.ts +1 -2
- package/core/Float.d.ts +1 -2
- package/core/FlyControls.d.ts +2 -2
- package/core/GizmoHelper.d.ts +1 -2
- package/core/GizmoViewport.d.ts +2 -2
- package/core/Gltf.d.ts +5 -9
- package/core/GradientTexture.d.ts +4 -4
- package/core/GradientTexture.js +2 -0
- package/core/Grid.d.ts +7 -6
- 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 +2 -1
- package/core/Image.d.ts +8 -6
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +35 -27
- package/core/Instances.js +30 -35
- 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 +7 -6
- package/core/MeshDistortMaterial.d.ts +17 -15
- package/core/MeshPortalMaterial.cjs.js +1 -1
- package/core/MeshPortalMaterial.d.ts +17 -14
- package/core/MeshPortalMaterial.js +2 -2
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.d.ts +22 -9
- package/core/MeshReflectorMaterial.js +4 -2
- package/core/MeshRefractionMaterial.cjs.js +1 -1
- package/core/MeshRefractionMaterial.d.ts +8 -5
- package/core/MeshRefractionMaterial.js +2 -2
- package/core/MeshTransmissionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.d.ts +8 -7
- package/core/MeshTransmissionMaterial.js +1 -2
- package/core/MeshWobbleMaterial.d.ts +17 -15
- package/core/MotionPathControls.cjs.js +1 -1
- package/core/MotionPathControls.d.ts +11 -18
- package/core/MotionPathControls.js +32 -24
- package/core/MultiMaterial.cjs.js +1 -1
- package/core/MultiMaterial.d.ts +1 -3
- package/core/MultiMaterial.js +3 -2
- 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 +3 -2
- 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 +11 -3
- package/core/PointerLockControls.d.ts +2 -2
- package/core/Points.cjs.js +1 -1
- package/core/Points.d.ts +13 -10
- package/core/Points.js +16 -6
- package/core/PositionalAudio.d.ts +3 -3
- package/core/Preload.d.ts +3 -2
- package/core/QuadraticBezierLine.d.ts +7 -5
- package/core/Reflector.cjs.js +1 -0
- package/core/Reflector.d.ts +30 -0
- package/core/Reflector.js +180 -0
- 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 +2 -3
- package/core/Resize.d.ts +2 -9
- 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/ScreenSpace.d.ts +2 -3
- package/core/Segments.d.ts +8 -6
- package/core/Shadow.d.ts +3 -3
- package/core/ShadowAlpha.cjs.js +1 -1
- package/core/ShadowAlpha.d.ts +2 -1
- package/core/ShadowAlpha.js +1 -1
- package/core/Sky.d.ts +3 -2
- package/core/Sparkles.d.ts +16 -14
- package/core/Splat.d.ts +8 -6
- package/core/SpotLight.d.ts +1 -2
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +3 -36
- package/core/Stage.cjs.js +1 -1
- package/core/Stage.d.ts +2 -3
- package/core/Stars.cjs.js +1 -1
- package/core/Stars.d.ts +8 -6
- package/core/Stars.js +1 -1
- package/core/Stats.d.ts +3 -2
- package/core/StatsGl.d.ts +2 -2
- package/core/Svg.d.ts +6 -6
- package/core/Text.d.ts +4 -3
- package/core/Text3D.d.ts +10 -7
- 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 +2 -3
- package/core/TransformControls.cjs.js +1 -1
- package/core/TransformControls.d.ts +3 -3
- package/core/TransformControls.js +5 -4
- package/core/VideoTexture.cjs.js +1 -1
- package/core/VideoTexture.js +1 -1
- package/core/Wireframe.d.ts +7 -5
- package/core/index.cjs.js +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.js +3 -1
- package/core/shapes.d.ts +20 -21
- package/core/softShadows.d.ts +2 -1
- 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 +8 -1
- package/core/useContextBridge.d.ts +1 -1
- package/core/useEnvironment.cjs.js +1 -1
- package/core/useEnvironment.d.ts +4 -3
- package/core/useEnvironment.js +19 -11
- 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 +4 -1
- package/helpers/deprecated.js +14 -2
- package/helpers/ts-utils.d.ts +0 -4
- package/helpers/useEffectfulState.d.ts +1 -1
- package/index.cjs.js +1 -1
- package/index.js +1 -0
- package/materials/BlurPass.js +1 -0
- package/materials/MeshReflectorMaterial.d.ts +16 -0
- package/native/index.cjs.js +1 -1
- package/native/index.js +3 -1
- package/package.json +8 -7
- package/web/CycleRaycast.d.ts +1 -1
- package/web/FaceLandmarker.d.ts +2 -1
- package/web/Facemesh.d.ts +2 -3
- 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 +4 -3
- package/web/PresentationControls.js +28 -20
- package/web/ScrollControls.d.ts +1 -1
- package/web/Select.d.ts +3 -3
- package/web/Select.js +2 -6
- package/web/View.cjs.js +1 -1
- package/web/View.d.ts +10 -8
- package/web/View.js +34 -4
- package/web/index.cjs.js +1 -1
- package/web/index.js +3 -0
- package/web/pivotControls/AxisArrow.js +2 -0
- package/web/pivotControls/AxisRotator.js +2 -0
- package/web/pivotControls/PlaneSlider.js +2 -0
- package/web/pivotControls/ScalingSphere.js +1 -0
- package/web/pivotControls/index.d.ts +2 -1
package/core/Instances.js
CHANGED
|
@@ -2,6 +2,7 @@ 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';
|
|
5
6
|
import { setUpdateRange } from '../helpers/deprecated.js';
|
|
6
7
|
|
|
7
8
|
function isFunctionChild(value) {
|
|
@@ -73,7 +74,7 @@ const Instance = /* @__PURE__ */React.forwardRef(({
|
|
|
73
74
|
React.useMemo(() => extend({
|
|
74
75
|
PositionMesh
|
|
75
76
|
}), []);
|
|
76
|
-
const group = React.useRef(
|
|
77
|
+
const group = React.useRef();
|
|
77
78
|
React.useImperativeHandle(ref, () => group.current, []);
|
|
78
79
|
const {
|
|
79
80
|
subscribe,
|
|
@@ -134,11 +135,11 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
134
135
|
count = Math.min(limit, range !== undefined ? range : limit, instances.length);
|
|
135
136
|
parentRef.current.count = count;
|
|
136
137
|
setUpdateRange(parentRef.current.instanceMatrix, {
|
|
137
|
-
|
|
138
|
+
offset: 0,
|
|
138
139
|
count: count * 16
|
|
139
140
|
});
|
|
140
141
|
setUpdateRange(parentRef.current.instanceColor, {
|
|
141
|
-
|
|
142
|
+
offset: 0,
|
|
142
143
|
count: count * 3
|
|
143
144
|
});
|
|
144
145
|
for (let i = 0; i < instances.length; i++) {
|
|
@@ -174,11 +175,15 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
174
175
|
raycast: () => null
|
|
175
176
|
}, props), /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
176
177
|
attach: "instanceMatrix",
|
|
177
|
-
|
|
178
|
+
count: matrices.length / 16,
|
|
179
|
+
array: matrices,
|
|
180
|
+
itemSize: 16,
|
|
178
181
|
usage: THREE.DynamicDrawUsage
|
|
179
182
|
}), /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
180
183
|
attach: "instanceColor",
|
|
181
|
-
|
|
184
|
+
count: colors.length / 3,
|
|
185
|
+
array: colors,
|
|
186
|
+
itemSize: 3,
|
|
182
187
|
usage: THREE.DynamicDrawUsage
|
|
183
188
|
}), isFunctionChild(children) ? /*#__PURE__*/React.createElement(localContext.Provider, {
|
|
184
189
|
value: api
|
|
@@ -188,37 +193,29 @@ const Instances = /* @__PURE__ */React.forwardRef(({
|
|
|
188
193
|
value: api
|
|
189
194
|
}, children));
|
|
190
195
|
});
|
|
191
|
-
const Merged =
|
|
196
|
+
const Merged = /* @__PURE__ */React.forwardRef(function Merged({
|
|
192
197
|
meshes,
|
|
193
198
|
children,
|
|
194
|
-
...
|
|
199
|
+
...props
|
|
195
200
|
}, ref) {
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
}
|
|
201
|
+
const isArray = Array.isArray(meshes);
|
|
202
|
+
// Filter out meshes from collections, which may contain non-meshes
|
|
203
|
+
if (!isArray) for (const key of Object.keys(meshes)) if (!meshes[key].isMesh) delete meshes[key];
|
|
219
204
|
return /*#__PURE__*/React.createElement("group", {
|
|
220
205
|
ref: ref
|
|
221
|
-
},
|
|
206
|
+
}, /*#__PURE__*/React.createElement(Composer, {
|
|
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
|
+
}), {}))));
|
|
222
219
|
});
|
|
223
220
|
|
|
224
221
|
/** Idea and implementation for global instances and instanced attributes by
|
|
@@ -244,7 +241,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
244
241
|
const ref = React.useRef(null);
|
|
245
242
|
React.useImperativeHandle(fref, () => ref.current, []);
|
|
246
243
|
React.useLayoutEffect(() => {
|
|
247
|
-
const parent = ref.current.__r3f.parent
|
|
244
|
+
const parent = ref.current.__r3f.parent;
|
|
248
245
|
parent.geometry.attributes[name] = ref.current;
|
|
249
246
|
const value = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
|
|
250
247
|
const array = Array.from({
|
|
@@ -252,7 +249,6 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
252
249
|
}, () => value).flat();
|
|
253
250
|
ref.current.array = new Float32Array(array);
|
|
254
251
|
ref.current.itemSize = value.length;
|
|
255
|
-
// @ts-expect-error
|
|
256
252
|
ref.current.count = array.length / ref.current.itemSize;
|
|
257
253
|
return () => {
|
|
258
254
|
delete parent.geometry.attributes[name];
|
|
@@ -260,7 +256,7 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
260
256
|
}, [name]);
|
|
261
257
|
let iterations = 0;
|
|
262
258
|
useFrame(() => {
|
|
263
|
-
const parent = ref.current.__r3f.parent
|
|
259
|
+
const parent = ref.current.__r3f.parent;
|
|
264
260
|
if (parent.userData.frames === Infinity || iterations < parent.userData.frames) {
|
|
265
261
|
for (let i = 0; i < parent.userData.instances.length; i++) {
|
|
266
262
|
const instance = parent.userData.instances[i].current;
|
|
@@ -273,7 +269,6 @@ const InstancedAttribute = /*#__PURE__*/React.forwardRef(({
|
|
|
273
269
|
iterations++;
|
|
274
270
|
}
|
|
275
271
|
});
|
|
276
|
-
// @ts-expect-error we're abusing three API here by mutating immutable args
|
|
277
272
|
return /*#__PURE__*/React.createElement("instancedBufferAttribute", {
|
|
278
273
|
ref: ref,
|
|
279
274
|
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) => undefined;
|
|
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
|
|
1
|
+
import { ReactThreeFiber } 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 = JSX.IntrinsicElements['mesh'] & {
|
|
5
5
|
args?: any[];
|
|
6
6
|
map?: THREE.Texture;
|
|
7
7
|
toneMapped?: boolean;
|
|
@@ -10,6 +10,6 @@ export type LightProps = Omit<ThreeElements['mesh'], 'ref'> & {
|
|
|
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<JSX.IntrinsicElements['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 { Vector2 as FiberVector2, Vector3 as FiberVector3
|
|
2
|
+
import { ReactThreeFiber, Vector2 as FiberVector2, Vector3 as FiberVector3 } 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 = {
|
|
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<ReactThreeFiber.Object3DNode<Line2, typeof Line2>, 'args'> & Omit<ReactThreeFiber.Object3DNode<LineMaterial, [LineMaterialParameters]>, 'color' | 'vertexColors' | 'args'> & {
|
|
11
11
|
color?: ColorRepresentation;
|
|
12
|
-
}
|
|
12
|
+
};
|
|
13
13
|
export declare const Line: ForwardRefComponent<LineProps, Line2 | LineSegments2>;
|
package/core/MapControls.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ReactThreeFiber
|
|
1
|
+
import { ReactThreeFiber } from '@react-three/fiber';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { MapControls as MapControlsImpl } from 'three-stdlib';
|
|
4
|
-
import { ForwardRefComponent
|
|
5
|
-
export type MapControlsProps =
|
|
4
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
export type MapControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber.Object3DNode<MapControlsImpl, typeof MapControlsImpl>, {
|
|
6
6
|
target?: ReactThreeFiber.Vector3;
|
|
7
7
|
camera?: THREE.Camera;
|
|
8
8
|
makeDefault?: boolean;
|
|
@@ -10,5 +10,5 @@ export type MapControlsProps = Omit<Overwrite<ThreeElement<typeof MapControlsImp
|
|
|
10
10
|
onStart?: (e?: THREE.Event) => void;
|
|
11
11
|
onEnd?: (e?: THREE.Event) => void;
|
|
12
12
|
domElement?: HTMLElement;
|
|
13
|
-
}
|
|
13
|
+
}>;
|
|
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';
|
|
5
4
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
6
5
|
export type MarchingCubesProps = {
|
|
7
6
|
resolution?: number;
|
|
8
7
|
maxPolyCount?: number;
|
|
9
8
|
enableUvs?: boolean;
|
|
10
9
|
enableColors?: boolean;
|
|
11
|
-
} &
|
|
10
|
+
} & JSX.IntrinsicElements['group'];
|
|
12
11
|
export declare const MarchingCubes: ForwardRefComponent<MarchingCubesProps, MarchingCubesImpl>;
|
|
13
|
-
|
|
12
|
+
type MarchingCubeProps = {
|
|
14
13
|
strength?: number;
|
|
15
14
|
subtract?: number;
|
|
16
15
|
color?: Color;
|
|
17
|
-
} &
|
|
16
|
+
} & JSX.IntrinsicElements['group'];
|
|
18
17
|
export declare const MarchingCube: ForwardRefComponent<MarchingCubeProps, THREE.Group>;
|
|
19
|
-
|
|
18
|
+
type MarchingPlaneProps = {
|
|
20
19
|
planeType?: 'x' | 'y' | 'z';
|
|
21
20
|
strength?: number;
|
|
22
21
|
subtract?: number;
|
|
23
|
-
} &
|
|
22
|
+
} & JSX.IntrinsicElements['group'];
|
|
24
23
|
export declare const MarchingPlane: ForwardRefComponent<MarchingPlaneProps, THREE.Group>;
|
|
24
|
+
export {};
|
package/core/Mask.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
3
|
-
|
|
4
|
-
export type MaskProps = Omit<ThreeElements['mesh'], 'ref' | 'id'> & {
|
|
3
|
+
type Props = Omit<JSX.IntrinsicElements['mesh'], 'id'> & {
|
|
5
4
|
id: number;
|
|
6
5
|
colorWrite?: boolean;
|
|
7
6
|
depthWrite?: boolean;
|
|
8
7
|
};
|
|
9
|
-
export declare const Mask: ForwardRefComponent<
|
|
8
|
+
export declare const Mask: ForwardRefComponent<Props, THREE.Mesh>;
|
|
10
9
|
export declare function useMask(id: number, inverse?: boolean): {
|
|
11
10
|
stencilWrite: boolean;
|
|
12
11
|
stencilRef: number;
|
|
@@ -15,3 +14,4 @@ export declare function useMask(id: number, inverse?: boolean): {
|
|
|
15
14
|
stencilZFail: 7680;
|
|
16
15
|
stencilZPass: 7680;
|
|
17
16
|
};
|
|
17
|
+
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ShaderMaterial } from 'three';
|
|
2
|
-
import {
|
|
2
|
+
import { ReactThreeFiber } from '@react-three/fiber';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
declare global {
|
|
5
|
+
namespace JSX {
|
|
6
|
+
interface IntrinsicElements {
|
|
7
|
+
discardMaterialImpl: ReactThreeFiber.ShaderMaterialProps;
|
|
8
|
+
}
|
|
7
9
|
}
|
|
8
10
|
}
|
|
9
|
-
export
|
|
10
|
-
export declare const MeshDiscardMaterial: ForwardRefComponent<MeshDiscardMaterialProps, ShaderMaterial>;
|
|
11
|
+
export declare const MeshDiscardMaterial: ForwardRefComponent<JSX.IntrinsicElements['shaderMaterial'], ShaderMaterial>;
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { IUniform, MeshPhysicalMaterial, MeshPhysicalMaterialParameters } from 'three';
|
|
2
|
-
import { ThreeElements } from '@react-three/fiber';
|
|
3
2
|
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
|
+
}
|
|
4
19
|
interface Uniform<T> {
|
|
5
20
|
value: T;
|
|
6
21
|
}
|
|
@@ -22,18 +37,5 @@ declare class DistortMaterialImpl extends MeshPhysicalMaterial {
|
|
|
22
37
|
get radius(): number;
|
|
23
38
|
set radius(v: number);
|
|
24
39
|
}
|
|
25
|
-
declare
|
|
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>;
|
|
40
|
+
export declare const MeshDistortMaterial: ForwardRefComponent<Props, DistortMaterialImpl>;
|
|
39
41
|
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: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
|
+
"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,19 +1,22 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ReactThreeFiber } from '@react-three/fiber';
|
|
4
|
+
export type PortalMaterialType = {
|
|
5
|
+
resolution: ReactThreeFiber.Vector2;
|
|
6
|
+
blur: number;
|
|
7
|
+
blend: number;
|
|
8
|
+
size?: number;
|
|
9
|
+
sdf?: THREE.Texture;
|
|
10
|
+
map?: THREE.Texture;
|
|
11
|
+
} & JSX.IntrinsicElements['shaderMaterial'];
|
|
12
|
+
declare global {
|
|
13
|
+
namespace JSX {
|
|
14
|
+
interface IntrinsicElements {
|
|
15
|
+
portalMaterialImpl: PortalMaterialType;
|
|
16
|
+
}
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
|
-
export type PortalProps =
|
|
19
|
+
export type PortalProps = JSX.IntrinsicElements['shaderMaterial'] & {
|
|
17
20
|
blend?: number;
|
|
18
21
|
blur?: number;
|
|
19
22
|
resolution?: number;
|
|
@@ -22,4 +25,4 @@ export type PortalProps = Omit<ThreeElements['portalMaterialImpl'], 'ref' | 'ble
|
|
|
22
25
|
renderPriority?: number;
|
|
23
26
|
events?: boolean;
|
|
24
27
|
};
|
|
25
|
-
export declare const MeshPortalMaterial:
|
|
28
|
+
export declare const MeshPortalMaterial: React.ForwardRefExoticComponent<Omit<PortalProps, "ref"> & React.RefAttributes<PortalMaterialType>>;
|
|
@@ -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
|
|
81
|
+
parent.current = (_ref$current = ref.current) == null ? void 0 : _ref$current.__r3f.parent;
|
|
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
|
|
204
|
+
let parent = material == null || (_material$current = material.current) == null ? void 0 : _material$current.__r3f.parent;
|
|
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"),s=require("../materials/MeshReflectorMaterial.cjs.js");function o(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=o(e),u=i(t);const d=u.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:o=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:s.MeshReflectorMaterial});const w=a.useThree((({gl:e})=>e)),b=a.useThree((({camera:e})=>e)),R=a.useThree((({scene:e})=>e)),j=(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)?void 0:e.__r3f.parent);if(!t)return;if(B.setFromMatrixPosition(t.matrixWorld),_.setFromMatrixPosition(b.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(b.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=b.far,I.updateMatrixWorld(),I.projectionMatrix.copy(b.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}),[b,T]),[C,k,L,z]=u.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,type:r.HalfFloatType},s=new r.WebGLRenderTarget(o,o,a);s.depthBuffer=!0,s.depthTexture=new r.DepthTexture(o,o),s.depthTexture.format=r.DepthFormat,s.depthTexture.type=r.UnsignedShortType;const l=new r.WebGLRenderTarget(o,o,a);return[s,l,new n.BlurPass({gl:w,resolution:o,width:i[0],height:i[1],minDepthThreshold:d,maxDepthThreshold:c,depthScale:p,depthToBlurRatioBias:m}),{mirror:h,textureMatrix:W,mixBlur:e,tDiffuse:s.texture,tDepth:s.depthTexture,tDiffuseBlur:l.texture,hasBlur:j,mixStrength:t,minDepthThreshold:d,maxDepthThreshold:c,depthScale:p,depthToBlurRatioBias:m,distortion:f,distortionMap:M,mixContrast:x,"defines-USE_BLUR":j?"":void 0,"defines-USE_DEPTH":p>0?"":void 0,"defines-USE_DISTORTION":M?"":void 0}]}),[w,i,W,o,h,j,e,t,d,c,p,m,f,M,x]);return a.useFrame((()=>{var e;const t=v.current.parent||(null==(e=v.current)?void 0:e.__r3f.parent);if(!t)return;t.visible=!1;const r=w.xr.enabled,a=w.shadowMap.autoUpdate;q(),w.xr.enabled=!1,w.shadowMap.autoUpdate=!1,w.setRenderTarget(C),w.state.buffers.depth.setMask(!0),w.autoClear||w.clear(),w.render(R,I),j&&L.render(w,C,k),w.xr.enabled=r,w.shadowMap.autoUpdate=a,t.visible=!0,w.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,14 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MeshReflectorMaterial as MeshReflectorMaterialImpl } from '../materials/MeshReflectorMaterial';
|
|
1
|
+
import { Texture } from 'three';
|
|
2
|
+
import { MeshReflectorMaterialProps, MeshReflectorMaterial as MeshReflectorMaterialImpl } from '../materials/MeshReflectorMaterial';
|
|
3
3
|
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
-
|
|
5
|
-
interface ThreeElements {
|
|
6
|
-
meshReflectorMaterialImpl: ThreeElement<typeof MeshReflectorMaterialImpl>;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export type MeshReflectorMaterialProps = ThreeElements['meshReflectorMaterialImpl'] & {
|
|
4
|
+
type Props = JSX.IntrinsicElements['meshStandardMaterial'] & {
|
|
10
5
|
resolution?: number;
|
|
6
|
+
mixBlur?: number;
|
|
7
|
+
mixStrength?: number;
|
|
11
8
|
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;
|
|
12
17
|
reflectorOffset?: number;
|
|
13
18
|
};
|
|
14
|
-
|
|
19
|
+
declare global {
|
|
20
|
+
namespace JSX {
|
|
21
|
+
interface IntrinsicElements {
|
|
22
|
+
meshReflectorMaterialImpl: MeshReflectorMaterialProps;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export declare const MeshReflectorMaterial: ForwardRefComponent<Props, MeshReflectorMaterialImpl>;
|
|
27
|
+
export {};
|
|
@@ -51,7 +51,8 @@ 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
|
-
|
|
54
|
+
// TODO: As of R3f 7-8 this should be __r3f.parent
|
|
55
|
+
const parent = materialRef.current.parent || ((_materialRef$current = materialRef.current) == null ? void 0 : _materialRef$current.__r3f.parent);
|
|
55
56
|
if (!parent) return;
|
|
56
57
|
reflectorWorldPosition.setFromMatrixPosition(parent.matrixWorld);
|
|
57
58
|
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
|
|
@@ -148,7 +149,8 @@ const MeshReflectorMaterial = /* @__PURE__ */React.forwardRef(({
|
|
|
148
149
|
}, [gl, blur, textureMatrix, resolution, mirror, hasBlur, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, distortion, distortionMap, mixContrast]);
|
|
149
150
|
useFrame(() => {
|
|
150
151
|
var _materialRef$current2;
|
|
151
|
-
|
|
152
|
+
// TODO: As of R3f 7-8 this should be __r3f.parent
|
|
153
|
+
const parent = materialRef.current.parent || ((_materialRef$current2 = materialRef.current) == null ? void 0 : _materialRef$current2.__r3f.parent);
|
|
152
154
|
if (!parent) return;
|
|
153
155
|
parent.visible = false;
|
|
154
156
|
const currentXrEnabled = gl.xr.enabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three-mesh-bvh"),a=require("../materials/MeshRefractionMaterial.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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)}require("three"),require("./shaderMaterial.cjs.js"),require("../helpers/constants.cjs.js");var o=i(e),s=u(r);exports.MeshRefractionMaterial=function({aberrationStrength:e=0,fastChroma:i=!0,envMap:u,...c}){t.extend({MeshRefractionMaterial:a.MeshRefractionMaterial});const l=r.useRef(
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three-mesh-bvh"),a=require("../materials/MeshRefractionMaterial.cjs.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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)}require("three"),require("./shaderMaterial.cjs.js"),require("../helpers/constants.cjs.js");var o=i(e),s=u(r);exports.MeshRefractionMaterial=function({aberrationStrength:e=0,fastChroma:i=!0,envMap:u,...c}){t.extend({MeshRefractionMaterial:a.MeshRefractionMaterial});const l=r.useRef(),{size:f}=t.useThree(),h=r.useMemo((()=>{var r,t;const n={},a=(o=u)&&o.isCubeTexture;var o;const s=(null!==(r=a?null==(t=u.image[0])?void 0:t.width:u.image.width)&&void 0!==r?r:1024)/4,c=Math.floor(Math.log2(s)),l=Math.pow(2,c),f=3*Math.max(l,112),h=4*l;return a&&(n.ENVMAP_TYPE_CUBEM=""),n.CUBEUV_TEXEL_WIDTH=""+1/f,n.CUBEUV_TEXEL_HEIGHT=""+1/h,n.CUBEUV_MAX_MIP=`${c}.0`,e>0&&(n.CHROMATIC_ABERRATIONS=""),i&&(n.FAST_CHROMA=""),n}),[e,i]);return r.useLayoutEffect((()=>{var e;const r=null==(e=l.current)||null==(e=e.__r3f)||null==(e=e.parent)?void 0:e.geometry;r&&(l.current.bvh=new n.MeshBVHUniformStruct,l.current.bvh.updateFrom(new n.MeshBVH(r.clone().toNonIndexed(),{strategy:n.SAH})))}),[]),t.useFrame((({camera:e})=>{l.current.viewMatrixInverse=e.matrixWorld,l.current.projectionMatrixInverse=e.projectionMatrixInverse})),s.createElement("meshRefractionMaterial",o.default({key:JSON.stringify(h),defines:h,ref:l,resolution:[f.width,f.height],aberrationStrength:e,envMap:u},c))};
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { ReactThreeFiber
|
|
3
|
+
import { ReactThreeFiber } from '@react-three/fiber';
|
|
4
4
|
import { MeshRefractionMaterial as MeshRefractionMaterial_ } from '../materials/MeshRefractionMaterial';
|
|
5
|
-
declare
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
declare global {
|
|
6
|
+
namespace JSX {
|
|
7
|
+
interface IntrinsicElements {
|
|
8
|
+
meshRefractionMaterial: typeof MeshRefractionMaterial_;
|
|
9
|
+
}
|
|
8
10
|
}
|
|
9
11
|
}
|
|
10
|
-
|
|
12
|
+
type MeshRefractionMaterialProps = JSX.IntrinsicElements['shaderMaterial'] & {
|
|
11
13
|
envMap: THREE.CubeTexture | THREE.Texture;
|
|
12
14
|
bounces?: number;
|
|
13
15
|
ior?: number;
|
|
@@ -17,3 +19,4 @@ export type MeshRefractionMaterialProps = ThreeElements['shaderMaterial'] & {
|
|
|
17
19
|
fastChroma?: boolean;
|
|
18
20
|
};
|
|
19
21
|
export declare function MeshRefractionMaterial({ aberrationStrength, fastChroma, envMap, ...props }: MeshRefractionMaterialProps): React.JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -15,7 +15,7 @@ function MeshRefractionMaterial({
|
|
|
15
15
|
extend({
|
|
16
16
|
MeshRefractionMaterial: MeshRefractionMaterial$1
|
|
17
17
|
});
|
|
18
|
-
const material = useRef(
|
|
18
|
+
const material = useRef();
|
|
19
19
|
const {
|
|
20
20
|
size
|
|
21
21
|
} = useThree();
|
|
@@ -42,7 +42,7 @@ function MeshRefractionMaterial({
|
|
|
42
42
|
useLayoutEffect(() => {
|
|
43
43
|
var _material$current;
|
|
44
44
|
// Get the geometry of this materials parent
|
|
45
|
-
const geometry = (_material$current = material.current) == null || (_material$current = _material$current.__r3f) == null || (_material$current = _material$current.parent) == null
|
|
45
|
+
const geometry = (_material$current = material.current) == null || (_material$current = _material$current.__r3f) == null || (_material$current = _material$current.parent) == null ? void 0 : _material$current.geometry;
|
|
46
46
|
// Update the BVH
|
|
47
47
|
if (geometry) {
|
|
48
48
|
material.current.bvh = new MeshBVHUniformStruct();
|