@react-three/drei 7.25.4 → 7.27.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.
Files changed (59) hide show
  1. package/README.md +1661 -0
  2. package/core/ArcballControls.d.ts +1 -1
  3. package/core/Backdrop.js +3 -1
  4. package/core/BakeShadows.cjs.js +1 -1
  5. package/core/BakeShadows.js +3 -3
  6. package/core/Bounds.cjs.js +1 -1
  7. package/core/Bounds.js +2 -2
  8. package/core/DeviceOrientationControls.d.ts +1 -1
  9. package/core/Instances.cjs.js +1 -1
  10. package/core/Instances.js +1 -1
  11. package/core/Line.d.ts +1 -1
  12. package/core/MapControls.d.ts +1 -1
  13. package/core/MeshDistortMaterial.d.ts +1 -1
  14. package/core/MeshReflectorMaterial.cjs.js +1 -0
  15. package/core/MeshReflectorMaterial.d.ts +25 -0
  16. package/core/MeshReflectorMaterial.js +180 -0
  17. package/core/MeshWobbleMaterial.d.ts +1 -1
  18. package/core/OrbitControls.d.ts +1 -1
  19. package/core/PositionalAudio.d.ts +1 -1
  20. package/core/QuadraticBezierLine.js +5 -1
  21. package/core/Reflector.cjs.js +1 -1
  22. package/core/Reflector.d.ts +4 -5
  23. package/core/Reflector.js +34 -49
  24. package/core/SpotLight.d.ts +1 -1
  25. package/core/Text.d.ts +1 -1
  26. package/core/TrackballControls.d.ts +1 -1
  27. package/core/TransformControls.d.ts +1 -1
  28. package/core/index.cjs.js +1 -1
  29. package/core/index.d.ts +1 -0
  30. package/core/index.js +4 -1
  31. package/core/useDetectGPU.cjs.js +1 -1
  32. package/core/useDetectGPU.d.ts +1 -1
  33. package/core/useDetectGPU.js +1 -5
  34. package/index.cjs.js +1 -1
  35. package/index.js +2 -1
  36. package/materials/BlurPass.cjs.js +1 -0
  37. package/materials/BlurPass.d.ts +23 -0
  38. package/materials/BlurPass.js +75 -0
  39. package/materials/ConvolutionMaterial.cjs.js +1 -0
  40. package/materials/ConvolutionMaterial.d.ts +7 -0
  41. package/materials/ConvolutionMaterial.js +97 -0
  42. package/materials/MeshReflectorMaterial.cjs.js +1 -1
  43. package/materials/MeshReflectorMaterial.d.ts +10 -66
  44. package/materials/MeshReflectorMaterial.js +65 -313
  45. package/native/index.cjs.js +1 -1
  46. package/native/index.d.ts +0 -1
  47. package/native/index.js +4 -1
  48. package/package.json +3 -1
  49. package/web/PresentationControls.cjs.js +1 -0
  50. package/web/PresentationControls.d.ts +14 -0
  51. package/web/PresentationControls.js +73 -0
  52. package/web/ScrollControls.cjs.js +1 -1
  53. package/web/ScrollControls.js +1 -1
  54. package/web/index.cjs.js +1 -1
  55. package/web/index.d.ts +1 -1
  56. package/web/index.js +7 -1
  57. package/materials/index.cjs.js +0 -1
  58. package/materials/index.d.ts +0 -1
  59. package/materials/index.js +0 -2
package/core/Reflector.js CHANGED
@@ -1,18 +1,19 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as React from 'react';
3
- import { Plane, Vector3, Matrix4, Vector4, PerspectiveCamera, LinearFilter, RGBFormat, WebGLRenderTarget, DepthTexture, DepthFormat, UnsignedShortType, Vector2 } from 'three';
3
+ import { Plane, Vector3, Matrix4, Vector4, PerspectiveCamera, LinearFilter, RGBFormat, WebGLRenderTarget, DepthTexture, DepthFormat, UnsignedShortType } from 'three';
4
4
  import { extend, useThree, useFrame } from '@react-three/fiber';
5
5
  import mergeRefs from 'react-merge-refs';
6
+ import { BlurPass } from '../materials/BlurPass.js';
6
7
  import { MeshReflectorMaterial } from '../materials/MeshReflectorMaterial.js';
7
8
 
8
9
  extend({
9
10
  MeshReflectorMaterial
10
11
  });
