@react-three/drei 9.0.0-beta.1 → 9.0.0-beta.2

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 (83) hide show
  1. package/README.md +168 -22
  2. package/core/ArcballControls.cjs.js +1 -1
  3. package/core/ArcballControls.d.ts +8 -8
  4. package/core/ArcballControls.js +6 -5
  5. package/core/Cloud.cjs.js +1 -1
  6. package/core/Cloud.d.ts +2 -1
  7. package/core/Cloud.js +3 -2
  8. package/core/ContactShadows.cjs.js +1 -1
  9. package/core/ContactShadows.d.ts +2 -1
  10. package/core/ContactShadows.js +18 -11
  11. package/core/CubeCamera.cjs.js +1 -1
  12. package/core/CubeCamera.js +1 -2
  13. package/core/CurveModifier.cjs.js +1 -1
  14. package/core/CurveModifier.js +18 -22
  15. package/core/Detailed.d.ts +1 -1
  16. package/core/Effects.d.ts +1 -1
  17. package/core/Environment.cjs.js +1 -1
  18. package/core/Environment.js +8 -27
  19. package/core/FirstPersonControls.d.ts +1 -1
  20. package/core/GizmoViewcube.cjs.js +1 -1
  21. package/core/GizmoViewcube.js +1 -1
  22. package/core/GradientTexture.cjs.js +1 -1
  23. package/core/GradientTexture.js +5 -2
  24. package/core/Image.d.ts +1 -1
  25. package/core/Instances.d.ts +1 -1
  26. package/core/Line.d.ts +1 -1
  27. package/core/MapControls.d.ts +1 -1
  28. package/core/MeshDistortMaterial.d.ts +2 -4
  29. package/core/MeshReflectorMaterial.cjs.js +1 -1
  30. package/core/MeshReflectorMaterial.d.ts +2 -1
  31. package/core/MeshReflectorMaterial.js +4 -3
  32. package/core/MeshWobbleMaterial.d.ts +2 -4
  33. package/core/OrbitControls.cjs.js +1 -1
  34. package/core/OrbitControls.d.ts +10 -10
  35. package/core/OrbitControls.js +5 -4
  36. package/core/OrthographicCamera.d.ts +1 -1
  37. package/core/PerspectiveCamera.d.ts +1 -1
  38. package/core/PositionalAudio.d.ts +1 -1
  39. package/core/Reflector.cjs.js +1 -1
  40. package/core/Reflector.js +1 -2
  41. package/core/RoundedBox.cjs.js +1 -1
  42. package/core/RoundedBox.d.ts +2 -1
  43. package/core/RoundedBox.js +2 -1
  44. package/core/Shadow.d.ts +1 -1
  45. package/core/SpotLight.d.ts +19 -3
  46. package/core/Stage.cjs.js +1 -1
  47. package/core/Stage.d.ts +1 -1
  48. package/core/Stats.cjs.js +1 -1
  49. package/core/Stats.js +1 -1
  50. package/core/Text.cjs.js +1 -1
  51. package/core/Text.d.ts +1 -1
  52. package/core/Text.js +8 -1
  53. package/core/TransformControls.cjs.js +1 -1
  54. package/core/TransformControls.d.ts +1 -1
  55. package/core/TransformControls.js +9 -1
  56. package/core/index.cjs.js +1 -1
  57. package/core/index.js +2 -2
  58. package/core/shaderMaterial.d.ts +1 -1
  59. package/core/useDetectGPU.cjs.js +1 -1
  60. package/core/useDetectGPU.js +2 -2
  61. package/core/useGLTF.d.ts +1 -1
  62. package/core/useHelper.cjs.js +1 -1
  63. package/core/useHelper.d.ts +2 -1
  64. package/core/useHelper.js +16 -6
  65. package/core/useMatcapTexture.cjs.js +1 -1
  66. package/core/useMatcapTexture.js +2 -5
  67. package/core/useNormalTexture.cjs.js +1 -1
  68. package/core/useNormalTexture.js +2 -5
  69. package/helpers/Position.cjs.js +1 -1
  70. package/helpers/Position.js +3 -2
  71. package/helpers/environment-assets.cjs.js +1 -1
  72. package/helpers/environment-assets.js +10 -10
  73. package/index.cjs.js +1 -1
  74. package/materials/MeshReflectorMaterial.cjs.js +1 -1
  75. package/materials/MeshReflectorMaterial.js +4 -5
  76. package/native/index.cjs.js +1 -1
  77. package/native/index.js +2 -2
  78. package/package.json +6 -6
  79. package/web/Select.cjs.js +1 -1
  80. package/web/Select.d.ts +2 -1
  81. package/web/Select.js +3 -2
  82. package/web/index.cjs.js +1 -1
  83. package/web/index.js +2 -2
@@ -5,7 +5,8 @@ export declare const ContactShadows: React.ForwardRefExoticComponent<Pick<Omit<i
5
5
  height?: number | undefined;
6
6
  blur?: number | undefined;
7
7
  far?: number | undefined;
8
+ smooth?: boolean | undefined;
8
9
  resolution?: number | undefined;
9
10
  frames?: number | undefined;
10
11
  scale?: number | [x: number, y: number] | undefined;
11
- }, "visible" | "attach" | "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" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "blur" | "height" | "opacity" | "width" | "resolution" | "far" | "frames"> & React.RefAttributes<unknown>>;
12
+ }, "visible" | "attach" | "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" | "removeFromParent" | "clear" | "getObjectById" | "getObjectByName" | "getObjectByProperty" | "getWorldPosition" | "getWorldQuaternion" | "getWorldScale" | "getWorldDirection" | "raycast" | "traverse" | "traverseVisible" | "traverseAncestors" | "updateMatrix" | "updateMatrixWorld" | "updateWorldMatrix" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "smooth" | "blur" | "height" | "opacity" | "width" | "resolution" | "far" | "frames"> & React.RefAttributes<unknown>>;
@@ -13,6 +13,7 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
13
13
  blur = 1,
14
14
  far = 10,
15
15
  resolution = 256,
16
+ smooth = true,
16
17
  ...props
