@react-three/drei 9.77.3 → 9.77.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1618,19 +1618,21 @@ The decal box has to intersect the surface, otherwise it will not be visible. if
1618
1618
  position={[0, 0, 0]} // Position of the decal
1619
1619
  rotation={[0, 0, 0]} // Rotation of the decal (can be a vector or a degree in radians)
1620
1620
  scale={1} // Scale of the decal
1621
+ polygonOffset
1622
+ polygonOffsetFactor={-1} // The mesh should take precedence over the original
1621
1623
  >
1622
1624
  <meshBasicMaterial map={texture} />
1623
1625
  </Decal>
1624
1626
  </mesh>
1625
1627
  ```
1626
1628
 
1627
- If you do not specify a material it will create a transparent meshStandardMaterial with a polygonOffsetFactor of -10 and all rest-props will be spread over it.
1629
+ If you do not specify a material it will create a transparent meshBasicMaterial with a polygonOffsetFactor of -10.
1628
1630
 
1629
1631
  ```jsx
1630
1632
  <mesh>
1631
1633
  <sphereGeometry />
1632
1634
  <meshBasicMaterial />
1633
- <Decal map={texture} roughness={0.5} />
1635
+ <Decal map={texture} />
1634
1636
  </mesh>
1635
1637
  ```
1636
1638
 
@@ -1638,7 +1640,7 @@ If declarative composition is not possible, use the `mesh` prop to define the su
1638
1640
 
1639
1641
  ```js
1640
1642
  <Decal mesh={ref}>
1641
- <meshBasicMaterial map={texture} />
1643
+ <meshBasicMaterial map={texture} polygonOffset polygonOffsetFactor={-1} />
1642
1644
  </Decal>