11
- const MIPMAP_NUM = 8;
12
12
  const Reflector = /*#__PURE__*/React.forwardRef(({
13
13
  mixBlur = 0.0,
14
14
  mixStrength = 0.5,
15
15
  resolution = 256,
16
+ blur = [0, 0],
16
17
  args = [1, 1],
17
18
  minDepthThreshold = 0.9,
18
19
  maxDepthThreshold = 1,
@@ -25,6 +26,9 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
25
26
  distortionMap,
26
27
  ...props
27
28
  }, ref) => {
29
+ React.useEffect(() => {
30
+ console.warn('Reflector has been deprecated and will be removed next major. Replace it with <MeshReflectorMaterial />!');
31
+ }, []);
28
32
  const gl = useThree(({
29
33
  gl
30
34
  }) => gl);
@@ -34,6 +38,8 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
34
38
  const scene = useThree(({
35
39
  scene
36
40
  }) => scene);
41
+ blur = Array.isArray(blur) ? blur : [blur, blur];
42
+ const hasBlur = blur[0] + blur[1] > 0;
37
43
  const meshRef = React.useRef(null);
38
44
  const [reflectorPlane] = React.useState(() => new Plane());
39
45
  const [normal] = React.useState(() => new Vector3());
@@ -47,24 +53,6 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
47
53
  const [q] = React.useState(() => new Vector4());
48
54
  const [textureMatrix] = React.useState(() => new Matrix4());
49
55
  const [virtualCamera] = React.useState(() => new PerspectiveCamera());
50
- const [renderTargets] = React.useState(() => {
51
- const renderTargets = [];
52
- const pars = {
53
- minFilter: LinearFilter,
54
- magFilter: LinearFilter,
55
- format: RGBFormat,
56
- encoding: gl.outputEncoding
57
- };
58
-
59
- for (let i = 0; i < MIPMAP_NUM; i++) {
60
- const res = Math.max(8, Math.round(resolution / Math.pow(2, i)));
61
- const renderTarget = new WebGLRenderTarget(res, res, pars);
62
- renderTarget.texture.generateMipmaps = false;
63
- renderTargets.push(renderTarget);
64
- }
65
-
66
- return renderTargets;
67
- });
68
56
  const beforeRender = React.useCallback(() => {
69
57
  reflectorWorldPosition.setFromMatrixPosition(meshRef.current.matrixWorld);
70
58
  cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
@@ -113,9 +101,9 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
113
101
  projectionMatrix.elements[2] = clipPlane.x;
114
102
  projectionMatrix.elements[6] = clipPlane.y;
115
103
  projectionMatrix.elements[10] = clipPlane.z + 1.0;
116
- projectionMatrix.elements[14] = clipPlane.w;
117
- }, [camera.far, camera.matrixWorld, camera.projectionMatrix, cameraWorldPosition, clipPlane, lookAtPosition, normal, q, reflectorPlane, reflectorWorldPosition, rotationMatrix, target, textureMatrix, view, virtualCamera]);
118
- const [fbo1, reflectorProps] = React.useMemo(() => {
104
+ projectionMatrix.elements[14] = clipPlane.w; // eslint-disable-next-line react-hooks/exhaustive-deps
105
+ }, []);
106
+ const [fbo1, fbo2, blurpass, reflectorProps] = React.useMemo(() => {
119
107
  const parameters = {
120
108
  minFilter: LinearFilter,
121
109
  magFilter: LinearFilter,
@@ -123,39 +111,44 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
123
111
  encoding: gl.outputEncoding
124
112
  };
125
113
  const fbo1 = new WebGLRenderTarget(resolution, resolution, parameters);
126
-
127
- if (depthScale > 0) {
128
- fbo1.depthBuffer = true;
129
- fbo1.depthTexture = new DepthTexture(resolution, resolution);
130
- fbo1.depthTexture.format = DepthFormat;
131
- fbo1.depthTexture.type = UnsignedShortType;
132
- }
133
-
134
- const mipmaps = renderTargets.reduce((acc, fbo, index) => {
135
- acc[`u_mipmap_${index}`] = fbo.texture;
136
- acc[`u_mipmap_res_${index}`] = new Vector2(fbo.width, fbo.height);
137
- return acc;
138
- }, {});
114
+ fbo1.depthBuffer = true;
115
+ fbo1.depthTexture = new DepthTexture(resolution, resolution);
116
+ fbo1.depthTexture.format = DepthFormat;
117
+ fbo1.depthTexture.type = UnsignedShortType;
118
+ const fbo2 = new WebGLRenderTarget(resolution, resolution, parameters);
119
+ const blurpass = new BlurPass({
120
+ gl,
121
+ resolution,
122
+ width: blur[0],
123
+ height: blur[1],
124
+ minDepthThreshold,
125
+ maxDepthThreshold,
126
+ depthScale,
127
+ depthToBlurRatioBias
128
+ });
139
129
  const reflectorProps = {
140
130
  mirror,
141
131
  textureMatrix,
142
132
  mixBlur,
143
133
  tDiffuse: fbo1.texture,
144
134
  tDepth: fbo1.depthTexture,
135
+ tDiffuseBlur: fbo2.texture,
136
+ hasBlur,
145
137
  mixStrength,
146
138
  minDepthThreshold,
147
139
  maxDepthThreshold,
148
140
  depthScale,
149
141
  depthToBlurRatioBias,
142
+ transparent: true,
150
143
  debug,
151
144
  distortion,
152
145
  distortionMap,
146
+ 'defines-USE_BLUR': hasBlur ? '' : undefined,
153
147
  'defines-USE_DEPTH': depthScale > 0 ? '' : undefined,
154
- 'defines-USE_DISTORTION': distortionMap ? '' : undefined,
155
- ...mipmaps
148
+ 'defines-USE_DISTORTION': distortionMap ? '' : undefined
156
149
  };
157
- return [fbo1, reflectorProps];
158
- }, [gl, textureMatrix, resolution, mirror, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, debug, distortion, distortionMap, renderTargets]);
150
+ return [fbo1, fbo2, blurpass, reflectorProps];
151
+ }, [gl, blur, textureMatrix, resolution, mirror, hasBlur, mixBlur, mixStrength, minDepthThreshold, maxDepthThreshold, depthScale, depthToBlurRatioBias, debug, distortion, distortionMap]);
159
152
  useFrame(() => {
160
153
  if (!(meshRef != null && meshRef.current)) return;
161
154
  meshRef.current.visible = false;
@@ -168,15 +161,7 @@ const Reflector = /*#__PURE__*/React.forwardRef(({
168
161
  gl.state.buffers.depth.setMask(true);
169
162
  if (!gl.autoClear) gl.clear();
170
163
  gl.render(scene, virtualCamera);
171
-
172
- if (mixBlur !== 0) {
173
- renderTargets.forEach(fbo => {
174
- gl.setRenderTarget(fbo);
175
- gl.state.buffers.depth.setMask(true);
176
- gl.render(scene, virtualCamera);
177
- });
178
- }
179
-
164
+ if (hasBlur) blurpass.render(gl, fbo1, fbo2);
180
165
  gl.xr.enabled = currentXrEnabled;
181
166
  gl.shadowMap.autoUpdate = currentShadowAutoUpdate;
182
167
  meshRef.current.visible = true;
@@ -7,5 +7,5 @@ declare const SpotLight: React.ForwardRefExoticComponent<Pick<Omit<import("@reac
7
7
  attenuation?: number | undefined;
8
8
  anglePower?: number | undefined;
9
9
  color?: string | number | undefined;
10
- }, "visible" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "distance" | "target" | "intensity" | "isLight" | "shadow" | "shadowCameraFov" | "shadowCameraLeft" | "shadowCameraRight" | "shadowCameraTop" | "shadowCameraBottom" | "shadowCameraNear" | "shadowCameraFar" | "shadowBias" | "shadowMapWidth" | "shadowMapHeight" | "decay" | "power" | "depthBuffer" | "angle" | "penumbra" | "isSpotLight" | "attenuation" | "anglePower"> & React.RefAttributes<SpotLightImpl>>;
10
+ }, "visible" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "distance" | "decay" | "target" | "angle" | "intensity" | "isLight" | "shadow" | "shadowCameraFov" | "shadowCameraLeft" | "shadowCameraRight" | "shadowCameraTop" | "shadowCameraBottom" | "shadowCameraNear" | "shadowCameraFar" | "shadowBias" | "shadowMapWidth" | "shadowMapHeight" | "power" | "depthBuffer" | "penumbra" | "isSpotLight" | "attenuation" | "anglePower"> & React.RefAttributes<SpotLightImpl>>;
11
11
  export { SpotLight };
package/core/Text.d.ts CHANGED
@@ -45,5 +45,5 @@ export declare const Text: React.ForwardRefExoticComponent<Pick<Omit<ReactThreeF
45
45
  strokeOpacity?: number | undefined;
46
46
  fillOpacity?: number | undefined;
47
47
  debugSDF?: boolean | undefined;
48
- onSync?: ((troika: any) => void) | undefined;
48
+ onSync?: ((troika: TextMeshImpl) => void) | undefined;
49
49
  }, "visible" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "font" | "material" | "direction" | "fontSize" | "letterSpacing" | "lineHeight" | "maxWidth" | "outlineColor" | "outlineWidth" | "overflowWrap" | "textAlign" | "whiteSpace" | "fillOpacity" | "strokeOpacity" | "strokeWidth" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "anchorX" | "anchorY" | "onSync" | "clipRect" | "depthOffset" | "outlineOffsetX" | "outlineOffsetY" | "outlineBlur" | "outlineOpacity" | "strokeColor" | "debugSDF"> & React.RefAttributes<unknown>>;
@@ -12,4 +12,4 @@ export declare type TrackballControlsProps = ReactThreeFiber.Overwrite<ReactThre
12
12
  onStart?: (e?: THREE.Event) => void;
13
13
  onEnd?: (e?: THREE.Event) => void;
14
14
  }>;
15
- export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "connect" | "target" | "makeDefault" | "update" | "domElement" | "minDistance" | "maxDistance" | "zoomSpeed" | "rotateSpeed" | "panSpeed" | "keys" | "mouseButtons" | "onStart" | "onEnd" | "regress" | "noRotate" | "noZoom" | "noPan" | "staticMoving" | "dynamicDampingFactor" | "cursorZoom" | "handleResize"> & React.RefAttributes<TrackballControlsImpl>>;
15
+ export declare const TrackballControls: React.ForwardRefExoticComponent<Pick<TrackballControlsProps, "object" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "screen" | "reset" | "enabled" | "update" | "onStart" | "keys" | "target" | "connect" | "makeDefault" | "domElement" | "minDistance" | "maxDistance" | "zoomSpeed" | "rotateSpeed" | "panSpeed" | "mouseButtons" | "onEnd" | "regress" | "noRotate" | "noZoom" | "noPan" | "staticMoving" | "dynamicDampingFactor" | "cursorZoom" | "handleResize"> & React.RefAttributes<TrackballControlsImpl>>;
@@ -22,4 +22,4 @@ export declare type TransformControlsProps = ReactThreeFiber.Object3DNode<Transf
22
22
  onMouseUp?: (e?: THREE.Event) => void;
23
23
  onObjectChange?: (e?: THREE.Event) => void;
24
24
  };
25
- export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "enabled" | "setSize" | "update" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
25
+ export declare const TransformControls: React.ForwardRefExoticComponent<Pick<TransformControlsProps, "object" | "visible" | "attach" | "attachArray" | "attachObject" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "isGroup" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "userData" | "customDepthMaterial" | "customDistanceMaterial" | "isObject3D" | "onBeforeRender" | "onAfterRender" | "applyMatrix4" | "applyQuaternion" | "setRotationFromAxisAngle" | "setRotationFromEuler" | "setRotationFromMatrix" | "setRotationFromQuaternion" | "rotateOnAxis" | "rotateOnWorldAxis" | "rotateX" | "rotateY" | "rotateZ" | "translateOnAxis" | "translateX" | "translateY" | "translateZ" | "localToWorld" | "worldToLocal" | "lookAt" | "add" | "remove" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "onChange" | "onMouseDown" | "onMouseUp" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "camera" | "size" | "space" | "enabled" | "update" | "axis" | "setSize" | "isTransformControls" | "detach" | "getMode" | "setMode" | "setTranslationSnap" | "setRotationSnap" | "setScaleSnap" | "setSpace" | "onObjectChange" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "showX" | "showY" | "showZ"> & React.RefAttributes<TransformControlsImpl<THREE.Camera>>>;
package/core/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),c=require("./Image.cjs.js"),j=require("./OrthographicCamera.cjs.js"),p=require("./PerspectiveCamera.cjs.js"),n=require("./CubeCamera.cjs.js"),l=require("./DeviceOrientationControls.cjs.js"),x=require("./FlyControls.cjs.js"),q=require("./MapControls.cjs.js"),d=require("./OrbitControls.cjs.js"),h=require("./TrackballControls.cjs.js"),C=require("./ArcballControls.cjs.js"),m=require("./TransformControls.cjs.js"),B=require("./PointerLockControls.cjs.js"),S=require("./FirstPersonControls.cjs.js"),b=require("./GizmoHelper.cjs.js"),f=require("./GizmoViewcube.cjs.js"),P=require("./GizmoViewport.cjs.js"),T=require("./useCubeTexture.cjs.js"),g=require("./useFBX.cjs.js"),M=require("./useGLTF.cjs.js"),v=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),L=require("./Stats.cjs.js"),A=require("./DepthBuffer.cjs.js"),G=require("./useDepthBuffer.cjs.js"),k=require("./useAspect.cjs.js"),F=require("./useCamera.cjs.js"),w=require("./useDetectGPU.cjs.js"),z=require("./useHelper.cjs.js"),I=require("./useBVH.cjs.js"),O=require("./useContextBridge.cjs.js"),E=require("./useAnimations.cjs.js"),y=require("./useFBO.cjs.js"),H=require("./useIntersect.cjs.js"),R=require("./useSimplification.cjs.js"),V=require("./useTessellation.cjs.js"),Q=require("./useEdgeSplit.cjs.js"),W=require("./CurveModifier.cjs.js"),N=require("./MeshDistortMaterial.cjs.js"),U=require("./MeshWobbleMaterial.cjs.js"),X=require("./PointMaterial.cjs.js"),K=require("./shaderMaterial.cjs.js"),_=require("./softShadows.cjs.js"),J=require("./shapes.cjs.js"),Y=require("./RoundedBox.cjs.js"),Z=require("./ScreenQuad.cjs.js"),$=require("./Center.cjs.js"),ee=require("./Bounds.cjs.js"),re=require("./CameraShake.cjs.js"),se=require("./Float.cjs.js"),te=require("./Stage.cjs.js"),oe=require("./Backdrop.cjs.js"),ie=require("./Shadow.cjs.js"),ue=require("./ContactShadows.cjs.js"),ae=require("./Reflector.cjs.js"),ce=require("./SpotLight.cjs.js"),je=require("./Environment.cjs.js"),pe=require("./Sky.cjs.js"),ne=require("./Stars.cjs.js"),le=require("./Cloud.cjs.js"),xe=require("./useMatcapTexture.cjs.js"),qe=require("./useNormalTexture.cjs.js"),de=require("./Points.cjs.js"),he=require("./Instances.cjs.js"),Ce=require("./Segments.cjs.js"),me=require("./Detailed.cjs.js"),Be=require("./Preload.cjs.js"),Se=require("./BakeShadows.cjs.js"),be=require("./meshBounds.cjs.js"),fe=require("./AdaptiveDpr.cjs.js"),Pe=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("use-asset"),require("three-mesh-bvh"),require("../helpers/environment-assets.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../assets/cloud.base64.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=t.Line,exports.PositionalAudio=o.PositionalAudio,exports.Text=i.Text,exports.Effects=u.Effects,exports.isWebGL2Available=u.isWebGL2Available,exports.GradientTexture=a.GradientTexture,exports.Image=c.Image,exports.OrthographicCamera=j.OrthographicCamera,exports.PerspectiveCamera=p.PerspectiveCamera,exports.CubeCamera=n.CubeCamera,exports.DeviceOrientationControls=l.DeviceOrientationControls,exports.FlyControls=x.FlyControls,exports.MapControls=q.MapControls,exports.OrbitControls=d.OrbitControls,exports.TrackballControls=h.TrackballControls,exports.ArcballControls=C.ArcballControls,exports.TransformControls=m.TransformControls,exports.PointerLockControls=B.PointerLockControls,exports.FirstPersonControls=S.FirstPersonControls,exports.GizmoHelper=b.GizmoHelper,exports.useGizmoContext=b.useGizmoContext,exports.GizmoViewcube=f.GizmoViewcube,exports.GizmoViewport=P.GizmoViewport,exports.useCubeTexture=T.useCubeTexture,exports.useFBX=g.useFBX,exports.useGLTF=M.useGLTF,exports.useProgress=v.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Stats=L.Stats,exports.DepthBuffer=A.DepthBuffer,exports.useDepthBuffer=G.useDepthBuffer,exports.useAspect=k.useAspect,exports.useCamera=F.useCamera,exports.useDetectGPU=w.useDetectGPU,exports.useHelper=z.useHelper,exports.useBVH=I.useBVH,exports.useContextBridge=O.useContextBridge,exports.useAnimations=E.useAnimations,exports.useFBO=y.useFBO,exports.useIntersect=H.useIntersect,exports.useSimplification=R.useSimplification,exports.useTessellation=V.useTessellation,exports.useEdgeSplit=Q.useEdgeSplit,exports.CurveModifier=W.CurveModifier,exports.MeshDistortMaterial=N.MeshDistortMaterial,exports.MeshWobbleMaterial=U.MeshWobbleMaterial,exports.PointMaterial=X.PointMaterial,exports.PointMaterialImpl=X.PointMaterialImpl,exports.shaderMaterial=K.shaderMaterial,exports.softShadows=_.softShadows,exports.Box=J.Box,exports.Circle=J.Circle,exports.Cone=J.Cone,exports.Cylinder=J.Cylinder,exports.Dodecahedron=J.Dodecahedron,exports.Extrude=J.Extrude,exports.Icosahedron=J.Icosahedron,exports.Lathe=J.Lathe,exports.Octahedron=J.Octahedron,exports.Parametric=J.Parametric,exports.Plane=J.Plane,exports.Polyhedron=J.Polyhedron,exports.Ring=J.Ring,exports.Sphere=J.Sphere,exports.Tetrahedron=J.Tetrahedron,exports.Torus=J.Torus,exports.TorusKnot=J.TorusKnot,exports.Tube=J.Tube,exports.RoundedBox=Y.RoundedBox,exports.ScreenQuad=Z.ScreenQuad,exports.Center=$.Center,exports.Bounds=ee.Bounds,exports.useBounds=ee.useBounds,exports.CameraShake=re.CameraShake,exports.Float=se.Float,exports.Stage=te.Stage,exports.Backdrop=oe.Backdrop,exports.Shadow=ie.Shadow,exports.ContactShadows=ue.ContactShadows,exports.Reflector=ae.Reflector,exports.SpotLight=ce.SpotLight,exports.Environment=je.Environment,exports.Sky=pe.Sky,exports.calcPosFromAngles=pe.calcPosFromAngles,exports.Stars=ne.Stars,exports.Cloud=le.Cloud,exports.useMatcapTexture=xe.useMatcapTexture,exports.useNormalTexture=qe.useNormalTexture,exports.Point=de.Point,exports.Points=de.Points,exports.PointsBuffer=de.PointsBuffer,exports.Instance=he.Instance,exports.Instances=he.Instances,exports.Merged=he.Merged,exports.Segment=Ce.Segment,exports.Segments=Ce.Segments,exports.Detailed=me.Detailed,exports.Preload=Be.Preload,exports.BakeShadows=Se.BakeShadows,exports.meshBounds=be.meshBounds,exports.AdaptiveDpr=fe.AdaptiveDpr,exports.AdaptiveEvents=Pe.AdaptiveEvents;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Billboard.cjs.js"),r=require("./QuadraticBezierLine.cjs.js"),s=require("./CubicBezierLine.cjs.js"),t=require("./Line.cjs.js"),o=require("./PositionalAudio.cjs.js"),i=require("./Text.cjs.js"),u=require("./Effects.cjs.js"),a=require("./GradientTexture.cjs.js"),c=require("./Image.cjs.js"),j=require("./OrthographicCamera.cjs.js"),p=require("./PerspectiveCamera.cjs.js"),n=require("./CubeCamera.cjs.js"),l=require("./DeviceOrientationControls.cjs.js"),x=require("./FlyControls.cjs.js"),q=require("./MapControls.cjs.js"),d=require("./OrbitControls.cjs.js"),h=require("./TrackballControls.cjs.js"),C=require("./ArcballControls.cjs.js"),m=require("./TransformControls.cjs.js"),B=require("./PointerLockControls.cjs.js"),S=require("./FirstPersonControls.cjs.js"),f=require("./GizmoHelper.cjs.js"),b=require("./GizmoViewcube.cjs.js"),P=require("./GizmoViewport.cjs.js"),M=require("./useCubeTexture.cjs.js"),T=require("./useFBX.cjs.js"),g=require("./useGLTF.cjs.js"),v=require("./useProgress.cjs.js"),D=require("./useTexture.cjs.js"),L=require("./Stats.cjs.js"),A=require("./DepthBuffer.cjs.js"),G=require("./useDepthBuffer.cjs.js"),k=require("./useAspect.cjs.js"),F=require("./useCamera.cjs.js"),w=require("./useDetectGPU.cjs.js"),z=require("./useHelper.cjs.js"),I=require("./useBVH.cjs.js"),O=require("./useContextBridge.cjs.js"),E=require("./useAnimations.cjs.js"),R=require("./useFBO.cjs.js"),y=require("./useIntersect.cjs.js"),H=require("./useSimplification.cjs.js"),V=require("./useTessellation.cjs.js"),Q=require("./useEdgeSplit.cjs.js"),W=require("./CurveModifier.cjs.js"),N=require("./MeshDistortMaterial.cjs.js"),U=require("./MeshWobbleMaterial.cjs.js"),X=require("./MeshReflectorMaterial.cjs.js"),K=require("./PointMaterial.cjs.js"),_=require("./shaderMaterial.cjs.js"),J=require("./softShadows.cjs.js"),Y=require("./shapes.cjs.js"),Z=require("./RoundedBox.cjs.js"),$=require("./ScreenQuad.cjs.js"),ee=require("./Center.cjs.js"),re=require("./Bounds.cjs.js"),se=require("./CameraShake.cjs.js"),te=require("./Float.cjs.js"),oe=require("./Stage.cjs.js"),ie=require("./Backdrop.cjs.js"),ue=require("./Shadow.cjs.js"),ae=require("./ContactShadows.cjs.js"),ce=require("./Reflector.cjs.js"),je=require("./SpotLight.cjs.js"),pe=require("./Environment.cjs.js"),ne=require("./Sky.cjs.js"),le=require("./Stars.cjs.js"),xe=require("./Cloud.cjs.js"),qe=require("./useMatcapTexture.cjs.js"),de=require("./useNormalTexture.cjs.js"),he=require("./Points.cjs.js"),Ce=require("./Instances.cjs.js"),me=require("./Segments.cjs.js"),Be=require("./Detailed.cjs.js"),Se=require("./Preload.cjs.js"),fe=require("./BakeShadows.cjs.js"),be=require("./meshBounds.cjs.js"),Pe=require("./AdaptiveDpr.cjs.js"),Me=require("./AdaptiveEvents.cjs.js");require("@babel/runtime/helpers/extends"),require("react"),require("@react-three/fiber"),require("react-merge-refs"),require("three"),require("three-stdlib"),require("troika-three-text"),require("lodash.omit"),require("lodash.pick"),require("zustand"),require("three/examples/js/libs/stats.min"),require("../helpers/useEffectfulState.cjs.js"),require("detect-gpu"),require("use-asset"),require("three-mesh-bvh"),require("../materials/BlurPass.cjs.js"),require("../materials/ConvolutionMaterial.cjs.js"),require("../materials/MeshReflectorMaterial.cjs.js"),require("../helpers/environment-assets.cjs.js"),require("../materials/SpotLightMaterial.cjs.js"),require("../assets/cloud.base64.cjs.js"),require("../helpers/matcap-assets.cjs.js"),require("../helpers/normal-assets.cjs.js"),require("../helpers/Position.cjs.js"),require("react-composer"),exports.Billboard=e.Billboard,exports.QuadraticBezierLine=r.QuadraticBezierLine,exports.CubicBezierLine=s.CubicBezierLine,exports.Line=t.Line,exports.PositionalAudio=o.PositionalAudio,exports.Text=i.Text,exports.Effects=u.Effects,exports.isWebGL2Available=u.isWebGL2Available,exports.GradientTexture=a.GradientTexture,exports.Image=c.Image,exports.OrthographicCamera=j.OrthographicCamera,exports.PerspectiveCamera=p.PerspectiveCamera,exports.CubeCamera=n.CubeCamera,exports.DeviceOrientationControls=l.DeviceOrientationControls,exports.FlyControls=x.FlyControls,exports.MapControls=q.MapControls,exports.OrbitControls=d.OrbitControls,exports.TrackballControls=h.TrackballControls,exports.ArcballControls=C.ArcballControls,exports.TransformControls=m.TransformControls,exports.PointerLockControls=B.PointerLockControls,exports.FirstPersonControls=S.FirstPersonControls,exports.GizmoHelper=f.GizmoHelper,exports.useGizmoContext=f.useGizmoContext,exports.GizmoViewcube=b.GizmoViewcube,exports.GizmoViewport=P.GizmoViewport,exports.useCubeTexture=M.useCubeTexture,exports.useFBX=T.useFBX,exports.useGLTF=g.useGLTF,exports.useProgress=v.useProgress,exports.IsObject=D.IsObject,exports.useTexture=D.useTexture,exports.Stats=L.Stats,exports.DepthBuffer=A.DepthBuffer,exports.useDepthBuffer=G.useDepthBuffer,exports.useAspect=k.useAspect,exports.useCamera=F.useCamera,exports.useDetectGPU=w.useDetectGPU,exports.useHelper=z.useHelper,exports.useBVH=I.useBVH,exports.useContextBridge=O.useContextBridge,exports.useAnimations=E.useAnimations,exports.useFBO=R.useFBO,exports.useIntersect=y.useIntersect,exports.useSimplification=H.useSimplification,exports.useTessellation=V.useTessellation,exports.useEdgeSplit=Q.useEdgeSplit,exports.CurveModifier=W.CurveModifier,exports.MeshDistortMaterial=N.MeshDistortMaterial,exports.MeshWobbleMaterial=U.MeshWobbleMaterial,exports.MeshReflectorMaterial=X.MeshReflectorMaterial,exports.PointMaterial=K.PointMaterial,exports.PointMaterialImpl=K.PointMaterialImpl,exports.shaderMaterial=_.shaderMaterial,exports.softShadows=J.softShadows,exports.Box=Y.Box,exports.Circle=Y.Circle,exports.Cone=Y.Cone,exports.Cylinder=Y.Cylinder,exports.Dodecahedron=Y.Dodecahedron,exports.Extrude=Y.Extrude,exports.Icosahedron=Y.Icosahedron,exports.Lathe=Y.Lathe,exports.Octahedron=Y.Octahedron,exports.Parametric=Y.Parametric,exports.Plane=Y.Plane,exports.Polyhedron=Y.Polyhedron,exports.Ring=Y.Ring,exports.Sphere=Y.Sphere,exports.Tetrahedron=Y.Tetrahedron,exports.Torus=Y.Torus,exports.TorusKnot=Y.TorusKnot,exports.Tube=Y.Tube,exports.RoundedBox=Z.RoundedBox,exports.ScreenQuad=$.ScreenQuad,exports.Center=ee.Center,exports.Bounds=re.Bounds,exports.useBounds=re.useBounds,exports.CameraShake=se.CameraShake,exports.Float=te.Float,exports.Stage=oe.Stage,exports.Backdrop=ie.Backdrop,exports.Shadow=ue.Shadow,exports.ContactShadows=ae.ContactShadows,exports.Reflector=ce.Reflector,exports.SpotLight=je.SpotLight,exports.Environment=pe.Environment,exports.Sky=ne.Sky,exports.calcPosFromAngles=ne.calcPosFromAngles,exports.Stars=le.Stars,exports.Cloud=xe.Cloud,exports.useMatcapTexture=qe.useMatcapTexture,exports.useNormalTexture=de.useNormalTexture,exports.Point=he.Point,exports.Points=he.Points,exports.PointsBuffer=he.PointsBuffer,exports.Instance=Ce.Instance,exports.Instances=Ce.Instances,exports.Merged=Ce.Merged,exports.Segment=me.Segment,exports.Segments=me.Segments,exports.Detailed=Be.Detailed,exports.Preload=Se.Preload,exports.BakeShadows=fe.BakeShadows,exports.meshBounds=be.meshBounds,exports.AdaptiveDpr=Pe.AdaptiveDpr,exports.AdaptiveEvents=Me.AdaptiveEvents;
package/core/index.d.ts CHANGED
@@ -45,6 +45,7 @@ export * from './useEdgeSplit';
45
45
  export * from './CurveModifier';