17
18
  }, ref) => {
18
19
  const scene = useThree(({
@@ -21,7 +22,7 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
21
22
  const gl = useThree(({
22
23
  gl
23
24
  }) => gl);
24
- const shadowCamera = React.useRef();
25
+ const shadowCamera = React.useRef(null);
25
26
  width = width * (Array.isArray(scale) ? scale[0] : scale || 1);
26
27
  height = height * (Array.isArray(scale) ? scale[1] : scale || 1);
27
28
  const [renderTarget, planeGeometry, depthMaterial, blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur] = React.useMemo(() => {
@@ -40,6 +41,20 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
40
41
  verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;
41
42
  return [renderTarget, planeGeometry, depthMaterial, blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur];
42
43
  }, [resolution, width, height, scale]);
44
+ const blurShadows = React.useCallback(blur => {
45
+ blurPlane.visible = true;
46
+ blurPlane.material = horizontalBlurMaterial;
47
+ horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture;
48
+ horizontalBlurMaterial.uniforms.h.value = blur * 1 / 256;
49
+ gl.setRenderTarget(renderTargetBlur);
50
+ gl.render(blurPlane, shadowCamera.current);
51
+ blurPlane.material = verticalBlurMaterial;
52
+ verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture;
53
+ verticalBlurMaterial.uniforms.v.value = blur * 1 / 256;
54
+ gl.setRenderTarget(renderTarget);
55
+ gl.render(blurPlane, shadowCamera.current);
56
+ blurPlane.visible = false;
57
+ }, []);
43
58
  let count = 0;
44
59
  useFrame(() => {
45
60
  if (shadowCamera.current && (frames === Infinity || count < frames)) {
@@ -49,16 +64,8 @@ const ContactShadows = /*#__PURE__*/React.forwardRef(({
49
64
  gl.setRenderTarget(renderTarget);
50
65
  gl.render(scene, shadowCamera.current);
51
66
  scene.overrideMaterial = null;
52
- blurPlane.material = horizontalBlurMaterial;
53
- blurPlane.material.uniforms.tDiffuse.value = renderTarget.texture;
54
- horizontalBlurMaterial.uniforms.h.value = blur / 256;
55
- gl.setRenderTarget(renderTargetBlur);
56
- gl.render(blurPlane, shadowCamera.current);
57
- blurPlane.material = verticalBlurMaterial;
58
- blurPlane.material.uniforms.tDiffuse.value = renderTargetBlur.texture;
59
- verticalBlurMaterial.uniforms.v.value = blur / 256;
60
- gl.setRenderTarget(renderTarget);
61
- gl.render(blurPlane, shadowCamera.current);
67
+ blurShadows(blur);
68
+ if (smooth) blurShadows(blur * 0.4);
62
69
  gl.setRenderTarget(null);
63
70
  scene.background = initialBackground;
64
71
  count++;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var 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 u=n(r);exports.CubeCamera=function({children:r,fog:n,frames:a=1/0,resolution:i=256,near:c=1,far:o=1e3,...f}){const s=u.useRef(),[l,g]=u.useState(null),b=t.useThree((({scene:e})=>e)),m=t.useThree((({gl:e})=>e)),d=u.useMemo((()=>new e.WebGLCubeRenderTarget(i,{minFilter:e.LinearFilter,magFilter:e.LinearFilter,format:e.RGBFormat,encoding:m.outputEncoding})),[i]);let p=0;return t.useFrame((()=>{if(l&&s.current&&(a===1/0||p<a)){s.current.traverse((e=>e.visible=!1));const e=b.fog;b.fog=n||e,l.update(m,b),b.fog=e,s.current.traverse((e=>e.visible=!0)),p++}})),u.createElement("group",f,u.createElement("cubeCamera",{ref:g,args:[c,o,d]}),u.createElement("group",{ref:s},r(d.texture)))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three"),r=require("react"),t=require("@react-three/fiber");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var 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 u=n(r);exports.CubeCamera=function({children:r,fog:n,frames:a=1/0,resolution:i=256,near:c=1,far:o=1e3,...s}){const f=u.useRef(),[l,g]=u.useState(null),b=t.useThree((({scene:e})=>e)),d=t.useThree((({gl:e})=>e)),m=u.useMemo((()=>new e.WebGLCubeRenderTarget(i,{minFilter:e.LinearFilter,magFilter:e.LinearFilter,encoding:d.outputEncoding})),[i]);let p=0;return t.useFrame((()=>{if(l&&f.current&&(a===1/0||p<a)){f.current.traverse((e=>e.visible=!1));const e=b.fog;b.fog=n||e,l.update(d,b),b.fog=e,f.current.traverse((e=>e.visible=!0)),p++}})),u.createElement("group",s,u.createElement("cubeCamera",{ref:g,args:[c,o,m]}),u.createElement("group",{ref:f},r(m.texture)))};
@@ -1,4 +1,4 @@
1
- import { WebGLCubeRenderTarget, LinearFilter, RGBFormat } from 'three';
1
+ import { WebGLCubeRenderTarget, LinearFilter } from 'three';
2
2
  import * as React from 'react';
3
3
  import { useThree, useFrame } from '@react-three/fiber';
4
4
 
@@ -22,7 +22,6 @@ function CubeCamera({
22
22
  const fbo = React.useMemo(() => new WebGLCubeRenderTarget(resolution, {
23
23
  minFilter: LinearFilter,
24
24
  magFilter: LinearFilter,
25
- format: RGBFormat,
26
25
  encoding: gl.outputEncoding
27
26
  }), [resolution]);
28
27
  let count = 0;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("three-stdlib");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var u=t(e);const n=u.forwardRef((({children:e,curve:t},n)=>{const[c,o]=u.useState(),l=u.useRef(),f=u.useRef();return u.useImperativeHandle(n,(()=>({moveAlongCurve:e=>{var r;null==(r=f.current)||r.moveAlongCurve(e)}}))),u.useEffect((()=>{!f.current&&l.current&&n&&(f.current=new r.Flow(l.current),o(f.current.object3D))}),[e,n]),u.useEffect((()=>{var e;l.current&&t&&(null==(e=f.current)||e.updateCurve(0,t))}),[t]),c?u.createElement("primitive",{object:c}):u.cloneElement(u.Children.only(e),{ref:l})}));exports.CurveModifier=n;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("three"),t=require("@react-three/fiber"),u=require("three-stdlib");function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var u=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,u.get?u:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var c=n(e),a=n(r);const l=c.forwardRef((({children:e,curve:r},n)=>{const[l]=c.useState((()=>new a.Scene)),[o,i]=c.useState(),f=c.useRef();return c.useEffect((()=>{f.current=new u.Flow(l.children[0]),i(f.current.object3D)}),[e]),c.useEffect((()=>{var e;r&&(null==(e=f.current)||e.updateCurve(0,r))}),[r]),c.useImperativeHandle(n,(()=>({moveAlongCurve:e=>{var r;null==(r=f.current)||r.moveAlongCurve(e)}}))),c.createElement(c.Fragment,null,t.createPortal(e,l),o&&c.createElement("primitive",{object:o}))}));exports.CurveModifier=l;
@@ -1,38 +1,34 @@
1
1
  import * as React from 'react';
2
+ import * as THREE from 'three';
3
+ import { createPortal } from '@react-three/fiber';
2
4
  import { Flow } from 'three-stdlib';
3
5
 
4
6
  const CurveModifier = /*#__PURE__*/React.forwardRef(({
5
7
  children,
6
8
  curve
7
9
  }, ref) => {
8
- const [object3D, setObj] = React.useState();
9
- const original = React.useRef();
10
+ const [scene] = React.useState(() => new THREE.Scene());
11
+ const [obj, set] = React.useState();
10
12
  const modifier = React.useRef();
11
- React.useImperativeHandle(ref, () => ({
12
- moveAlongCurve: val => {
13
- var _modifier$current;
14
-
15
- (_modifier$current = modifier.current) == null ? void 0 : _modifier$current.moveAlongCurve(val);
16
- }
17
- }));
18
13
  React.useEffect(() => {
19
- if (!modifier.current && original.current && ref) {
20
- modifier.current = new Flow(original.current);
21
- setObj(modifier.current.object3D);
22
- }
23
- }, [children, ref]);
14
+ modifier.current = new Flow(scene.children[0]);
15
+ set(modifier.current.object3D);
16
+ }, [children]);
24
17
  React.useEffect(() => {
25
- if (original.current && curve) {
18
+ var _modifier$current;
19
+
20
+ if (curve) (_modifier$current = modifier.current) == null ? void 0 : _modifier$current.updateCurve(0, curve);
21
+ }, [curve]);
22
+ React.useImperativeHandle(ref, () => ({
23
+ moveAlongCurve: val => {
26
24
  var _modifier$current2;
27
25
 
28
- (_modifier$current2 = modifier.current) == null ? void 0 : _modifier$current2.updateCurve(0, curve);
26
+ (_modifier$current2 = modifier.current) == null ? void 0 : _modifier$current2.moveAlongCurve(val);
29
27
  }
30
- }, [curve]);
31
- return object3D ? /*#__PURE__*/React.createElement("primitive", {
32
- object: object3D
33
- }) : /*#__PURE__*/React.cloneElement(React.Children.only(children), {
34
- ref: original
35
- });
28
+ }));
29
+ return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(children, scene), obj && /*#__PURE__*/React.createElement("primitive", {
30
+ object: obj
31
+ }));
36
32
  });
37
33
 
38
34
  export { CurveModifier };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { LOD, Object3D } from 'three';
3
- export declare const Detailed: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").Node<LOD, typeof LOD>, import("@react-three/fiber").NonFunctionKeys<{
3
+ export declare const Detailed: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<LOD>, import("@react-three/fiber").NodeProps<LOD, typeof LOD>>>, import("@react-three/fiber").NonFunctionKeys<{
4
4
  position?: import("@react-three/fiber").Vector3 | undefined;
5
5
  up?: import("@react-three/fiber").Vector3 | undefined;
6
6
  scale?: import("@react-three/fiber").Vector3 | undefined;
package/core/Effects.d.ts CHANGED
@@ -11,7 +11,7 @@ declare global {
11
11
  }
12
12
  }
13
13
  export declare const isWebGL2Available: () => boolean;
14
- export declare const Effects: React.ForwardRefExoticComponent<Pick<Omit<Partial<EffectComposer<import("three").WebGLRenderTarget>>, ReactThreeFiber.NonFunctionKeys<ReactThreeFiber.NodeProps<EffectComposer<import("three").WebGLRenderTarget>, typeof EffectComposer>>> & ReactThreeFiber.NodeProps<EffectComposer<import("three").WebGLRenderTarget>, typeof EffectComposer> & {
14
+ export declare const Effects: React.ForwardRefExoticComponent<Pick<ReactThreeFiber.ExtendedColors<ReactThreeFiber.Overwrite<Partial<EffectComposer<import("three").WebGLRenderTarget>>, ReactThreeFiber.NodeProps<EffectComposer<import("three").WebGLRenderTarget>, typeof EffectComposer>>> & {
15
15
  multisamping?: number | undefined;
16
16
  renderIndex?: number | undefined;
17
17
  disableGamma?: boolean | undefined;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),n=require("three"),t=require("three-stdlib"),s=require("use-asset"),u=require("../helpers/environment-assets.cjs.js");function o(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}var a=o(e);exports.Environment=function({background:e=!1,files:o=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:i="",preset:c,scene:d,extensions:p}){if(c){if(!(c in u.presetsObj))throw new Error("Preset must be one of: "+Object.keys(u.presetsObj).join(", "));o=u.presetsObj[c],i="https://rawcdn.githack.com/pmndrs/drei-assets/aa3600359ba664d546d05821bcbca42013587df2/hdri/"}const b=r.useThree((({scene:e})=>e)),f=r.useThree((({gl:e})=>e)),g=Array.isArray(o),l=g?n.CubeTextureLoader:t.RGBELoader,m=r.useLoader(l,g?[o]:o,(e=>{e.setPath(i),p&&p(e)})),h=g?m[0]:m,j=s.useAsset((()=>new Promise((e=>{const r=new n.PMREMGenerator(f),t=function(e,r,n){return n?(r.compileEquirectangularShader(),r.fromCubemap(e).texture):r.fromEquirectangular(e).texture}(h,r,g);r.dispose(),e(t)}))),h);return a.useLayoutEffect((()=>{const r=d?d.background:b.background,n=d?d.environment:b.environment;return d?(d.environment=j,e&&(d.background=j)):(b.environment=j,e&&(b.background=j)),()=>{d?(d.environment=n,d.background=r):(b.environment=n,b.background=r),s.useAsset.clear(h),j.dispose()}}),[j,e,d]),null};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("@react-three/fiber"),n=require("three"),t=require("three-stdlib"),s=require("../helpers/environment-assets.cjs.js");function a(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}var o=a(e);exports.Environment=function({background:e=!1,files:a=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"],path:i="",preset:u,scene:c,extensions:p}){if(u){if(!(u in s.presetsObj))throw new Error("Preset must be one of: "+Object.keys(s.presetsObj).join(", "));a=s.presetsObj[u],i="https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/"}const b=r.useThree((({scene:e})=>e)),d=Array.isArray(a),f=d?n.CubeTextureLoader:t.RGBELoader,g=r.useLoader(f,d?[a]:a,(e=>{e.setPath(i),null==e.setDataType||e.setDataType(n.FloatType),p&&p(e)})),l=d?g[0]:g;return l.mapping=n.EquirectangularReflectionMapping,o.useLayoutEffect((()=>{const r=c?c.background:b.background,n=c?c.environment:b.environment;return c?(c.environment=l,e&&(c.background=l)):(b.environment=l,e&&(b.background=l)),()=>{c?(c.environment=n,c.background=r):(b.environment=n,b.background=r),l.dispose()}}),[l,e,c]),null};
@@ -1,20 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { useThree, useLoader } from '@react-three/fiber';
3
- import { PMREMGenerator, CubeTextureLoader } from 'three';
3
+ import { FloatType, EquirectangularReflectionMapping, CubeTextureLoader } from 'three';
4
4
  import { RGBELoader } from 'three-stdlib';
5
- import { useAsset } from 'use-asset';
6
5
  import { presetsObj } from '../helpers/environment-assets.js';
7
6
 
8
- function getTexture(texture, gen, isCubeMap) {
9
- if (isCubeMap) {
10
- gen.compileEquirectangularShader();
11
- return gen.fromCubemap(texture).texture;
12
- }
13
-
14
- return gen.fromEquirectangular(texture).texture;
15
- }
16
-
17
- const CUBEMAP_ROOT = 'https://rawcdn.githack.com/pmndrs/drei-assets/aa3600359ba664d546d05821bcbca42013587df2';
7
+ const CUBEMAP_ROOT = 'https://market-assets.fra1.cdn.digitaloceanspaces.com/market-assets/hdris/';
18
8
  function Environment({
19
9
  background = false,
20
10
  files = ['/px.png', '/nx.png', '/py.png', '/ny.png', '/pz.png', '/nz.png'],
@@ -29,31 +19,23 @@ function Environment({
29
19
  }
30
20
 
31
21
  files = presetsObj[preset];
32
- path = CUBEMAP_ROOT + '/hdri/';
22
+ path = CUBEMAP_ROOT;
33
23
  }
34
24
 
35
25
  const defaultScene = useThree(({
36
26
  scene
37
27
  }) => scene);
38
- const gl = useThree(({
39
- gl
40
- }) => gl);
41
28
  const isCubeMap = Array.isArray(files);
42
29
  const loader = isCubeMap ? CubeTextureLoader : RGBELoader; // @ts-expect-error
43
30
 
44
31
  const loaderResult = useLoader(loader, isCubeMap ? [files] : files, loader => {
45
- loader.setPath(path);
32
+ loader.setPath(path); // @ts-expect-error
33
+
34
+ loader.setDataType == null ? void 0 : loader.setDataType(FloatType);
46
35
  if (extensions) extensions(loader);
47
36
  });
48
- const map = isCubeMap ? loaderResult[0] : loaderResult; // PMREMGenerator takes its sweet time to generate the env-map,
49
- // Let's make this part of suspense, or else it just yields a frame-skip
50
-
51
- const texture = useAsset(() => new Promise(res => {
52
- const gen = new PMREMGenerator(gl);
53
- const texture = getTexture(map, gen, isCubeMap);
54
- gen.dispose();
55
- res(texture);
56
- }), map);
37
+ const texture = isCubeMap ? loaderResult[0] : loaderResult;
38
+ texture.mapping = EquirectangularReflectionMapping;
57
39
  React.useLayoutEffect(() => {
58
40
  const oldbg = scene ? scene.background : defaultScene.background;
59
41
  const oldenv = scene ? scene.environment : defaultScene.environment;
@@ -76,7 +58,6 @@ function Environment({
76
58
  } // Environment textures are volatile, better dispose and uncache them
77
59
 
78
60
 
79
- useAsset.clear(map);
80
61
  texture.dispose();
81
62
  };
82
63
  }, [texture, background, scene]);
@@ -2,4 +2,4 @@ import * as React from 'react';
2
2
  import { Object3DNode } from '@react-three/fiber';
3
3
  import { FirstPersonControls as FirstPersonControlImpl } from 'three-stdlib';
4
4
  export declare type FirstPersonControlsProps = Object3DNode<FirstPersonControlImpl, typeof FirstPersonControlImpl>;
5
- export declare const FirstPersonControls: React.ForwardRefExoticComponent<Pick<FirstPersonControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "lookAt" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "enabled" | "update" | "domElement" | "movementSpeed" | "autoForward" | "handleResize" | "lookSpeed" | "lookVertical" | "activeLook" | "heightSpeed" | "heightCoef" | "heightMin" | "heightMax" | "constrainVertical" | "verticalMin" | "verticalMax" | "mouseDragOn"> & React.RefAttributes<FirstPersonControlImpl>>;
5
+ export declare const FirstPersonControls: React.ForwardRefExoticComponent<Pick<FirstPersonControlsProps, "object" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "lookAt" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | keyof import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers | "enabled" | "update" | "connect" | "domElement" | "movementSpeed" | "autoForward" | "handleResize" | "lookSpeed" | "lookVertical" | "activeLook" | "heightSpeed" | "heightCoef" | "heightMin" | "heightMax" | "constrainVertical" | "verticalMin" | "verticalMax" | "mouseDragOn"> & React.RefAttributes<FirstPersonControlImpl>>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),a=require("three");function n(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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var s=n(e),c=i(t);const l="#f0f0f0",m="#999",p="black",u="black",f=["Right","Left","Top","Bottom","Front","Back"],h=e=>new a.Vector3(...e).multiplyScalar(.38),y=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(h),d=[.25,.25,.25],g=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(h),b=g.map((e=>e.toArray().map((e=>0==e?.5:.25)))),x=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:n=f,color:i=l,hoverColor:s=m,textColor:h=p,strokeColor:y=u,opacity:d=1})=>{const g=r.useThree((e=>e.gl)),b=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.strokeStyle=y,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=h,r.fillText(n[t].toUpperCase(),64,76),new a.CanvasTexture(e)}),[t,n,o,i,h,y]);return c.createElement("meshLambertMaterial",{map:b,"map-anisotropy":g.capabilities.getMaxAnisotropy()||1,attach:"material",color:e?s:"white",transparent:!0,opacity:d})},C=e=>{const{tweenCamera:t,raycast:r}=o.useGizmoContext(),[a,n]=c.useState(null);return c.createElement("mesh",{raycast:r,onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,r)=>c.createElement(x,s.default({key:r,index:r,hover:a===r},e)))),c.createElement("boxGeometry",null))},v=({onClick:e,dimensions:t,position:r,hoverColor:a=m})=>{const{tweenCamera:n,raycast:i}=o.useGizmoContext(),[s,l]=c.useState(!1);return c.createElement("mesh",{scale:1.01,position:r,raycast:i,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),n(r)})},c.createElement("meshBasicMaterial",{color:s?a:"white",transparent:!0,opacity:.6,visible:s}),c.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>c.createElement("group",{scale:[60,60,60]},c.createElement(C,e),g.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:b[r]},e)))),y.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:d},e)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),o=require("./GizmoHelper.cjs.js"),a=require("three");function n(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 o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}require("./OrthographicCamera.cjs.js"),require("react-merge-refs"),require("./useCamera.cjs.js");var s=n(e),c=i(t);const l="#f0f0f0",m="#999",p="black",u="black",f=["Right","Left","Top","Bottom","Front","Back"],h=e=>new a.Vector3(...e).multiplyScalar(.38),y=[[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]].map(h),d=[.25,.25,.25],g=[[1,1,0],[1,0,1],[1,0,-1],[1,-1,0],[0,1,1],[0,1,-1],[0,-1,1],[0,-1,-1],[-1,1,0],[-1,0,1],[-1,0,-1],[-1,-1,0]].map(h),b=g.map((e=>e.toArray().map((e=>0==e?.5:.25)))),x=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:n=f,color:i=l,hoverColor:s=m,textColor:h=p,strokeColor:y=u,opacity:d=1})=>{const g=r.useThree((e=>e.gl)),b=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=i,r.fillRect(0,0,e.width,e.height),r.strokeStyle=y,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=h,r.fillText(n[t].toUpperCase(),64,76),new a.CanvasTexture(e)}),[t,n,o,i,h,y]);return c.createElement("meshLambertMaterial",{map:b,"map-anisotropy":g.capabilities.getMaxAnisotropy()||1,attach:`material-${t}`,color:e?s:"white",transparent:!0,opacity:d})},C=e=>{const{tweenCamera:t,raycast:r}=o.useGizmoContext(),[a,n]=c.useState(null);return c.createElement("mesh",{raycast:r,onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:e.onClick||(e=>{e.stopPropagation(),t(e.face.normal)})},[...Array(6)].map(((t,r)=>c.createElement(x,s.default({key:r,index:r,hover:a===r},e)))),c.createElement("boxGeometry",null))},v=({onClick:e,dimensions:t,position:r,hoverColor:a=m})=>{const{tweenCamera:n,raycast:i}=o.useGizmoContext(),[s,l]=c.useState(!1);return c.createElement("mesh",{scale:1.01,position:r,raycast:i,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),n(r)})},c.createElement("meshBasicMaterial",{color:s?a:"white",transparent:!0,opacity:.6,visible:s}),c.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=e=>c.createElement("group",{scale:[60,60,60]},c.createElement(C,e),g.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:b[r]},e)))),y.map(((t,r)=>c.createElement(v,s.default({key:r,position:t,dimensions:d},e)))),c.createElement("ambientLight",{intensity:.5}),c.createElement("pointLight",{position:[10,10,10],intensity:.5}));
@@ -49,7 +49,7 @@ const FaceMaterial = ({
49
49
  return /*#__PURE__*/React.createElement("meshLambertMaterial", {
50
50
  map: texture,
51
51
  "map-anisotropy": gl.capabilities.getMaxAnisotropy() || 1,
52
- attach: "material",
52
+ attach: `material-${index}`,
53
53
  color: hover ? hoverColor : 'white',
54
54
  transparent: true,
55
55
  opacity: opacity
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=n(e),u=o(t),a=o(r);exports.GradientTexture=function({stops:e,colors:t,size:r=2048,...n}){const o=a.useMemo((()=>{const n=document.createElement("canvas"),o=n.getContext("2d");n.width=16,n.height=r;const c=o.createLinearGradient(0,0,0,r);let a=e.length;for(;a--;)c.addColorStop(e[a],t[a]);o.fillStyle=c,o.fillRect(0,0,16,r);const i=new u.Texture(n);return i.needsUpdate=!0,i}),[e]);return a.useEffect((()=>()=>{o.dispose()}),[o]),a.createElement("primitive",c.default({object:o,attach:"map"},n))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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 n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var c=o(e),i=u(t),a=u(r);exports.GradientTexture=function({stops:e,colors:t,size:r=1024,...o}){const u=n.useThree((e=>e.gl)),l=a.useMemo((()=>{const n=document.createElement("canvas"),o=n.getContext("2d");n.width=16,n.height=r;const u=o.createLinearGradient(0,0,0,r);let c=e.length;for(;c--;)u.addColorStop(e[c],t[c]);o.fillStyle=u,o.fillRect(0,0,16,r);const a=new i.Texture(n);return a.needsUpdate=!0,a}),[e]);return a.useEffect((()=>()=>{l.dispose()}),[l]),a.createElement("primitive",c.default({object:l,attach:"map",encoding:u.outputEncoding},o))};
@@ -1,13 +1,15 @@
1
1
  import _extends from '@babel/runtime/helpers/esm/extends';
2
2
  import * as THREE from 'three';
3
3
  import * as React from 'react';
4
+ import { useThree } from '@react-three/fiber';
4
5
 
5
6
  function GradientTexture({
6
7
  stops,
7
8
  colors,
8
- size = 2048,
9
+ size = 1024,
9
10
  ...props
10
11
  }) {
12
+ const gl = useThree(state => state.gl);
11
13
  const texture = React.useMemo(() => {
12
14
  const canvas = document.createElement('canvas');
13
15
  const context = canvas.getContext('2d');
@@ -29,7 +31,8 @@ function GradientTexture({
29
31
  React.useEffect(() => () => void texture.dispose(), [texture]);
30
32
  return /*#__PURE__*/React.createElement("primitive", _extends({
31
33
  object: texture,
32
- attach: "map"
34
+ attach: "map",
35
+ encoding: gl.outputEncoding
33
36
  }, props));
34
37
  }
35
38
 
package/core/Image.d.ts CHANGED
@@ -24,7 +24,7 @@ declare global {
24
24
  }
25
25
  }
26
26
  }
27
- export declare const Image: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").Node<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>, typeof THREE.Mesh>, import("@react-three/fiber").NonFunctionKeys<{
27
+ export declare const Image: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>, import("@react-three/fiber").NodeProps<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>, typeof THREE.Mesh>>>, import("@react-three/fiber").NonFunctionKeys<{
28
28
  position?: import("@react-three/fiber").Vector3 | undefined;
29
29
  up?: import("@react-three/fiber").Vector3 | undefined;
30
30
  scale?: import("@react-three/fiber").Vector3 | undefined;
@@ -14,7 +14,7 @@ declare type InstancedMesh = Omit<THREE.InstancedMesh, 'instanceMatrix' | 'insta
14
14
  instanceMatrix: THREE.InstancedBufferAttribute;
15
15
  instanceColor: THREE.InstancedBufferAttribute;
16
16
  };
17
- declare const Instance: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").Node<Position, typeof Position>, import("@react-three/fiber").NonFunctionKeys<{
17
+ declare const Instance: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<Position>, import("@react-three/fiber").NodeProps<Position, typeof Position>>>, import("@react-three/fiber").NonFunctionKeys<{
18
18
  position?: import("@react-three/fiber").Vector3 | undefined;
19
19
  up?: import("@react-three/fiber").Vector3 | undefined;
20
20
  scale?: import("@react-three/fiber").Vector3 | undefined;
package/core/Line.d.ts CHANGED
@@ -6,4 +6,4 @@ export declare type LineProps = {
6
6
  points: Array<Vector3 | [number, number, number]>;
7
7
  vertexColors?: Array<Color | [number, number, number]>;
8
8
  } & LineMaterialParameters & Omit<ReactThreeFiber.Object3DNode<Line2, typeof Line2>, 'args'> & Omit<ReactThreeFiber.Object3DNode<LineMaterial, [LineMaterialParameters]>, 'color' | 'vertexColors' | 'resolution' | 'args'>;
9
- export declare const Line: React.ForwardRefExoticComponent<Pick<LineProps, "attach" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "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" | "removeFromParent" | "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 | "dashed" | "points" | "material" | "isMaterial" | "needsUpdate" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "isLine2" | "computeLineDistances" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "lineWidth" | "dashScale" | "dashOffset" | "dashSize" | "resolution" | "derivatives" | "defaultAttributeValues" | "index0AttributeName" | "uniformsNeedUpdate" | "isShaderMaterial" | "gapSize" | keyof import("three").ShaderMaterialParameters> & React.RefAttributes<Line2>>;
9
+ export declare const Line: React.ForwardRefExoticComponent<Pick<LineProps, "attach" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldNeedsUpdate" | "castShadow" | "receiveShadow" | "frustumCulled" | "renderOrder" | "animations" | "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" | "removeFromParent" | "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 | "dashed" | "points" | "material" | "alphaWrite" | "isMaterial" | "needsUpdate" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "isLine2" | "computeLineDistances" | "geometry" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "lineWidth" | "dashScale" | "dashOffset" | "dashSize" | "resolution" | "derivatives" | "defaultAttributeValues" | "index0AttributeName" | "uniformsNeedUpdate" | "isShaderMaterial" | "gapSize" | keyof import("three").ShaderMaterialParameters> & React.RefAttributes<Line2>>;
@@ -9,4 +9,4 @@ export declare type MapControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber
9
9
  onStart?: (e?: THREE.Event) => void;
10
10
  onEnd?: (e?: THREE.Event) => void;
11
11
  }>;
12
- export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "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" | "reset" | "enabled" | "update" | "onStart" | "keys" | "target" | "touches" | "connect" | "domElement" | "minDistance" | "maxDistance" | "minZoom" | "maxZoom" | "minPolarAngle" | "maxPolarAngle" | "minAzimuthAngle" | "maxAzimuthAngle" | "enableDamping" | "dampingFactor" | "enableZoom" | "zoomSpeed" | "enableRotate" | "rotateSpeed" | "enablePan" | "panSpeed" | "screenSpacePanning" | "keyPanSpeed" | "autoRotate" | "autoRotateSpeed" | "mouseButtons" | "target0" | "position0" | "zoom0" | "_domElementKeyEvents" | "getPolarAngle" | "getAzimuthalAngle" | "setPolarAngle" | "setAzimuthalAngle" | "getDistance" | "listenToKeyEvents" | "saveState" | "onEnd"> & React.RefAttributes<MapControlsImpl>>;
12
+ export declare const MapControls: React.ForwardRefExoticComponent<Pick<MapControlsProps, "object" | "attach" | "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" | "reset" | "enabled" | "update" | "onStart" | "keys" | "target" | "touches" | "connect" | "domElement" | "minDistance" | "maxDistance" | "minZoom" | "maxZoom" | "minPolarAngle" | "maxPolarAngle" | "minAzimuthAngle" | "maxAzimuthAngle" | "enableDamping" | "dampingFactor" | "enableZoom" | "zoomSpeed" | "enableRotate" | "rotateSpeed" | "enablePan" | "panSpeed" | "screenSpacePanning" | "keyPanSpeed" | "autoRotate" | "autoRotateSpeed" | "reverseOrbit" | "mouseButtons" | "target0" | "position0" | "zoom0" | "_domElementKeyEvents" | "getPolarAngle" | "getAzimuthalAngle" | "setPolarAngle" | "setAzimuthalAngle" | "getDistance" | "listenToKeyEvents" | "saveState" | "onEnd"> & React.RefAttributes<MapControlsImpl>>;
@@ -12,14 +12,12 @@ declare global {
12
12
  }
13
13
  }
14
14
  }
15
- export declare const MeshDistortMaterial: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").Node<MeshPhysicalMaterial, [MeshPhysicalMaterialParameters]>, "color" | undefined> & {
16
- color?: import("@react-three/fiber").Color | undefined;
17
- } & {
15
+ export declare const MeshDistortMaterial: React.ForwardRefExoticComponent<Pick<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<MeshPhysicalMaterial>, import("@react-three/fiber").NodeProps<MeshPhysicalMaterial, [MeshPhysicalMaterialParameters]>>> & {
18
16
  time?: number | undefined;
19
17
  distort?: number | undefined;
20
18
  radius?: number | undefined;
21
19
  } & {
22
20
  speed?: number | undefined;
23
21
  factor?: number | undefined;
24
- }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "dispose" | "type" | "id" | "uuid" | "name" | "userData" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | "map" | "time" | "transparent" | "fog" | "opacity" | "speed" | "precision" | "alphaTest" | "alphaToCoverage" | "blendDst" | "blendDstAlpha" | "blendEquation" | "blendEquationAlpha" | "blending" | "blendSrc" | "blendSrcAlpha" | "clipIntersection" | "clippingPlanes" | "clipShadows" | "colorWrite" | "defines" | "depthFunc" | "depthTest" | "depthWrite" | "format" | "stencilWrite" | "stencilFunc" | "stencilRef" | "stencilWriteMask" | "stencilFuncMask" | "stencilFail" | "stencilZFail" | "stencilZPass" | "isMaterial" | "needsUpdate" | "polygonOffset" | "polygonOffsetFactor" | "polygonOffsetUnits" | "premultipliedAlpha" | "dithering" | "side" | "shadowSide" | "toneMapped" | "vertexColors" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "wireframe" | "wireframeLinewidth" | "emissive" | "emissiveIntensity" | "emissiveMap" | "lightMap" | "lightMapIntensity" | "aoMap" | "aoMapIntensity" | "alphaMap" | "envMap" | "reflectivity" | "refractionRatio" | "wireframeLinecap" | "wireframeLinejoin" | "clearcoat" | "clearcoatMap" | "clearcoatRoughness" | "clearcoatRoughnessMap" | "clearcoatNormalScale" | "clearcoatNormalMap" | "ior" | "sheen" | "sheenColor" | "sheenColorMap" | "sheenRoughness" | "sheenRoughnessMap" | "transmission" | "transmissionMap" | "thickness" | "thicknessMap" | "attenuationDistance" | "attenuationColor" | "specularIntensity" | "specularColor" | "specularIntensityMap" | "specularColorMap" | "roughness" | "metalness" | "bumpMap" | "bumpScale" | "normalMap" | "normalMapType" | "normalScale" | "displacementMap" | "displacementScale" | "displacementBias" | "roughnessMap" | "metalnessMap" | "envMapIntensity" | "flatShading" | "isMeshStandardMaterial" | "radius" | "distort" | "factor"> & React.RefAttributes<unknown>>;
22
+ }, "attach" | "args" | "children" | "key" | "onUpdate" | "time" | "speed" | keyof MeshPhysicalMaterial | "radius" | "distort" | "factor"> & React.RefAttributes<unknown>>;
25
23
  export {};
@@ -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("react-merge-refs"),i=require("../materials/BlurPass.cjs.js"),o=require("../materials/MeshReflectorMaterial.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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");var u=s(e),d=l(t),c=s(n);a.extend({MeshReflectorMaterialImpl:o.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:n=256,blur:o=[0,0],minDepthThreshold:s=.9,maxDepthThreshold:l=1,depthScale:p=0,depthToBlurRatioBias:m=.25,mirror:h=0,debug:f=0,distortion:x=1,mixContrast:M=1,distortionMap:T,...S},b)=>{const y=a.useThree((({gl:e})=>e)),w=a.useThree((({camera:e})=>e)),g=a.useThree((({scene:e})=>e)),R=(o=Array.isArray(o)?o:[o,o])[0]+o[1]>0,v=d.useRef(null),[j]=d.useState((()=>new r.Plane)),[B]=d.useState((()=>new r.Vector3)),[D]=d.useState((()=>new r.Vector3)),[_]=d.useState((()=>new r.Vector3)),[P]=d.useState((()=>new r.Matrix4)),[U]=d.useState((()=>new r.Vector3(0,0,-1))),[E]=d.useState((()=>new r.Vector4)),[O]=d.useState((()=>new r.Vector3)),[F]=d.useState((()=>new r.Vector3)),[V]=d.useState((()=>new r.Vector4)),[W]=d.useState((()=>new r.Matrix4)),[q]=d.useState((()=>new r.PerspectiveCamera)),I=d.useCallback((()=>{var e;const t=v.current.parent||(null==(e=v.current)?void 0:e.__r3f.parent);if(!t)return;if(D.setFromMatrixPosition(t.matrixWorld),_.setFromMatrixPosition(w.matrixWorld),P.extractRotation(t.matrixWorld),B.set(0,0,1),B.applyMatrix4(P),O.subVectors(D,_),O.dot(B)>0)return;O.reflect(B).negate(),O.add(D),P.extractRotation(w.matrixWorld),U.set(0,0,-1),U.applyMatrix4(P),U.add(_),F.subVectors(D,U),F.reflect(B).negate(),F.add(D),q.position.copy(O),q.up.set(0,1,0),q.up.applyMatrix4(P),q.up.reflect(B),q.lookAt(F),q.far=w.far,q.updateMatrixWorld(),q.projectionMatrix.copy(w.projectionMatrix),W.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),W.multiply(q.projectionMatrix),W.multiply(q.matrixWorldInverse),W.multiply(t.matrixWorld),j.setFromNormalAndCoplanarPoint(B,D),j.applyMatrix4(q.matrixWorldInverse),E.set(j.normal.x,j.normal.y,j.normal.z,j.constant);const r=q.projectionMatrix;V.x=(Math.sign(E.x)+r.elements[8])/r.elements[0],V.y=(Math.sign(E.y)+r.elements[9])/r.elements[5],V.z=-1,V.w=(1+r.elements[10])/r.elements[14],E.multiplyScalar(2/E.dot(V)),r.elements[2]=E.x,r.elements[6]=E.y,r.elements[10]=E.z+1,r.elements[14]=E.w}),[w]),[C,k,L,z]=d.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,format:r.RGBFormat,encoding:y.outputEncoding},u=new r.WebGLRenderTarget(n,n,a);u.depthBuffer=!0,u.depthTexture=new r.DepthTexture(n,n),u.depthTexture.format=r.DepthFormat,u.depthTexture.type=r.UnsignedShortType;const d=new r.WebGLRenderTarget(n,n,a);return[u,d,new i.BlurPass({gl:y,resolution:n,width:o[0],height:o[1],minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m}),{mirror:h,textureMatrix:W,mixBlur:e,tDiffuse:u.texture,tDepth:u.depthTexture,tDiffuseBlur:d.texture,hasBlur:R,mixStrength:t,minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m,transparent:!0,debug:f,distortion:x,distortionMap:T,mixContrast:M,"defines-USE_BLUR":R?"":void 0,"defines-USE_DEPTH":p>0?"":void 0,"defines-USE_DISTORTION":T?"":void 0}]}),[y,o,W,n,h,R,e,t,s,l,p,m,f,x,T,M]);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=y.xr.enabled,a=y.shadowMap.autoUpdate;I(),y.xr.enabled=!1,y.shadowMap.autoUpdate=!1,y.setRenderTarget(C),y.state.buffers.depth.setMask(!0),y.autoClear||y.clear(),y.render(g,q),R&&L.render(y,C,k),y.xr.enabled=r,y.shadowMap.autoUpdate=a,t.visible=!0,y.setRenderTarget(null)})),d.createElement("meshReflectorMaterialImpl",u.default({attach:"material",key:"key"+z["defines-USE_BLUR"]+z["defines-USE_DEPTH"]+z["defines-USE_DISTORTION"],ref:c.default([v,b])},z,S))}));exports.MeshReflectorMaterial=p;
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("react-merge-refs"),i=require("../materials/BlurPass.cjs.js"),o=require("../materials/MeshReflectorMaterial.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function l(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");var u=s(e),d=l(t),c=s(n);a.extend({MeshReflectorMaterialImpl:o.MeshReflectorMaterial});const p=d.forwardRef((({mixBlur:e=0,mixStrength:t=1,resolution:n=256,blur:o=[0,0],minDepthThreshold:s=.9,maxDepthThreshold:l=1,depthScale:p=0,depthToBlurRatioBias:m=.25,mirror:h=0,debug:f=0,distortion:x=1,mixContrast:M=1,distortionMap:S,reflectorOffset:T=0,...b},y)=>{const w=a.useThree((({gl:e})=>e)),g=a.useThree((({camera:e})=>e)),R=a.useThree((({scene:e})=>e)),v=(o=Array.isArray(o)?o:[o,o])[0]+o[1]>0,j=d.useRef(null),[D]=d.useState((()=>new r.Plane)),[B]=d.useState((()=>new r.Vector3)),[_]=d.useState((()=>new r.Vector3)),[O]=d.useState((()=>new r.Vector3)),[P]=d.useState((()=>new r.Matrix4)),[U]=d.useState((()=>new r.Vector3(0,0,-1))),[E]=d.useState((()=>new r.Vector4)),[V]=d.useState((()=>new r.Vector3)),[W]=d.useState((()=>new r.Vector3)),[F]=d.useState((()=>new r.Vector4)),[q]=d.useState((()=>new r.Matrix4)),[I]=d.useState((()=>new r.PerspectiveCamera)),C=d.useCallback((()=>{var e;const t=j.current.parent||(null==(e=j.current)?void 0:e.__r3f.parent);if(!t)return;if(_.setFromMatrixPosition(t.matrixWorld),O.setFromMatrixPosition(g.matrixWorld),P.extractRotation(t.matrixWorld),B.set(0,0,1),B.applyMatrix4(P),_.addScaledVector(B,T),V.subVectors(_,O),V.dot(B)>0)return;V.reflect(B).negate(),V.add(_),P.extractRotation(g.matrixWorld),U.set(0,0,-1),U.applyMatrix4(P),U.add(O),W.subVectors(_,U),W.reflect(B).negate(),W.add(_),I.position.copy(V),I.up.set(0,1,0),I.up.applyMatrix4(P),I.up.reflect(B),I.lookAt(W),I.far=g.far,I.updateMatrixWorld(),I.projectionMatrix.copy(g.projectionMatrix),q.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),q.multiply(I.projectionMatrix),q.multiply(I.matrixWorldInverse),q.multiply(t.matrixWorld),D.setFromNormalAndCoplanarPoint(B,_),D.applyMatrix4(I.matrixWorldInverse),E.set(D.normal.x,D.normal.y,D.normal.z,D.constant);const r=I.projectionMatrix;F.x=(Math.sign(E.x)+r.elements[8])/r.elements[0],F.y=(Math.sign(E.y)+r.elements[9])/r.elements[5],F.z=-1,F.w=(1+r.elements[10])/r.elements[14],E.multiplyScalar(2/E.dot(F)),r.elements[2]=E.x,r.elements[6]=E.y,r.elements[10]=E.z+1,r.elements[14]=E.w}),[g,T]),[k,L,z,A]=d.useMemo((()=>{const a={minFilter:r.LinearFilter,magFilter:r.LinearFilter,encoding:w.outputEncoding},u=new r.WebGLRenderTarget(n,n,a);u.depthBuffer=!0,u.depthTexture=new r.DepthTexture(n,n),u.depthTexture.format=r.DepthFormat,u.depthTexture.type=r.UnsignedShortType;const d=new r.WebGLRenderTarget(n,n,a);return[u,d,new i.BlurPass({gl:w,resolution:n,width:o[0],height:o[1],minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m}),{mirror:h,textureMatrix:q,mixBlur:e,tDiffuse:u.texture,tDepth:u.depthTexture,tDiffuseBlur:d.texture,hasBlur:v,mixStrength:t,minDepthThreshold:s,maxDepthThreshold:l,depthScale:p,depthToBlurRatioBias:m,transparent:!0,debug:f,distortion:x,distortionMap:S,mixContrast:M,"defines-USE_BLUR":v?"":void 0,"defines-USE_DEPTH":p>0?"":void 0,"defines-USE_DISTORTION":S?"":void 0}]}),[w,o,q,n,h,v,e,t,s,l,p,m,f,x,S,M]);return a.useFrame((()=>{var e;const t=j.current.parent||(null==(e=j.current)?void 0:e.__r3f.parent);if(!t)return;t.visible=!1;const r=w.xr.enabled,a=w.shadowMap.autoUpdate;C(),w.xr.enabled=!1,w.shadowMap.autoUpdate=!1,w.setRenderTarget(k),w.state.buffers.depth.setMask(!0),w.autoClear||w.clear(),w.render(R,I),v&&z.render(w,k,L),w.xr.enabled=r,w.shadowMap.autoUpdate=a,t.visible=!0,w.setRenderTarget(null)})),d.createElement("meshReflectorMaterialImpl",u.default({attach:"material",key:"key"+A["defines-USE_BLUR"]+A["defines-USE_DEPTH"]+A["defines-USE_DISTORTION"],ref:c.default([j,y])},A,b))}));exports.MeshReflectorMaterial=p;
@@ -15,6 +15,7 @@ export declare type Props = JSX.IntrinsicElements['meshStandardMaterial'] & {
15
15
  distortionMap?: Texture;
16
16
  distortion?: number;
17
17
  mixContrast?: number;
18
+ reflectorOffset?: number;
18
19
  };