1643
1645
  ```
1644
1646
 
package/core/Decal.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),n=require("@react-three/fiber"),o=require("three-stdlib");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(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 s=a(e),c=i(r),l=i(t);function u(e=[0,0,0]){return function(e){return Array.isArray(e)}(e)?e:e instanceof l.Vector3||e instanceof l.Euler?[e.x,e.y,e.z]:[e,e,e]}const f=c.forwardRef((function({debug:e,mesh:r,children:t,position:a,rotation:i,scale:f,...p},m){const y=c.useRef(null);c.useImperativeHandle(m,(()=>y.current));const d=c.useRef(null);return c.useLayoutEffect((()=>{const e=(null==r?void 0:r.current)||y.current.parent,t=y.current;if(!(e instanceof l.Mesh))throw new Error('Decal must have a Mesh as parent or specify its "mesh" prop');const s={position:new l.Vector3,rotation:new l.Euler,scale:new l.Vector3(1,1,1)};if(e){n.applyProps(s,{position:a,scale:f});const r=e.matrixWorld.clone();if(e.matrixWorld.identity(),i&&"number"!=typeof i)n.applyProps(s,{rotation:i});else{const r=new l.Object3D;r.position.copy(s.position),r.lookAt(e.position),"number"==typeof i&&r.rotateZ(i),n.applyProps(s,{rotation:r.rotation})}return t.geometry=new o.DecalGeometry(e,s.position,s.rotation,s.scale),d.current&&(n.applyProps(d.current,s),d.current.traverse((e=>e.raycast=()=>null))),e.matrixWorld=r,()=>{t.geometry.dispose()}}}),[r,...u(a),...u(f),...u(i)]),c.createElement("mesh",{ref:y},t||c.createElement("meshStandardMaterial",s.default({transparent:!0,polygonOffset:!0,polygonOffsetFactor:-10},p)),e&&c.createElement("mesh",{ref:d},c.createElement("boxGeometry",null),c.createElement("meshNormalMaterial",{wireframe:!0}),c.createElement("axesHelper",null)))}));exports.Decal=f;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),o=require("three-stdlib");function a(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 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 s=a(e),l=i(t),c=i(r);function u(e=[0,0,0]){return function(e){return Array.isArray(e)}(e)?e:e instanceof c.Vector3||e instanceof c.Euler?[e.x,e.y,e.z]:[e,e,e]}const p=l.forwardRef((function({debug:e,depthTest:t=!1,polygonOffsetFactor:r=-10,map:a,mesh:i,children:p,position:f,rotation:m,scale:y,...d},b){const h=l.useRef(null);l.useImperativeHandle(b,(()=>h.current));const O=l.useRef(null);return l.useLayoutEffect((()=>{const e=(null==i?void 0:i.current)||h.current.parent,t=h.current;if(!(e instanceof c.Mesh))throw new Error('Decal must have a Mesh as parent or specify its "mesh" prop');const r={position:new c.Vector3,rotation:new c.Euler,scale:new c.Vector3(1,1,1)};if(e){n.applyProps(r,{position:f,scale:y});const a=e.matrixWorld.clone();if(e.matrixWorld.identity(),m&&"number"!=typeof m)n.applyProps(r,{rotation:m});else{const t=new c.Object3D;t.position.copy(r.position),t.lookAt(e.position),"number"==typeof m&&t.rotateZ(m),n.applyProps(r,{rotation:t.rotation})}return t.geometry=new o.DecalGeometry(e,r.position,r.rotation,r.scale),O.current&&(n.applyProps(O.current,r),O.current.traverse((e=>e.raycast=()=>null))),e.matrixWorld=a,()=>{t.geometry.dispose()}}}),[i,...u(f),...u(y),...u(m)]),l.createElement("mesh",s.default({ref:h,"material-transparent":!0,"material-polygonOffset":!0,"material-polygonOffsetFactor":r,"material-depthTest":t,"material-map":a},d),p,e&&l.createElement("mesh",{ref:O},l.createElement("boxGeometry",null),l.createElement("meshNormalMaterial",{wireframe:!0}),l.createElement("axesHelper",null)))}));exports.Decal=p;
package/core/Decal.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as THREE from 'three';
3
3
  import * as FIBER from '@react-three/fiber';
4
- export declare type DecalProps = Omit<JSX.IntrinsicElements['meshStandardMaterial'], 'children'> & {
4
+ export declare type DecalProps = Omit<JSX.IntrinsicElements['mesh'], 'children'> & {
5
5
  debug?: boolean;
6
6
  mesh?: React.MutableRefObject<THREE.Mesh>;
7
7
  position?: FIBER.Vector3;
@@ -9,5 +9,7 @@ export declare type DecalProps = Omit<JSX.IntrinsicElements['meshStandardMateria
9
9
  scale?: FIBER.Vector3;
10
10
  map?: THREE.Texture;
11
11
  children?: React.ReactNode;
12
+ polygonOffsetFactor?: number;
13
+ depthTest?: boolean;
12
14
  };
13
- export declare const Decal: React.ForwardRefExoticComponent<Pick<DecalProps, "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "scale" | "rotation" | "mesh" | keyof THREE.MeshStandardMaterial | "debug"> & React.RefAttributes<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
15
+ export declare const Decal: React.ForwardRefExoticComponent<Pick<DecalProps, "visible" | "attach" | "args" | "children" | "key" | "onUpdate" | "position" | "up" | "scale" | "rotation" | "matrix" | "quaternion" | "layers" | "dispose" | "type" | "id" | "uuid" | "name" | "parent" | "modelViewMatrix" | "normalMatrix" | "matrixWorld" | "matrixAutoUpdate" | "matrixWorldAutoUpdate" | "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" | "getObjectsByProperty" | "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 | "material" | "geometry" | "map" | "mesh" | "depthTest" | "polygonOffsetFactor" | "morphTargetInfluences" | "morphTargetDictionary" | "isMesh" | "updateMorphTargets" | "getVertexPosition" | "debug"> & React.RefAttributes<THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>;
package/core/Decal.js CHANGED
@@ -20,6 +20,9 @@ function vecToArray(vec = [0, 0, 0]) {
20
20
 
21
21
  const Decal = /*#__PURE__*/React.forwardRef(function Decal({
22
22
  debug,
23
+ depthTest = false,
24
+ polygonOffsetFactor = -10,
25
+ map,
23
26
  mesh,
24
27
  children,
25
28
  position,
@@ -81,14 +84,16 @@ const Decal = /*#__PURE__*/React.forwardRef(function Decal({
81
84
  target.geometry.dispose();
82
85
  };
83
86
  }
84
- }, [mesh, ...vecToArray(position), ...vecToArray(scale), ...vecToArray(rotation)]);
85
- return /*#__PURE__*/React.createElement("mesh", {
86
- ref: ref
87
- }, children || /*#__PURE__*/React.createElement("meshStandardMaterial", _extends({
88
- transparent: true,
89
- polygonOffset: true,
90
- polygonOffsetFactor: -10
91
- }, props)), debug && /*#__PURE__*/React.createElement("mesh", {
87
+ }, [mesh, ...vecToArray(position), ...vecToArray(scale), ...vecToArray(rotation)]); // <meshStandardMaterial transparent polygonOffset polygonOffsetFactor={-10} {...props} />}
88
+
89
+ return /*#__PURE__*/React.createElement("mesh", _extends({
90
+ ref: ref,
91
+ "material-transparent": true,
92
+ "material-polygonOffset": true,
93
+ "material-polygonOffsetFactor": polygonOffsetFactor,
94
+ "material-depthTest": depthTest,
95
+ "material-map": map
96
+ }, props), children, debug && /*#__PURE__*/React.createElement("mesh", {
92
97
  ref: helper
93
98
  }, /*#__PURE__*/React.createElement("boxGeometry", null), /*#__PURE__*/React.createElement("meshNormalMaterial", {
94
99
  wireframe: true