46
46
  export * from './MeshDistortMaterial';
47
47
  export * from './MeshWobbleMaterial';
48
+ export * from './MeshReflectorMaterial';
48
49
  export * from './PointMaterial';
49
50
  export * from './shaderMaterial';
50
51
  export * from './softShadows';
package/core/index.js CHANGED
@@ -45,6 +45,7 @@ export { useEdgeSplit } from './useEdgeSplit.js';
45
45
  export { CurveModifier } from './CurveModifier.js';
46
46
  export { MeshDistortMaterial } from './MeshDistortMaterial.js';
47
47
  export { MeshWobbleMaterial } from './MeshWobbleMaterial.js';
48
+ export { MeshReflectorMaterial } from './MeshReflectorMaterial.js';
48
49
  export { PointMaterial, PointMaterialImpl } from './PointMaterial.js';
49
50
  export { shaderMaterial } from './shaderMaterial.js';
50
51
  export { softShadows } from './softShadows.js';
@@ -91,8 +92,10 @@ import '../helpers/useEffectfulState.js';
91
92
  import 'detect-gpu';
92
93
  import 'use-asset';
93
94
  import 'three-mesh-bvh';
94
- import '../helpers/environment-assets.js';
95
+ import '../materials/BlurPass.js';
96
+ import '../materials/ConvolutionMaterial.js';
95
97
  import '../materials/MeshReflectorMaterial.js';
