Files
avz-site/node_modules/@react-three/drei/core/Mask.js
T
2026-05-30 19:59:39 -03:00

43 lines
1.2 KiB
JavaScript

import _extends from '@babel/runtime/helpers/esm/extends';
import * as THREE from 'three';
import * as React from 'react';
const Mask = /* @__PURE__ */React.forwardRef(({
id = 1,
colorWrite = false,
depthWrite = false,
...props
}, fref) => {
const ref = React.useRef(null);
const spread = React.useMemo(() => ({
colorWrite,
depthWrite,
stencilWrite: true,
stencilRef: id,
stencilFunc: THREE.AlwaysStencilFunc,
stencilFail: THREE.ReplaceStencilOp,
stencilZFail: THREE.ReplaceStencilOp,
stencilZPass: THREE.ReplaceStencilOp
}), [id, colorWrite, depthWrite]);
React.useLayoutEffect(() => {
Object.assign(ref.current.material, spread);
});
React.useImperativeHandle(fref, () => ref.current, []);
return /*#__PURE__*/React.createElement("mesh", _extends({
ref: ref,
renderOrder: -id
}, props));
});
function useMask(id, inverse = false) {
return {
stencilWrite: true,
stencilRef: id,
stencilFunc: inverse ? THREE.NotEqualStencilFunc : THREE.EqualStencilFunc,
stencilFail: THREE.KeepStencilOp,
stencilZFail: THREE.KeepStencilOp,
stencilZPass: THREE.KeepStencilOp
};
}
export { Mask, useMask };