19
20
  declare global {
20
21
  namespace JSX {
@@ -23,4 +24,4 @@ declare global {
23
24
  }
24
25
  }
25
26
  }
26
- export declare const MeshReflectorMaterial: React.ForwardRefExoticComponent<Pick<Props, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "dispose" | "type" | "id" | "uuid" | "name" | "userData" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | "map" | "transparent" | "fog" | "blur" | "opacity" | "precision" | "alphaTest" | "alphaToCoverage" | "blendDst" | "blendDstAlpha" | "blendEquation" | "blendEquationAlpha" | "blending" | "blendSrc" | "blendSrcAlpha" | "clipIntersection" | "clippingPlanes" | "clipShadows" | "colorWrite" | "defines" | "depthFunc" | "depthTest" | "depthWrite" | "format" | "stencilWrite" | "stencilFunc" | "stencilRef" | "stencilWriteMask" | "stencilFuncMask" | "stencilFail" | "stencilZFail" | "stencilZPass" | "isMaterial" | "needsUpdate" | "polygonOffset" | "polygonOffsetFactor" | "polygonOffsetUnits" | "premultipliedAlpha" | "dithering" | "side" | "shadowSide" | "toneMapped" | "vertexColors" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "resolution" | "wireframe" | "wireframeLinewidth" | "emissive" | "emissiveIntensity" | "emissiveMap" | "lightMap" | "lightMapIntensity" | "aoMap" | "aoMapIntensity" | "alphaMap" | "envMap" | "refractionRatio" | "wireframeLinecap" | "wireframeLinejoin" | "roughness" | "metalness" | "bumpMap" | "bumpScale" | "normalMap" | "normalMapType" | "normalScale" | "displacementMap" | "displacementScale" | "displacementBias" | "roughnessMap" | "metalnessMap" | "envMapIntensity" | "flatShading" | "isMeshStandardMaterial" | "minDepthThreshold" | "maxDepthThreshold" | "depthScale" | "depthToBlurRatioBias" | "mixBlur" | "mixStrength" | "mirror" | "debug" | "distortion" | "mixContrast" | "distortionMap"> & React.RefAttributes<MeshReflectorMaterialImpl>>;
27
+ export declare const MeshReflectorMaterial: React.ForwardRefExoticComponent<Pick<Props, "attach" | "args" | "children" | "key" | "onUpdate" | "blur" | "resolution" | keyof import("three").MeshStandardMaterial | "minDepthThreshold" | "maxDepthThreshold" | "depthScale" | "depthToBlurRatioBias" | "mixBlur" | "mixStrength" | "mirror" | "debug" | "distortion" | "mixContrast" | "distortionMap" | "reflectorOffset"> & React.RefAttributes<MeshReflectorMaterialImpl>>;
@@ -1,6 +1,6 @@
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 } from 'three';
3
+ import { Plane, Vector3, Matrix4, Vector4, PerspectiveCamera, LinearFilter, 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
6
  import { BlurPass } from '../materials/BlurPass.js';
@@ -23,6 +23,7 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
23
23
  distortion = 1,
24
24
  mixContrast = 1,
25
25
  distortionMap,
26
+ reflectorOffset = 0,
26
27
  ...props
27
28
  }, ref) => {
28
29
  const gl = useThree(({
@@ -60,6 +61,7 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
60
61
  rotationMatrix.extractRotation(parent.matrixWorld);
61
62
  normal.set(0, 0, 1);
62
63
  normal.applyMatrix4(rotationMatrix);
64
+ reflectorWorldPosition.addScaledVector(normal, reflectorOffset);
63
65
  view.subVectors(reflectorWorldPosition, cameraWorldPosition); // Avoid rendering when reflector is facing away
64
66
 
65
67
  if (view.dot(normal) > 0) return;
@@ -103,12 +105,11 @@ const MeshReflectorMaterial = /*#__PURE__*/React.forwardRef(({
103
105
  projectionMatrix.elements[6] = clipPlane.y;
104
106
  projectionMatrix.elements[10] = clipPlane.z + 1.0;
105
107
  projectionMatrix.elements[14] = clipPlane.w;
106
- }, [camera]);
108
+ }, [camera, reflectorOffset]);
107
109
  const [fbo1, fbo2, blurpass, reflectorProps] = React.useMemo(() => {
108
110
  const parameters = {
109
111
  minFilter: LinearFilter,
110
112
  magFilter: LinearFilter,
111
- format: RGBFormat,
112
113
  encoding: gl.outputEncoding
113
114
  };
114
115
  const fbo1 = new WebGLRenderTarget(resolution, resolution, parameters);
@@ -12,14 +12,12 @@ declare global {
12
12
  }
13
13
  }
14
14
  }
15
- export declare const MeshWobbleMaterial: React.ForwardRefExoticComponent<Pick<Omit<import("@react-three/fiber").Node<MeshStandardMaterial, [MeshStandardMaterialParameters]>, "color" | undefined> & {
16
- color?: import("@react-three/fiber").Color | undefined;
17
- } & {
15
+ export declare const MeshWobbleMaterial: React.ForwardRefExoticComponent<Pick<import("@react-three/fiber").ExtendedColors<import("@react-three/fiber").Overwrite<Partial<MeshStandardMaterial>, import("@react-three/fiber").NodeProps<MeshStandardMaterial, [MeshStandardMaterialParameters]>>> & {
18
16
  time?: number | undefined;
19
17
  factor?: number | undefined;
20
18
  speed?: number | undefined;
21
19
  } & {
22
20
  speed?: number | undefined;
23
21
  factor?: number | undefined;
24
- }, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "dispose" | "type" | "id" | "uuid" | "name" | "userData" | "toJSON" | "clone" | "copy" | "addEventListener" | "hasEventListener" | "removeEventListener" | "dispatchEvent" | "color" | "map" | "time" | "transparent" | "fog" | "opacity" | "speed" | "precision" | "alphaTest" | "alphaToCoverage" | "blendDst" | "blendDstAlpha" | "blendEquation" | "blendEquationAlpha" | "blending" | "blendSrc" | "blendSrcAlpha" | "clipIntersection" | "clippingPlanes" | "clipShadows" | "colorWrite" | "defines" | "depthFunc" | "depthTest" | "depthWrite" | "format" | "stencilWrite" | "stencilFunc" | "stencilRef" | "stencilWriteMask" | "stencilFuncMask" | "stencilFail" | "stencilZFail" | "stencilZPass" | "isMaterial" | "needsUpdate" | "polygonOffset" | "polygonOffsetFactor" | "polygonOffsetUnits" | "premultipliedAlpha" | "dithering" | "side" | "shadowSide" | "toneMapped" | "vertexColors" | "version" | "onBeforeCompile" | "customProgramCacheKey" | "setValues" | "wireframe" | "wireframeLinewidth" | "emissive" | "emissiveIntensity" | "emissiveMap" | "lightMap" | "lightMapIntensity" | "aoMap" | "aoMapIntensity" | "alphaMap" | "envMap" | "refractionRatio" | "wireframeLinecap" | "wireframeLinejoin" | "roughness" | "metalness" | "bumpMap" | "bumpScale" | "normalMap" | "normalMapType" | "normalScale" | "displacementMap" | "displacementScale" | "displacementBias" | "roughnessMap" | "metalnessMap" | "envMapIntensity" | "flatShading" | "isMeshStandardMaterial" | "factor"> & React.RefAttributes<unknown>>;
22
+ }, "attach" | "args" | "children" | "key" | "onUpdate" | "time" | "speed" | "factor" | keyof MeshStandardMaterial> & React.RefAttributes<unknown>>;
25
23
  export {};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=o(e),u=s(r);const c=u.forwardRef((({makeDefault:e,camera:r,regress:o,domElement:s,enableDamping:c=!0,onChange:i,onStart:d,onEnd:l,...f},b)=>{const m=t.useThree((({invalidate:e})=>e)),v=t.useThree((({camera:e})=>e)),p=t.useThree((({gl:e})=>e)),h=t.useThree((({events:e})=>e)),E=t.useThree((({set:e})=>e)),g=t.useThree((({get:e})=>e)),O=t.useThree((({performance:e})=>e)),j=r||v,T=s||("boolean"!=typeof h.connected?h.connected:p.domElement),y=u.useMemo((()=>new n.OrbitControls(j)),[j]);return t.useFrame((()=>{y.enabled&&y.update()})),u.useEffect((()=>{const e=e=>{m(),o&&O.regress(),i&&i(e)};return y.connect(T),y.addEventListener("change",e),d&&y.addEventListener("start",d),l&&y.addEventListener("end",l),()=>{y.removeEventListener("change",e),d&&y.removeEventListener("start",d),l&&y.removeEventListener("end",l),y.dispose()}}),[T,i,d,l,o,y,m]),u.useEffect((()=>{if(e){const e=g().controls;return E({controls:y}),()=>E({controls:e})}}),[e,y]),u.createElement("primitive",a.default({ref:b,object:y,enableDamping:c},f))}));exports.OrbitControls=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=o(e),u=s(r);const c=r.forwardRef((({makeDefault:e,camera:o,regress:s,domElement:c,enableDamping:i=!0,onChange:d,onStart:l,onEnd:f,...b},m)=>{const v=t.useThree((({invalidate:e})=>e)),p=t.useThree((({camera:e})=>e)),h=t.useThree((({gl:e})=>e)),E=t.useThree((({events:e})=>e)),g=t.useThree((({set:e})=>e)),O=t.useThree((({get:e})=>e)),j=t.useThree((({performance:e})=>e)),T=o||p,y=c||("boolean"!=typeof E.connected?E.connected:h.domElement),L=r.useMemo((()=>new n.OrbitControls(T)),[T]);return t.useFrame((()=>{L.enabled&&L.update()})),r.useEffect((()=>{const e=e=>{v(),s&&j.regress(),d&&d(e)};return L.connect(y),L.addEventListener("change",e),l&&L.addEventListener("start",l),f&&L.addEventListener("end",f),()=>{L.removeEventListener("change",e),l&&L.removeEventListener("start",l),f&&L.removeEventListener("end",f),L.dispose()}}),[y,d,l,f,s,L,v]),r.useEffect((()=>{if(e){const e=O().controls;return g({controls:L}),()=>g({controls:e})}}),[e,L]),u.createElement("primitive",a.default({ref:m,object:L,enableDamping:i},b))}));exports.OrbitControls=c;
@@ -1,16 +1,16 @@
1
1
  import { ReactThreeFiber } from '@react-three/fiber';
2
2
  import * as React from 'react';
3
- import * as THREE from 'three';
3
+ import type { Camera, Event } from 'three';
4
4
  import { OrbitControls as OrbitControlsImpl } from 'three-stdlib';
5
- export declare type OrbitControlsProps = ReactThreeFiber.Overwrite<ReactThreeFiber.Object3DNode<OrbitControlsImpl, typeof OrbitControlsImpl>, {
6
- target?: ReactThreeFiber.Vector3;
7
- camera?: THREE.Camera;
5
+ export declare type OrbitControlsProps = Omit<ReactThreeFiber.Overwrite<ReactThreeFiber.Object3DNode<OrbitControlsImpl, typeof OrbitControlsImpl>, {
6
+ camera?: Camera;
8
7
  domElement?: HTMLElement;
9
- regress?: boolean;
10
8
  enableDamping?: boolean;
11
9
  makeDefault?: boolean;
12
- onChange?: (e?: THREE.Event) => void;
13
- onStart?: (e?: THREE.Event) => void;
14
- onEnd?: (e?: THREE.Event) => void;
15
- }>;
16
- export declare const OrbitControls: React.ForwardRefExoticComponent<Pick<OrbitControlsProps, "object" | "attach" | "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" | "reset" | "enabled" | "update" | "onStart" | "keys" | "target" | "touches" | "connect" | "makeDefault" | "domElement" | "minDistance" | "maxDistance" | "minZoom" | "maxZoom" | "minPolarAngle" | "maxPolarAngle" | "minAzimuthAngle" | "maxAzimuthAngle" | "enableDamping" | "dampingFactor" | "enableZoom" | "zoomSpeed" | "enableRotate" | "rotateSpeed" | "enablePan" | "panSpeed" | "screenSpacePanning" | "keyPanSpeed" | "autoRotate" | "autoRotateSpeed" | "mouseButtons" | "target0" | "position0" | "zoom0" | "_domElementKeyEvents" | "getPolarAngle" | "getAzimuthalAngle" | "setPolarAngle" | "setAzimuthalAngle" | "getDistance" | "listenToKeyEvents" | "saveState" | "onEnd" | "regress"> & React.RefAttributes<OrbitControlsImpl>>;
10
+ onChange?: (e?: Event) => void;
11
+ onEnd?: (e?: Event) => void;
12
+ onStart?: (e?: Event) => void;
13
+ regress?: boolean;
14
+ target?: ReactThreeFiber.Vector3;
15
+ }>, 'ref'>;
16
+ export declare const OrbitControls: React.ForwardRefExoticComponent<OrbitControlsProps & React.RefAttributes<OrbitControlsImpl>>;