98
+ import '../helpers/environment-assets.js';
96
99
  import '../materials/SpotLightMaterial.js';
97
100
  import '../assets/cloud.base64.js';
98
101
  import '../helpers/matcap-assets.js';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("detect-gpu"),r=require("use-asset");function u(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var u=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,u.get?u:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=u(e);exports.useDetectGPU=function(e){return c.useState(null),r.useAsset((()=>t.getGPUTier(e)),"useDetectGPU")};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("detect-gpu"),t=require("use-asset");exports.useDetectGPU=s=>t.useAsset((()=>e.getGPUTier(s)),"useDetectGPU");
@@ -1,2 +1,2 @@
1
1
  import { GetGPUTier, TierResult } from 'detect-gpu';
2
- export declare function useDetectGPU(props?: GetGPUTier): TierResult;
2
+ export declare const useDetectGPU: (props?: GetGPUTier | undefined) => TierResult;
@@ -1,10 +1,6 @@
1
- import * as React from 'react';
2
1
  import { getGPUTier } from 'detect-gpu';
3
2
  import { useAsset } from 'use-asset';
4
3
 
5
- function useDetectGPU(props) {
6
- React.useState(null);
7
- return useAsset(() => getGPUTier(props), 'useDetectGPU');
8
- }
4
+ const useDetectGPU = props => useAsset(() => getGPUTier(props), 'useDetectGPU');
9
5
 
10
6
  export { useDetectGPU };