@react-three/drei 9.115.0 → 9.116.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/core/AccumulativeShadows.cjs.js +1 -1
- package/core/AdaptiveDpr.cjs.js +1 -1
- package/core/AdaptiveEvents.cjs.js +1 -1
- package/core/ArcballControls.cjs.js +1 -1
- package/core/AsciiRenderer.cjs.js +1 -1
- package/core/BBAnchor.cjs.js +1 -1
- package/core/Backdrop.cjs.js +1 -1
- package/core/BakeShadows.cjs.js +1 -1
- package/core/Billboard.cjs.js +1 -1
- package/core/Bounds.cjs.js +1 -1
- package/core/Bounds.js +0 -1
- package/core/Bvh.cjs.js +1 -1
- package/core/CameraControls.cjs.js +1 -1
- package/core/CameraShake.cjs.js +1 -1
- package/core/CatmullRomLine.cjs.js +1 -1
- package/core/Caustics.cjs.js +1 -1
- package/core/Center.cjs.js +1 -1
- package/core/Clone.cjs.js +1 -1
- package/core/Clone.js +1 -1
- package/core/Cloud.cjs.js +1 -1
- package/core/ComputedAttribute.cjs.js +1 -1
- package/core/ContactShadows.cjs.js +1 -1
- package/core/CubeCamera.cjs.js +1 -1
- package/core/CubeTexture.cjs.js +1 -1
- package/core/CubicBezierLine.cjs.js +1 -1
- package/core/CurveModifier.cjs.js +1 -1
- package/core/Decal.cjs.js +1 -1
- package/core/Detailed.cjs.js +1 -1
- package/core/DetectGPU.cjs.js +1 -1
- package/core/DeviceOrientationControls.cjs.js +1 -1
- package/core/Edges.cjs.js +1 -1
- package/core/Effects.cjs.js +1 -1
- package/core/Effects.js +3 -3
- package/core/Environment.cjs.js +1 -1
- package/core/Environment.js +1 -1
- package/core/Example.cjs.js +1 -1
- package/core/Fbo.cjs.js +1 -1
- package/core/Fbo.js +1 -1
- package/core/Fbx.cjs.js +1 -1
- package/core/FirstPersonControls.cjs.js +1 -1
- package/core/Fisheye.cjs.js +1 -1
- package/core/Float.cjs.js +1 -1
- package/core/FlyControls.cjs.js +1 -1
- package/core/GizmoHelper.cjs.js +1 -1
- package/core/GizmoViewcube.cjs.js +1 -1
- package/core/GizmoViewport.cjs.js +1 -1
- package/core/Gltf.cjs.js +1 -1
- package/core/GradientTexture.cjs.js +1 -1
- package/core/Grid.cjs.js +1 -1
- package/core/Helper.cjs.js +1 -1
- package/core/Hud.cjs.js +1 -1
- package/core/Hud.js +1 -1
- package/core/Image.cjs.js +1 -1
- package/core/Instances.cjs.js +1 -1
- package/core/Instances.d.ts +17 -17
- package/core/Ktx2.cjs.js +1 -1
- package/core/Ktx2.d.ts +1 -1
- package/core/Lightformer.cjs.js +1 -1
- package/core/Line.cjs.js +1 -1
- package/core/MapControls.cjs.js +1 -1
- package/core/MarchingCubes.cjs.js +1 -1
- package/core/Mask.cjs.js +1 -1
- package/core/MatcapTexture.cjs.js +1 -1
- package/core/MeshDiscardMaterial.cjs.js +1 -1
- package/core/MeshDistortMaterial.cjs.js +1 -1
- package/core/MeshPortalMaterial.cjs.js +1 -1
- package/core/MeshReflectorMaterial.cjs.js +1 -1
- package/core/MeshRefractionMaterial.cjs.js +1 -1
- package/core/MeshTransmissionMaterial.cjs.js +1 -1
- package/core/MeshWobbleMaterial.cjs.js +1 -1
- package/core/MotionPathControls.cjs.js +1 -1
- package/core/MultiMaterial.cjs.js +1 -1
- package/core/NormalTexture.cjs.js +1 -1
- package/core/OrbitControls.cjs.js +1 -1
- package/core/OrthographicCamera.cjs.js +1 -1
- package/core/Outlines.cjs.js +1 -1
- package/core/PerformanceMonitor.cjs.js +1 -1
- package/core/PerformanceMonitor.js +0 -1
- package/core/PerspectiveCamera.cjs.js +1 -1
- package/core/PointMaterial.cjs.js +1 -1
- package/core/PointerLockControls.cjs.js +1 -1
- package/core/Points.cjs.js +1 -1
- package/core/PositionalAudio.cjs.js +1 -1
- package/core/Preload.cjs.js +1 -1
- package/core/Progress.cjs.js +1 -1
- package/core/QuadraticBezierLine.cjs.js +1 -1
- package/core/Reflector.cjs.js +1 -1
- package/core/RenderCubeTexture.cjs.js +1 -1
- package/core/RenderCubeTexture.js +1 -1
- package/core/RenderTexture.cjs.js +1 -1
- package/core/RenderTexture.js +1 -1
- package/core/Resize.cjs.js +1 -1
- package/core/RoundedBox.cjs.js +1 -1
- package/core/Sampler.cjs.js +1 -1
- package/core/ScreenQuad.cjs.js +1 -1
- package/core/ScreenSizer.cjs.js +1 -1
- package/core/ScreenSpace.cjs.js +1 -1
- package/core/Segments.cjs.js +1 -1
- package/core/Shadow.cjs.js +1 -1
- package/core/ShadowAlpha.cjs.js +1 -1
- package/core/ShadowAlpha.js +1 -0
- package/core/Sky.cjs.js +1 -1
- package/core/Sparkles.cjs.js +1 -1
- package/core/Splat.cjs.js +1 -1
- package/core/SpotLight.cjs.js +1 -1
- package/core/SpriteAnimator.cjs.js +1 -1
- package/core/SpriteAnimator.d.ts +9 -0
- package/core/SpriteAnimator.js +35 -25
- package/core/Stage.cjs.js +1 -1
- package/core/Stars.cjs.js +1 -1
- package/core/Stats.cjs.js +1 -1
- package/core/StatsGl.cjs.js +1 -1
- package/core/Svg.cjs.js +1 -1
- package/core/Text.cjs.js +1 -1
- package/core/Text.js +0 -1
- package/core/Text3D.cjs.js +1 -1
- package/core/Texture.cjs.js +1 -1
- package/core/TrackballControls.cjs.js +1 -1
- package/core/Trail.cjs.js +1 -1
- package/core/Trail.js +1 -1
- package/core/TrailTexture.cjs.js +1 -1
- package/core/TransformControls.cjs.js +1 -1
- package/core/VideoTexture.cjs.js +1 -1
- package/core/Wireframe.cjs.js +1 -1
- package/core/calculateScaleFactor.cjs.js +1 -1
- package/core/index.cjs.js +1 -1
- package/core/index.js +4 -4
- package/core/meshBounds.cjs.js +1 -1
- package/core/shaderMaterial.cjs.js +1 -1
- package/core/shapes.cjs.js +1 -1
- package/core/softShadows.cjs.js +1 -1
- package/core/softShadows.js +1 -0
- package/core/useAnimations.cjs.js +1 -1
- package/core/useAnimations.js +0 -1
- package/core/useAspect.cjs.js +1 -1
- package/core/useBoxProjectedEnv.cjs.js +1 -1
- package/core/useCamera.cjs.js +1 -1
- package/core/useContextBridge.cjs.js +1 -1
- package/core/useDepthBuffer.cjs.js +1 -1
- package/core/useEnvironment.cjs.js +1 -1
- package/core/useEnvironment.d.ts +2 -2
- package/core/useFont.cjs.js +1 -1
- package/core/useIntersect.cjs.js +1 -1
- package/core/useSpriteLoader.cjs.js +1 -1
- package/helpers/constants.cjs.js +1 -1
- package/helpers/deprecated.cjs.js +1 -1
- package/helpers/environment-assets.cjs.js +1 -1
- package/helpers/useEffectfulState.cjs.js +1 -1
- package/helpers/useEffectfulState.js +1 -3
- package/index.cjs.js +1 -1
- package/materials/BlurPass.cjs.js +1 -1
- package/materials/ConvolutionMaterial.cjs.js +1 -1
- package/materials/DiscardMaterial.cjs.js +1 -1
- package/materials/MeshReflectorMaterial.cjs.js +1 -1
- package/materials/MeshRefractionMaterial.cjs.js +1 -1
- package/materials/MeshRefractionMaterial.js +2 -0
- package/materials/SpotLightMaterial.cjs.js +1 -1
- package/materials/WireframeMaterial.cjs.js +1 -1
- package/native/index.cjs.js +1 -1
- package/native/index.js +4 -4
- package/package.json +14 -14
- package/web/CycleRaycast.cjs.js +1 -1
- package/web/DragControls.cjs.js +1 -1
- package/web/FaceControls.cjs.js +1 -1
- package/web/FaceControls.d.ts +2 -1
- package/web/FaceControls.js +6 -2
- package/web/FaceLandmarker.cjs.js +1 -1
- package/web/FaceLandmarker.js +1 -1
- package/web/Facemesh.cjs.js +1 -1
- package/web/Facemesh.d.ts +14 -47
- package/web/Facemesh.js +1 -2
- package/web/Html.cjs.js +1 -1
- package/web/Html.js +2 -2
- package/web/KeyboardControls.cjs.js +1 -1
- package/web/Loader.cjs.js +1 -1
- package/web/PresentationControls.cjs.js +1 -1
- package/web/ScrollControls.cjs.js +1 -1
- package/web/ScrollControls.js +1 -1
- package/web/Select.cjs.js +1 -1
- package/web/View.cjs.js +1 -1
- package/web/View.js +1 -1
- package/web/index.cjs.js +1 -1
- package/web/index.js +6 -6
- package/web/pivotControls/AxisArrow.cjs.js +1 -1
- package/web/pivotControls/AxisRotator.cjs.js +1 -1
- package/web/pivotControls/PlaneSlider.cjs.js +1 -1
- package/web/pivotControls/ScalingSphere.cjs.js +1 -1
- package/web/pivotControls/context.cjs.js +1 -1
- package/web/pivotControls/index.cjs.js +1 -1
- package/web/useCursor.cjs.js +1 -1
package/core/Environment.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),n=require("react"),r=require("@react-three/fiber"),t=require("three"),o=require("three-stdlib"),u=require("./useEnvironment.cjs.js");function a(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}require("@monogrid/gainmap-js"),require("../helpers/environment-assets.cjs.js"),require("../helpers/deprecated.cjs.js");var i=a(n);function c(e,n,t,o,u={}){var a,i,c,s,l;u={backgroundBlurriness:null!==(a=u.blur)&&void 0!==a?a:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...u};const d=(e=>{return(n=e).current&&n.current.isScene?e.current:e;var n})(n||t),m=d.background,b=d.environment,g={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!==(i=null==(c=d.backgroundRotation)||null==c.clone?void 0:c.clone())&&void 0!==i?i:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!==(s=null==(l=d.environmentRotation)||null==l.clone?void 0:l.clone())&&void 0!==s?s:[0,0,0]};return"only"!==e&&(d.environment=o),e&&(d.background=o),r.applyProps(d,u),()=>{"only"!==e&&(d.environment=b),e&&(d.background=m),r.applyProps(d,g)}}function s({scene:e,background:n=!1,map:t,...o}){const u=r.useThree((e=>e.scene));return i.useLayoutEffect((()=>{if(t)return c(n,e,u,t,o)})),null}function l({background:e=!1,scene:n,blur:t,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:s,environmentIntensity:l,environmentRotation:d,...m}){const b=u.useEnvironment(m),g=r.useThree((e=>e.scene));return i.useLayoutEffect((()=>c(e,n,g,b,{blur:t,backgroundBlurriness:o,backgroundIntensity:a,backgroundRotation:s,environmentIntensity:l,environmentRotation:d}))),null}function d({children:e,near:n=1,far:o=1e3,resolution:u=256,frames:a=1,map:d,background:m=!1,blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:p,environmentIntensity:f,environmentRotation:k,scene:y,files:E,path:h,preset:I,extensions:R}){const j=r.useThree((e=>e.gl)),x=r.useThree((e=>e.scene)),q=i.useRef(null),[P]=i.useState((()=>new t.Scene)),B=i.useMemo((()=>{const e=new t.WebGLCubeRenderTarget(u);return e.texture.type=t.HalfFloatType,e}),[u]);i.useLayoutEffect((()=>(1===a&&q.current.update(j,P),c(m,y,x,B.texture,{blur:b,backgroundBlurriness:g,backgroundIntensity:v,backgroundRotation:p,environmentIntensity:f,environmentRotation:k}))),[e,P,B.texture,y,x,m,a,j]);let O=1;return r.useFrame((()=>{(a===1/0||O<a)&&(q.current.update(j,P),O++)})),i.createElement(i.Fragment,null,r.createPortal(i.createElement(i.Fragment,null,e,i.createElement("cubeCamera",{ref:q,args:[n,o,B]}),E||I?i.createElement(l,{background:!0,files:E,preset:I,path:h,extensions:R}):d?i.createElement(s,{background:!0,map:d,extensions:R}):null),P))}function m(n){var t,a,c,l;const d=u.useEnvironment(n),m=n.map||d;i.useMemo((()=>r.extend({GroundProjectedEnvImpl:o.GroundProjectedEnv})),[]);const b=i.useMemo((()=>[m]),[m]),g=null==(t=n.ground)?void 0:t.height,v=null==(a=n.ground)?void 0:a.radius,p=null!==(c=null==(l=n.ground)?void 0:l.scale)&&void 0!==c?c:1e3;return i.createElement(i.Fragment,null,i.createElement(s,e({},n,{map:m})),i.createElement("groundProjectedEnvImpl",{args:b,scale:p,height:g,radius:v}))}exports.Environment=function(e){return e.ground?i.createElement(m,e):e.map?i.createElement(s,e):e.children?i.createElement(d,e):i.createElement(l,e)},exports.EnvironmentCube=l,exports.EnvironmentMap=s,exports.EnvironmentPortal=d;
|
package/core/Environment.js
CHANGED
|
@@ -126,7 +126,7 @@ function EnvironmentPortal({
|
|
|
126
126
|
count++;
|
|
127
127
|
}
|
|
128
128
|
});
|
|
129
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(
|
|
129
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(/*#__PURE__*/React.createElement(React.Fragment, null, children, /*#__PURE__*/React.createElement("cubeCamera", {
|
|
130
130
|
ref: camera,
|
|
131
131
|
args: [near, far, fbo]
|
|
132
132
|
}), files || preset ? /*#__PURE__*/React.createElement(EnvironmentCube, {
|
package/core/Example.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),r=require("./Text3D.cjs.js"),t=require("./Center.cjs.js");function a(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/extends"),require("@react-three/fiber"),require("three-stdlib"),require("./useFont.cjs.js"),require("suspend-react"),require("three");var c=a(e);const n=c.forwardRef((({font:e,color:a="#cbcbcb",bevelSize:n=.04,debug:l=!1,children:u,...i},s)=>{const[o,b]=c.useState(0),f=c.useCallback(((e=1)=>b(o+e)),[o]),m=c.useCallback(((e=1)=>b(o-e)),[o]),d=c.useMemo((()=>({incr:f,decr:m})),[f,m]);return c.useImperativeHandle(s,(()=>d),[d]),c.createElement("group",i,c.createElement(c.Suspense,{fallback:null},c.createElement(t.Center,{top:!0,cacheKey:JSON.stringify({counter:o,font:e})},c.createElement(r.Text3D,{bevelEnabled:!0,bevelSize:n,font:e},l?c.createElement("meshNormalMaterial",{wireframe:!0}):c.createElement("meshStandardMaterial",{color:a}),o))),u)}));exports.Example=n;
|
package/core/Fbo.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),t=require("three"),r=require("@react-three/fiber");function n(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 u=n(e),i=n(t);function s(e,t,n){const s=r.useThree((e=>e.size)),a=r.useThree((e=>e.viewport)),o="number"==typeof e?e:s.width*a.dpr,c="number"==typeof t?t:s.height*a.dpr,l=("number"==typeof e?n:e)||{},{samples:p=0,depth:f,...h}=l,d=u.useMemo((()=>{const e=new i.WebGLRenderTarget(o,c,{minFilter:i.LinearFilter,magFilter:i.LinearFilter,type:i.HalfFloatType,...h});return f&&(e.depthTexture=new i.DepthTexture(o,c,i.FloatType)),e.samples=p,e}),[]);return u.useLayoutEffect((()=>{d.setSize(o,c),p&&(d.samples=p)}),[p,d,o,c]),u.useEffect((()=>()=>d.dispose()),[]),d}exports.Fbo=({children:e,width:t,height:r,...n})=>{const i=s(t,r,n);return u.createElement(u.Fragment,null,null==e?void 0:e(i))},exports.useFBO=s;
|
package/core/Fbo.js
CHANGED
|
@@ -6,7 +6,7 @@ import { useThree } from '@react-three/fiber';
|
|
|
6
6
|
|
|
7
7
|
// 👇 uncomment when TS version supports function overloads
|
|
8
8
|
// export function useFBO(settings?: FBOSettings)
|
|
9
|
-
function useFBO(
|
|
9
|
+
function useFBO(/** Width in pixels, or settings (will render fullscreen by default) */
|
|
10
10
|
width, /** Height in pixels */
|
|
11
11
|
height, /**Settings */
|
|
12
12
|
settings) {
|
package/core/Fbx.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three-stdlib"),n=require("@react-three/fiber"),u=require("./Clone.cjs.js");function a(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("three");var c=a(r);function o(e){return n.useLoader(t.FBXLoader,e)}o.preload=e=>n.useLoader.preload(t.FBXLoader,e),o.clear=e=>n.useLoader.clear(t.FBXLoader,e),exports.Fbx=function({path:r,...t}){const n=o(r).children[0];return c.createElement(u.Clone,e({},t,{object:n}))},exports.useFBX=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),n=require("three-stdlib");function s(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 o=s(r);const u=o.forwardRef((({domElement:r,makeDefault:s,...u},c)=>{const a=t.useThree((e=>e.camera)),i=t.useThree((e=>e.gl)),l=t.useThree((e=>e.events)),f=t.useThree((e=>e.get)),b=t.useThree((e=>e.set)),m=r||l.connected||i.domElement,[d]=o.useState((()=>new n.FirstPersonControls(a,m)));return o.useEffect((()=>{if(s){const e=f().controls;return b({controls:d}),()=>b({controls:e})}}),[s,d]),t.useFrame(((e,r)=>{d.update(r)}),-1),d?o.createElement("primitive",e({ref:c,object:d},u)):null}));exports.FirstPersonControls=u;
|
package/core/Fisheye.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),a=require("@react-three/fiber"),n=require("./RenderCubeTexture.cjs.js");function i(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var c=i(r),o=i(t);function s({api:e}){const r=new c.Vector3,t=new c.Quaternion,n=new c.Vector3,i=new c.Euler(0,Math.PI,0);return a.useFrame((a=>{a.camera.matrixWorld.decompose(r,t,n),e.current.camera.position.copy(r),e.current.camera.quaternion.setFromEuler(i).premultiply(t)})),null}exports.Fisheye=function({renderPriority:r=1,zoom:t=0,segments:i=64,children:u,resolution:l=896,...m}){const p=o.useRef(null),f=o.useRef(null),{width:h,height:y}=a.useThree((e=>e.size)),[d]=o.useState((()=>new c.OrthographicCamera));o.useLayoutEffect((()=>{d.position.set(0,0,100),d.zoom=100,d.left=h/-2,d.right=h/2,d.top=y/2,d.bottom=y/-2,d.updateProjectionMatrix()}),[h,y]);const g=Math.sqrt(h*h+y*y)/100*(.5+t/2),b=new c.Vector3,w=new c.Sphere(new c.Vector3,g),x=new c.Matrix3,E=o.useCallback(((e,r,t)=>{r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,d),r.raycaster.ray.intersectSphere(w,b)&&(b.normalize(),x.getNormalMatrix(f.current.camera.matrixWorld),f.current.camera.getWorldPosition(r.raycaster.ray.origin),r.raycaster.ray.direction.set(0,0,1).reflect(b),r.raycaster.ray.direction.x*=-1,r.raycaster.ray.direction.applyNormalMatrix(x).multiplyScalar(-1))}),[]);return a.useFrame((e=>{r&&e.gl.render(p.current,d)}),r),o.createElement(o.Fragment,null,o.createElement("mesh",e({ref:p},m,{scale:g}),o.createElement("sphereGeometry",{args:[1,i,i]}),o.createElement("meshBasicMaterial",null,o.createElement(n.RenderCubeTexture,{compute:E,attach:"envMap",flip:!0,resolution:l,ref:f},u,o.createElement(s,{api:f})))))};
|
package/core/Float.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),t=require("@react-three/fiber"),r=require("three");function n(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=n(e),i=n(r);const o=a.forwardRef((({children:e,enabled:r=!0,speed:n=1,rotationIntensity:o=1,floatIntensity:u=1,floatingRange:c=[-.1,.1],autoInvalidate:l=!1,...s},d)=>{const f=a.useRef(null);a.useImperativeHandle(d,(()=>f.current),[]);const p=a.useRef(1e4*Math.random());return t.useFrame((e=>{var t,a;if(!r||0===n)return;l&&e.invalidate();const s=p.current+e.clock.getElapsedTime();f.current.rotation.x=Math.cos(s/4*n)/8*o,f.current.rotation.y=Math.sin(s/4*n)/8*o,f.current.rotation.z=Math.sin(s/4*n)/20*o;let d=Math.sin(s/4*n)/10;d=i.MathUtils.mapLinear(d,-.1,.1,null!==(t=null==c?void 0:c[0])&&void 0!==t?t:-.1,null!==(a=null==c?void 0:c[1])&&void 0!==a?a:.1),f.current.position.y=d*u,f.current.updateMatrix()})),a.createElement("group",s,a.createElement("group",{ref:f,matrixAutoUpdate:!1},e))}));exports.Float=o;
|
package/core/FlyControls.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),n=require("three-stdlib");function s(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 o=s(t);const c=o.forwardRef((({domElement:t,...s},c)=>{const{onChange:u,makeDefault:a,...i}=s,l=r.useThree((e=>e.invalidate)),f=r.useThree((e=>e.camera)),d=r.useThree((e=>e.gl)),m=r.useThree((e=>e.events)),v=r.useThree((e=>e.get)),h=r.useThree((e=>e.set)),b=t||m.connected||d.domElement,E=o.useMemo((()=>new n.FlyControls(f)),[f]);return o.useEffect((()=>(E.connect(b),()=>{E.dispose()})),[b,E,l]),o.useEffect((()=>{const e=e=>{l(),u&&u(e)};return null==E.addEventListener||E.addEventListener("change",e),()=>null==E.removeEventListener?void 0:E.removeEventListener("change",e)}),[u,l]),o.useEffect((()=>{if(a){const e=v().controls;return h({controls:E}),()=>h({controls:e})}}),[a,E]),r.useFrame(((e,r)=>E.update(r))),o.createElement("primitive",e({ref:c,object:E,args:[f,b]},i))}));exports.FlyControls=c;
|
package/core/GizmoHelper.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),r=require("@react-three/fiber"),t=require("three"),n=require("./OrthographicCamera.cjs.js"),o=require("./Hud.cjs.js");function i(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/extends"),require("./Fbo.cjs.js");var a=i(e);const u=a.createContext({}),c=2*Math.PI,s=new t.Object3D,l=new t.Matrix4,[p,d]=[new t.Quaternion,new t.Quaternion],f=new t.Vector3,h=new t.Vector3,m=e=>"getTarget"in e;exports.GizmoHelper=({alignment:e="bottom-right",margin:i=[80,80],renderPriority:g=1,onUpdate:y,onTarget:b,children:w})=>{const j=r.useThree((e=>e.size)),q=r.useThree((e=>e.camera)),v=r.useThree((e=>e.controls)),x=r.useThree((e=>e.invalidate)),T=a.useRef(null),O=a.useRef(null),P=a.useRef(!1),C=a.useRef(0),R=a.useRef(new t.Vector3(0,0,0)),z=a.useRef(new t.Vector3(0,0,0));a.useEffect((()=>{z.current.copy(q.up)}),[q]);const E=a.useCallback((e=>{P.current=!0,(v||b)&&(R.current=(null==b?void 0:b())||(m(v)?v.getTarget(R.current):null==v?void 0:v.target)),C.current=q.position.distanceTo(f),p.copy(q.quaternion),h.copy(e).multiplyScalar(C.current).add(f),s.lookAt(h),d.copy(s.quaternion),x()}),[v,q,b,x]);r.useFrame(((e,r)=>{if(O.current&&T.current){var t;if(P.current)if(p.angleTo(d)<.01)P.current=!1,"minPolarAngle"in v&&q.up.copy(z.current);else{const e=r*c;p.rotateTowards(d,e),q.position.set(0,0,1).applyQuaternion(p).multiplyScalar(C.current).add(R.current),q.up.set(0,1,0).applyQuaternion(p).normalize(),q.quaternion.copy(p),m(v)&&v.setPosition(q.position.x,q.position.y,q.position.z),y?y():v&&v.update(r),x()}l.copy(q.matrix).invert(),null==(t=T.current)||t.quaternion.setFromRotationMatrix(l)}}));const k=a.useMemo((()=>({tweenCamera:E})),[E]),[M,Q]=i,V=e.endsWith("-center")?0:e.endsWith("-left")?-j.width/2+M:j.width/2-M,W=e.startsWith("center-")?0:e.startsWith("top-")?j.height/2-Q:-j.height/2+Q;return a.createElement(o.Hud,{renderPriority:g},a.createElement(u.Provider,{value:k},a.createElement(n.OrthographicCamera,{makeDefault:!0,ref:O,position:[0,0,200]}),a.createElement("group",{ref:T,position:[V,W,0]},w)))},exports.useGizmoContext=()=>a.useContext(u);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";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){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("./Fbo.cjs.js"),require("./Hud.cjs.js");var i=n(t);const s="#f0f0f0",c="#999",l="black",p="black",m=["Right","Left","Top","Bottom","Front","Back"],u=e=>new a.Vector3(...e).multiplyScalar(.38),h=[[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(u),f=[.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(u),y=g.map((e=>e.toArray().map((e=>0==e?.5:.25)))),b=({hover:e,index:t,font:o="20px Inter var, Arial, sans-serif",faces:n=m,color:u=s,hoverColor:h=c,textColor:f=l,strokeColor:g=p,opacity:y=1})=>{const b=r.useThree((e=>e.gl)),d=i.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const r=e.getContext("2d");return r.fillStyle=u,r.fillRect(0,0,e.width,e.height),r.strokeStyle=g,r.strokeRect(0,0,e.width,e.height),r.font=o,r.textAlign="center",r.fillStyle=f,r.fillText(n[t].toUpperCase(),64,76),new a.CanvasTexture(e)}),[t,n,o,u,f,g]);return i.createElement("meshBasicMaterial",{map:d,"map-anisotropy":b.capabilities.getMaxAnisotropy()||1,attach:`material-${t}`,color:e?h:"white",transparent:!0,opacity:y})},d=t=>{const{tweenCamera:r}=o.useGizmoContext(),[a,n]=i.useState(null);return i.createElement("mesh",{onPointerOut:e=>{e.stopPropagation(),n(null)},onPointerMove:e=>{e.stopPropagation(),n(Math.floor(e.faceIndex/2))},onClick:t.onClick||(e=>{e.stopPropagation(),r(e.face.normal)})},[...Array(6)].map(((r,o)=>i.createElement(b,e({key:o,index:o,hover:a===o},t)))),i.createElement("boxGeometry",null))},x=({onClick:e,dimensions:t,position:r,hoverColor:a=c})=>{const{tweenCamera:n}=o.useGizmoContext(),[s,l]=i.useState(!1);return i.createElement("mesh",{scale:1.01,position:r,onPointerOver:e=>{e.stopPropagation(),l(!0)},onPointerOut:e=>{e.stopPropagation(),l(!1)},onClick:e||(e=>{e.stopPropagation(),n(r)})},i.createElement("meshBasicMaterial",{color:s?a:"white",transparent:!0,opacity:.6,visible:s}),i.createElement("boxGeometry",{args:t}))};exports.GizmoViewcube=t=>i.createElement("group",{scale:[60,60,60]},i.createElement(d,t),g.map(((r,o)=>i.createElement(x,e({key:o,position:r,dimensions:y[o]},t)))),h.map(((r,o)=>i.createElement(x,e({key:o,position:r,dimensions:f},t)))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three"),o=require("./GizmoHelper.cjs.js");function l(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("./OrthographicCamera.cjs.js"),require("./Fbo.cjs.js"),require("./Hud.cjs.js");var n=l(t);function i({scale:e=[.8,.05,.05],color:t,rotation:r}){return n.createElement("group",{rotation:r},n.createElement("mesh",{position:[.4,0,0]},n.createElement("boxGeometry",{args:e}),n.createElement("meshBasicMaterial",{color:t,toneMapped:!1})))}function c({onClick:t,font:o,disabled:l,arcStyle:i,label:c,labelColor:s,axisHeadScale:p=1,...u}){const m=r.useThree((e=>e.gl)),d=n.useMemo((()=>{const e=document.createElement("canvas");e.width=64,e.height=64;const t=e.getContext("2d");return t.beginPath(),t.arc(32,32,16,0,2*Math.PI),t.closePath(),t.fillStyle=i,t.fill(),c&&(t.font=o,t.textAlign="center",t.fillStyle=s,t.fillText(c,32,41)),new a.CanvasTexture(e)}),[i,c,s,o]),[f,b]=n.useState(!1),h=(c?1:.75)*(f?1.2:1)*p;return n.createElement("sprite",e({scale:h,onPointerOver:l?void 0:e=>{e.stopPropagation(),b(!0)},onPointerOut:l?void 0:t||(e=>{e.stopPropagation(),b(!1)})},u),n.createElement("spriteMaterial",{map:d,"map-anisotropy":m.capabilities.getMaxAnisotropy()||1,alphaTest:.3,opacity:c?1:.75,toneMapped:!1}))}exports.GizmoViewport=({hideNegativeAxes:t,hideAxisHeads:r,disabled:a,font:l="18px Inter var, Arial, sans-serif",axisColors:s=["#ff2060","#20df80","#2080ff"],axisHeadScale:p=1,axisScale:u,labels:m=["X","Y","Z"],labelColor:d="#000",onClick:f,...b})=>{const[h,E,g]=s,{tweenCamera:x}=o.useGizmoContext(),y={font:l,disabled:a,labelColor:d,onClick:f,axisHeadScale:p,onPointerDown:a?void 0:e=>{x(e.object.position),e.stopPropagation()}};return n.createElement("group",e({scale:40},b),n.createElement(i,{color:h,rotation:[0,0,0],scale:u}),n.createElement(i,{color:E,rotation:[0,0,Math.PI/2],scale:u}),n.createElement(i,{color:g,rotation:[0,-Math.PI/2,0],scale:u}),!r&&n.createElement(n.Fragment,null,n.createElement(c,e({arcStyle:h,position:[1,0,0],label:m[0]},y)),n.createElement(c,e({arcStyle:E,position:[0,1,0],label:m[1]},y)),n.createElement(c,e({arcStyle:g,position:[0,0,1],label:m[2]},y)),!t&&n.createElement(n.Fragment,null,n.createElement(c,e({arcStyle:h,position:[-1,0,0]},y)),n.createElement(c,e({arcStyle:E,position:[0,-1,0]},y)),n.createElement(c,e({arcStyle:g,position:[0,0,-1]},y)))))};
|
package/core/Gltf.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three-stdlib"),o=require("@react-three/fiber"),c=require("./Clone.cjs.js");function s(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("three");var a=s(r);let n=null,d="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function u(e=!0,r=!0,o){return c=>{o&&o(c),e&&(n||(n=new t.DRACOLoader),n.setDecoderPath("string"==typeof e?e:d),c.setDRACOLoader(n)),r&&c.setMeshoptDecoder("function"==typeof t.MeshoptDecoder?t.MeshoptDecoder():t.MeshoptDecoder)}}const i=(e,r,c,s)=>o.useLoader(t.GLTFLoader,e,u(r,c,s));i.preload=(e,r,c,s)=>o.useLoader.preload(t.GLTFLoader,e,u(r,c,s)),i.clear=e=>o.useLoader.clear(t.GLTFLoader,e),i.setDecoderPath=e=>{d=e};const l=a.forwardRef((({src:r,useDraco:t,useMeshOpt:o,extendLoader:s,...n},d)=>{const{scene:u}=i(r,t,o,s);return a.createElement(c.Clone,e({ref:d},n,{object:u}))}));exports.Gltf=l,exports.useGLTF=i;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("@react-three/fiber"),a=require("three");function n(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)}var i=n(t),o=n(a);let c=function(e){return e.Linear="linear",e.Radial="radial",e}({});exports.GradientTexture=function({stops:t,colors:a,size:n=1024,width:u=16,type:l=c.Linear,innerCircleRadius:s=0,outerCircleRadius:d="auto",...h}){const f=r.useThree((e=>e.gl)),p=i.useMemo((()=>{const e=document.createElement("canvas"),r=e.getContext("2d");let i;if(e.width=u,e.height=n,l===c.Linear)i=r.createLinearGradient(0,0,0,n);else{const t=e.width/2,a=e.height/2,n="auto"!==d?Math.abs(Number(d)):Math.sqrt(t**2+a**2);i=r.createRadialGradient(t,a,Math.abs(s),t,a,n)}const h=new o.Color;let f=t.length;for(;f--;)i.addColorStop(t[f],h.set(a[f]).getStyle());return r.save(),r.fillStyle=i,r.fillRect(0,0,u,n),r.restore(),e}),[t]);return i.createElement("canvasTexture",e({colorSpace:f.outputColorSpace,args:[p],attach:"map"},h))},exports.GradientType=c;
|
package/core/Grid.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),n=require("react"),o=require("three"),i=require("@react-three/fiber"),r=require("./shaderMaterial.cjs.js"),t=require("../helpers/constants.cjs.js");function l(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(o){if("default"!==o){var i=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,i.get?i:{enumerable:!0,get:function(){return e[o]}})}})),n.default=e,Object.freeze(n)}var a=l(n),s=l(o);const c=r.shaderMaterial({cellSize:.5,sectionSize:1,fadeDistance:100,fadeStrength:1,fadeFrom:1,cellThickness:.5,sectionThickness:1,cellColor:new s.Color,sectionColor:new s.Color,infiniteGrid:!1,followCamera:!1,worldCamProjPosition:new s.Vector3,worldPlanePosition:new s.Vector3},"\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform vec3 worldPlanePosition;\n uniform float fadeDistance;\n uniform bool infiniteGrid;\n uniform bool followCamera;\n\n void main() {\n localPosition = position.xzy;\n if (infiniteGrid) localPosition *= 1.0 + fadeDistance;\n \n worldPosition = modelMatrix * vec4(localPosition, 1.0);\n if (followCamera) {\n worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);\n localPosition = (inverse(modelMatrix) * worldPosition).xyz;\n }\n\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }\n ",`\n varying vec3 localPosition;\n varying vec4 worldPosition;\n\n uniform vec3 worldCamProjPosition;\n uniform float cellSize;\n uniform float sectionSize;\n uniform vec3 cellColor;\n uniform vec3 sectionColor;\n uniform float fadeDistance;\n uniform float fadeStrength;\n uniform float fadeFrom;\n uniform float cellThickness;\n uniform float sectionThickness;\n\n float getGrid(float size, float thickness) {\n vec2 r = localPosition.xz / size;\n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y) + 1.0 - thickness;\n return 1.0 - min(line, 1.0);\n }\n\n void main() {\n float g1 = getGrid(cellSize, cellThickness);\n float g2 = getGrid(sectionSize, sectionThickness);\n\n vec3 from = worldCamProjPosition*vec3(fadeFrom);\n float dist = distance(from, worldPosition.xyz);\n float d = 1.0 - min(dist / fadeDistance, 1.0);\n vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));\n\n gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));\n gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);\n if (gl_FragColor.a <= 0.0) discard;\n\n #include <tonemapping_fragment>\n #include <${t.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }\n `),f=a.forwardRef((({args:n,cellColor:o="#000000",sectionColor:r="#2080ff",cellSize:t=.5,sectionSize:l=1,followCamera:f=!1,infiniteGrid:d=!1,fadeDistance:m=100,fadeStrength:u=1,fadeFrom:g=1,cellThickness:P=.5,sectionThickness:v=1,side:w=s.BackSide,...C},h)=>{i.extend({GridMaterial:c});const p=a.useRef(null);a.useImperativeHandle(h,(()=>p.current),[]);const x=new s.Plane,z=new s.Vector3(0,1,0),j=new s.Vector3(0,0,0);i.useFrame((e=>{x.setFromNormalAndCoplanarPoint(z,j).applyMatrix4(p.current.matrixWorld);const n=p.current.material,o=n.uniforms.worldCamProjPosition,i=n.uniforms.worldPlanePosition;x.projectPoint(e.camera.position,o.value),i.value.set(0,0,0).applyMatrix4(p.current.matrixWorld)}));const S={cellSize:t,sectionSize:l,cellColor:o,sectionColor:r,cellThickness:P,sectionThickness:v},k={fadeDistance:m,fadeStrength:u,fadeFrom:g,infiniteGrid:d,followCamera:f};return a.createElement("mesh",e({ref:p,frustumCulled:!1},C),a.createElement("gridMaterial",e({transparent:!0,"extensions-derivatives":!0,side:w},S,k)),a.createElement("planeGeometry",{args:n}))}));exports.Grid=f;
|
package/core/Helper.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),r=require("@react-three/fiber");function t(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);function n(e,t,...n){const c=u.useRef(),a=r.useThree((e=>e.scene));return u.useLayoutEffect((()=>{let r;if(e&&null!=e&&e.current&&t&&(c.current=r=new t(e.current,...n)),r)return r.traverse((e=>e.raycast=()=>null)),a.add(r),()=>{c.current=void 0,a.remove(r),null==r.dispose||r.dispose()}}),[a,t,e,...n]),r.useFrame((()=>{var e;null==(e=c.current)||null==e.update||e.update()})),c}exports.Helper=({type:e,args:r=[]})=>{const t=u.useRef(null),c=u.useRef(null);return u.useLayoutEffect((()=>{c.current=t.current.parent})),n(c,e,...r),u.createElement("object3D",{ref:t})},exports.useHelper=n;
|
package/core/Hud.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("three"),r=require("react"),t=require("@react-three/fiber");function n(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 a=n(e),u=n(r);function c({defaultScene:e,defaultCamera:r,renderPriority:n=1}){const{gl:a,scene:c,camera:l}=t.useThree();let o;return t.useFrame((()=>{o=a.autoClear,1===n&&(a.autoClear=!0,a.render(e,r)),a.autoClear=!1,a.clearDepth(),a.render(c,l),a.autoClear=o}),n),u.createElement("group",{onPointerOver:()=>null})}exports.Hud=function({children:e,renderPriority:r=1}){const{scene:n,camera:l}=t.useThree(),[o]=u.useState((()=>new a.Scene));return u.createElement(u.Fragment,null,t.createPortal(u.createElement(u.Fragment,null,e,u.createElement(c,{defaultScene:n,defaultCamera:l,renderPriority:r})),o,{events:{priority:r+1}}))};
|
package/core/Hud.js
CHANGED
|
@@ -41,7 +41,7 @@ function Hud({
|
|
|
41
41
|
camera: defaultCamera
|
|
42
42
|
} = useThree();
|
|
43
43
|
const [hudScene] = React.useState(() => new THREE.Scene());
|
|
44
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(
|
|
44
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, createPortal(/*#__PURE__*/React.createElement(React.Fragment, null, children, /*#__PURE__*/React.createElement(RenderHud, {
|
|
45
45
|
defaultScene: defaultScene,
|
|
46
46
|
defaultCamera: defaultCamera,
|
|
47
47
|
renderPriority: renderPriority
|
package/core/Image.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three"),n=require("@react-three/fiber"),a=require("./shaderMaterial.cjs.js"),o=require("./Texture.cjs.js"),s=require("../helpers/constants.cjs.js");function i(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 c=i(r),l=i(t);const u=a.shaderMaterial({color:new l.Color("white"),scale:new l.Vector2(1,1),imageBounds:new l.Vector2(1,1),resolution:1024,map:null,zoom:1,radius:0,grayscale:0,opacity:1},"\n varying vec2 vUv;\n varying vec2 vPos;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n vPos = position.xy;\n }\n",`\n // mostly from https://gist.github.com/statico/df64c5d167362ecf7b34fca0b1459a44\n varying vec2 vUv;\n varying vec2 vPos;\n uniform vec2 scale;\n uniform vec2 imageBounds;\n uniform float resolution;\n uniform vec3 color;\n uniform sampler2D map;\n uniform float radius;\n uniform float zoom;\n uniform float grayscale;\n uniform float opacity;\n const vec3 luma = vec3(.299, 0.587, 0.114);\n vec4 toGrayscale(vec4 color, float intensity) {\n return vec4(mix(color.rgb, vec3(dot(color.rgb, luma)), intensity), color.a);\n }\n vec2 aspect(vec2 size) {\n return size / min(size.x, size.y);\n }\n \n const float PI = 3.14159265;\n \n // from https://iquilezles.org/articles/distfunctions\n float udRoundBox( vec2 p, vec2 b, float r ) {\n return length(max(abs(p)-b+r,0.0))-r;\n }\n\n void main() {\n vec2 s = aspect(scale);\n vec2 i = aspect(imageBounds);\n float rs = s.x / s.y;\n float ri = i.x / i.y;\n vec2 new = rs < ri ? vec2(i.x * s.y / i.y, s.y) : vec2(s.x, i.y * s.x / i.x);\n vec2 offset = (rs < ri ? vec2((new.x - s.x) / 2.0, 0.0) : vec2(0.0, (new.y - s.y) / 2.0)) / new;\n vec2 uv = vUv * s / new + offset;\n vec2 zUv = (uv - vec2(0.5, 0.5)) / zoom + vec2(0.5, 0.5);\n\n vec2 res = vec2(scale * resolution);\n vec2 halfRes = 0.5 * res;\n float b = udRoundBox(vUv.xy * res - halfRes, halfRes, resolution * radius); \n\t vec3 a = mix(vec3(1.0,0.0,0.0), vec3(0.0,0.0,0.0), smoothstep(0.0, 1.0, b));\n gl_FragColor = toGrayscale(texture2D(map, zUv) * vec4(color, opacity * a), grayscale);\n \n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }\n`),m=c.forwardRef((({children:r,color:t,segments:a=1,scale:o=1,zoom:s=1,grayscale:i=0,opacity:l=1,radius:m=0,texture:v,toneMapped:f,transparent:g,side:y,...d},p)=>{n.extend({ImageMaterial:u});const h=c.useRef(null),x=n.useThree((e=>e.size)),w=Array.isArray(o)?[o[0],o[1]]:[o,o],b=[v.image.width,v.image.height],z=Math.max(x.width,x.height);return c.useImperativeHandle(p,(()=>h.current),[]),c.useLayoutEffect((()=>{h.current.geometry.parameters&&h.current.material.scale.set(w[0]*h.current.geometry.parameters.width,w[1]*h.current.geometry.parameters.height)}),[]),c.createElement("mesh",e({ref:h,scale:Array.isArray(o)?[...o,1]:o},d),c.createElement("planeGeometry",{args:[1,1,a,a]}),c.createElement("imageMaterial",{color:t,map:v,zoom:s,grayscale:i,opacity:l,scale:w,imageBounds:b,resolution:z,radius:m,toneMapped:f,transparent:g,side:y,key:u.key}),r)})),v=c.forwardRef((({url:r,...t},n)=>{const a=o.useTexture(r);return c.createElement(m,e({},t,{texture:a,ref:n}))})),f=c.forwardRef((({url:r,...t},n)=>c.createElement(m,e({},t,{ref:n})))),g=c.forwardRef(((r,t)=>{if(r.url)return c.createElement(v,e({},r,{ref:t}));if(r.texture)return c.createElement(f,e({},r,{ref:t}));throw new Error("<Image /> requires a url or texture")}));exports.Image=g;
|
package/core/Instances.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),a=require("react-composer"),s=require("../helpers/deprecated.cjs.js");function c(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 i=c(t),o=c(r);const u=new i.Matrix4,l=new i.Matrix4,f=[],m=new i.Mesh;class d extends i.Group{constructor(){super(),this.color=new i.Color("white"),this.instance={current:void 0},this.instanceKey={current:void 0}}get geometry(){var e;return null==(e=this.instance.current)?void 0:e.geometry}raycast(e,t){const r=this.instance.current;if(!r)return;if(!r.geometry||!r.material)return;m.geometry=r.geometry;const n=r.matrixWorld,a=r.userData.instances.indexOf(this.instanceKey);if(!(-1===a||a>r.count)){r.getMatrixAt(a,u),l.multiplyMatrices(n,u),m.matrixWorld=l,r.material instanceof i.Material?m.material.side=r.material.side:m.material.side=r.material[0].side,m.raycast(e,f);for(let e=0,r=f.length;e<r;e++){const r=f[e];r.instanceId=a,r.object=this,t.push(r)}f.length=0}}}const y=o.createContext(null),p=new i.Matrix4,g=new i.Matrix4,h=new i.Matrix4,x=new i.Vector3,b=new i.Quaternion,w=new i.Vector3,M=o.forwardRef((({context:t,children:r,...a},s)=>{o.useMemo((()=>n.extend({PositionMesh:d})),[]);const c=o.useRef();o.useImperativeHandle(s,(()=>c.current),[]);const{subscribe:i,getParent:u}=o.useContext(t||y);return o.useLayoutEffect((()=>i(c)),[]),o.createElement("positionMesh",e({instance:u(),instanceKey:c,ref:c},a),r)})),A=o.forwardRef((({context:t,children:r,range:a,limit:c=1e3,frames:u=1/0,...l},f)=>{const[{localContext:m,instance:d}]=o.useState((()=>{const t=o.createContext(null);return{localContext:t,instance:o.forwardRef(((r,n)=>o.createElement(M,e({context:t},r,{ref:n}))))}})),A=o.useRef(null);o.useImperativeHandle(f,(()=>A.current),[]);const[v,E]=o.useState([]),[[D,R]]=o.useState((()=>{const e=new Float32Array(16*c);for(let t=0;t<c;t++)h.identity().toArray(e,16*t);return[e,new Float32Array([...new Array(3*c)].map((()=>1)))]}));o.useEffect((()=>{A.current.instanceMatrix.needsUpdate=!0}));let j=0,O=0;const C=o.useRef([]);o.useLayoutEffect((()=>{C.current=Object.entries(A.current.geometry.attributes).filter((([e,t])=>t.isInstancedBufferAttribute))})),n.useFrame((()=>{if(u===1/0||j<u){A.current.updateMatrix(),A.current.updateMatrixWorld(),p.copy(A.current.matrixWorld).invert(),O=Math.min(c,void 0!==a?a:c,v.length),A.current.count=O,s.setUpdateRange(A.current.instanceMatrix,{offset:0,count:16*O}),s.setUpdateRange(A.current.instanceColor,{offset:0,count:3*O});for(let e=0;e<v.length;e++){const t=v[e].current;t.matrixWorld.decompose(x,b,w),g.compose(x,b,w).premultiply(p),g.toArray(D,16*e),A.current.instanceMatrix.needsUpdate=!0,t.color.toArray(R,3*e),A.current.instanceColor.needsUpdate=!0}j++}}));const U=o.useMemo((()=>({getParent:()=>A,subscribe:e=>(E((t=>[...t,e])),()=>E((t=>t.filter((t=>t.current!==e.current)))))})),[]);return o.createElement("instancedMesh",e({userData:{instances:v,limit:c,frames:u},matrixAutoUpdate:!1,ref:A,args:[null,null,0],raycast:()=>null},l),o.createElement("instancedBufferAttribute",{attach:"instanceMatrix",count:D.length/16,array:D,itemSize:16,usage:i.DynamicDrawUsage}),o.createElement("instancedBufferAttribute",{attach:"instanceColor",count:R.length/3,array:R,itemSize:3,usage:i.DynamicDrawUsage}),"function"==typeof r?o.createElement(m.Provider,{value:U},r(d)):t?o.createElement(t.Provider,{value:U},r):o.createElement(y.Provider,{value:U},r))})),v=o.forwardRef((function({meshes:t,children:r,...n},s){const c=Array.isArray(t);if(!c)for(const e of Object.keys(t))t[e].isMesh||delete t[e];return o.createElement("group",{ref:s},o.createElement(a,{components:(c?t:Object.values(t)).map((({geometry:t,material:r})=>o.createElement(A,e({key:t.uuid,geometry:t,material:r},n))))},(e=>c?r(...e):r(Object.keys(t).filter((e=>t[e].isMesh)).reduce(((t,r,n)=>({...t,[r]:e[n]})),{})))))}));const E=o.forwardRef((({name:e,defaultValue:t,normalized:r,usage:a=i.DynamicDrawUsage},s)=>{const c=o.useRef(null);o.useImperativeHandle(s,(()=>c.current),[]),o.useLayoutEffect((()=>{const r=c.current.__r3f.parent;r.geometry.attributes[e]=c.current;const n=Array.isArray(t)?t:[t],a=Array.from({length:r.userData.limit},(()=>n)).flat();return c.current.array=new Float32Array(a),c.current.itemSize=n.length,c.current.count=a.length/c.current.itemSize,()=>{delete r.geometry.attributes[e]}}),[e]);let u=0;return n.useFrame((()=>{const t=c.current.__r3f.parent;if(t.userData.frames===1/0||u<t.userData.frames){for(let r=0;r<t.userData.instances.length;r++){const n=t.userData.instances[r].current[e];void 0!==n&&(c.current.set(Array.isArray(n)?n:"function"==typeof n.toArray?n.toArray():[n],r*c.current.itemSize),c.current.needsUpdate=!0)}u++}})),o.createElement("instancedBufferAttribute",{ref:c,usage:a,normalized:r})}));exports.Instance=M,exports.InstancedAttribute=E,exports.Instances=A,exports.Merged=v,exports.PositionMesh=d,exports.createInstances=function(){const t=o.createContext(null);return[o.forwardRef(((r,n)=>o.createElement(A,e({ref:n,context:t},r)))),o.forwardRef(((r,n)=>o.createElement(M,e({ref:n,context:t},r))))]};
|
package/core/Instances.d.ts
CHANGED
|
@@ -48,25 +48,25 @@ export interface MergedProps extends InstancesProps {
|
|
|
48
48
|
}
|
|
49
49
|
export declare const Merged: ForwardRefComponent<any, THREE.Group>;
|
|
50
50
|
export declare function createInstances<T = InstanceProps>(): readonly [React.ForwardRefExoticComponent<Omit<InstancesProps, "ref"> & React.RefAttributes<THREE.InstancedMesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>>>, React.ForwardRefExoticComponent<React.PropsWithoutRef<T & Omit<ReactThreeFiber.ExtendedColors<ReactThreeFiber.Overwrite<Partial<PositionMesh>, ReactThreeFiber.NodeProps<PositionMesh, typeof PositionMesh>>>, ReactThreeFiber.NonFunctionKeys<{
|
|
51
|
-
position?: ReactThreeFiber.Vector3
|
|
52
|
-
up?: ReactThreeFiber.Vector3
|
|
53
|
-
scale?: ReactThreeFiber.Vector3
|
|
54
|
-
rotation?: ReactThreeFiber.Euler
|
|
55
|
-
matrix?: ReactThreeFiber.Matrix4
|
|
56
|
-
quaternion?: ReactThreeFiber.Quaternion
|
|
57
|
-
layers?: ReactThreeFiber.Layers
|
|
58
|
-
dispose?: (() => void) | null
|
|
51
|
+
position?: ReactThreeFiber.Vector3;
|
|
52
|
+
up?: ReactThreeFiber.Vector3;
|
|
53
|
+
scale?: ReactThreeFiber.Vector3;
|
|
54
|
+
rotation?: ReactThreeFiber.Euler;
|
|
55
|
+
matrix?: ReactThreeFiber.Matrix4;
|
|
56
|
+
quaternion?: ReactThreeFiber.Quaternion;
|
|
57
|
+
layers?: ReactThreeFiber.Layers;
|
|
58
|
+
dispose?: (() => void) | null;
|
|
59
59
|
}>> & {
|
|
60
|
-
position?: ReactThreeFiber.Vector3
|
|
61
|
-
up?: ReactThreeFiber.Vector3
|
|
62
|
-
scale?: ReactThreeFiber.Vector3
|
|
63
|
-
rotation?: ReactThreeFiber.Euler
|
|
64
|
-
matrix?: ReactThreeFiber.Matrix4
|
|
65
|
-
quaternion?: ReactThreeFiber.Quaternion
|
|
66
|
-
layers?: ReactThreeFiber.Layers
|
|
67
|
-
dispose?: (() => void) | null
|
|
60
|
+
position?: ReactThreeFiber.Vector3;
|
|
61
|
+
up?: ReactThreeFiber.Vector3;
|
|
62
|
+
scale?: ReactThreeFiber.Vector3;
|
|
63
|
+
rotation?: ReactThreeFiber.Euler;
|
|
64
|
+
matrix?: ReactThreeFiber.Matrix4;
|
|
65
|
+
quaternion?: ReactThreeFiber.Quaternion;
|
|
66
|
+
layers?: ReactThreeFiber.Layers;
|
|
67
|
+
dispose?: (() => void) | null;
|
|
68
68
|
} & import("@react-three/fiber/dist/declarations/src/core/events").EventHandlers & {
|
|
69
|
-
context?: React.Context<Api
|
|
69
|
+
context?: React.Context<Api>;
|
|
70
70
|
}> & React.RefAttributes<PositionMesh & T>>];
|
|
71
71
|
export declare const InstancedAttribute: React.ForwardRefExoticComponent<Omit<InstancedAttributeProps, "ref"> & React.RefAttributes<unknown>>;
|
|
72
72
|
export {};
|
package/core/Ktx2.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),r=require("@react-three/fiber"),t=require("three-stdlib"),s=require("./Texture.cjs.js");function a(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var s=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,s.get?s:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("three");var c=a(e);const n="https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master";function u(a,c=`${n}/basis/`){const u=r.useThree((e=>e.gl)),i=r.useLoader(t.KTX2Loader,s.IsObject(a)?Object.values(a):a,(e=>{e.detectSupport(u),e.setTranscoderPath(c)}));if(e.useEffect((()=>{(Array.isArray(i)?i:[i]).forEach(u.initTexture)}),[u,i]),s.IsObject(a)){const e=Object.keys(a),r={};return e.forEach((t=>Object.assign(r,{[t]:i[e.indexOf(t)]}))),r}return i}u.preload=(e,s=`${n}/basis/`)=>r.useLoader.preload(t.KTX2Loader,e,(e=>{e.setTranscoderPath(s)})),u.clear=e=>r.useLoader.clear(t.KTX2Loader,e);exports.Ktx2=({children:e,input:r,basisPath:t})=>{const s=u(r,t);return c.createElement(c.Fragment,null,null==e?void 0:e(s))},exports.useKTX2=u;
|
package/core/Ktx2.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare function useKTX2<Url extends string[] | string | Record<string, s
|
|
|
4
4
|
[key in keyof Url]: Texture;
|
|
5
5
|
} : Texture;
|
|
6
6
|
export declare namespace useKTX2 {
|
|
7
|
-
var preload: (url: string, basisPath?: string) => undefined;
|
|
7
|
+
var preload: (url: string extends any[] ? string[] : string, basisPath?: string) => undefined;
|
|
8
8
|
var clear: (input: string | string[]) => void;
|
|
9
9
|
}
|
|
10
10
|
export declare const Ktx2: ({ children, input, basisPath, }: {
|
package/core/Lightformer.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),a=require("three");function n(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var c=n(t),l=n(a);const i=c.forwardRef((({args:t,map:a,toneMapped:n=!1,color:i="white",form:o="rect",intensity:u=1,scale:s=1,target:m,children:f,...p},y)=>{const g=c.useRef(null);return c.useImperativeHandle(y,(()=>g.current),[]),c.useLayoutEffect((()=>{f||p.material||(r.applyProps(g.current.material,{color:i}),g.current.material.color.multiplyScalar(u))}),[i,u,f,p.material]),c.useLayoutEffect((()=>{m&&g.current.lookAt(Array.isArray(m)?new l.Vector3(...m):m)}),[m]),s=Array.isArray(s)&&2===s.length?[s[0],s[1],1]:s,c.createElement("mesh",e({ref:g,scale:s},p),"circle"===o?c.createElement("ringGeometry",{args:[0,1,64]}):"ring"===o?c.createElement("ringGeometry",{args:[.5,1,64]}):"rect"===o?c.createElement("planeGeometry",null):c.createElement(o,{args:t}),f||(p.material?null:c.createElement("meshBasicMaterial",{toneMapped:n,map:a,side:l.DoubleSide})))}));exports.Lightformer=i;
|
package/core/Line.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),n=require("@react-three/fiber"),i=require("three-stdlib");function o(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=o(t);const a=s.forwardRef((function({points:t,color:o=16777215,vertexColors:a,linewidth:c,lineWidth:l,segments:u,dashed:f,...d},m){var h,p;const b=n.useThree((e=>e.size)),y=s.useMemo((()=>u?new i.LineSegments2:new i.Line2),[u]),[v]=s.useState((()=>new i.LineMaterial)),g=4===(null==a||null==(h=a[0])?void 0:h.length)?4:3,w=s.useMemo((()=>{const e=u?new i.LineSegmentsGeometry:new i.LineGeometry,n=t.map((e=>{const t=Array.isArray(e);return e instanceof r.Vector3||e instanceof r.Vector4?[e.x,e.y,e.z]:e instanceof r.Vector2?[e.x,e.y,0]:t&&3===e.length?[e[0],e[1],e[2]]:t&&2===e.length?[e[0],e[1],0]:e}));if(e.setPositions(n.flat()),a){o=16777215;const t=a.map((e=>e instanceof r.Color?e.toArray():e));e.setColors(t.flat(),g)}return e}),[t,u,a,g]);return s.useLayoutEffect((()=>{y.computeLineDistances()}),[t,y]),s.useLayoutEffect((()=>{f?v.defines.USE_DASH="":delete v.defines.USE_DASH,v.needsUpdate=!0}),[f,v]),s.useEffect((()=>()=>{w.dispose(),v.dispose()}),[w]),s.createElement("primitive",e({object:y,ref:m},d),s.createElement("primitive",{object:w,attach:"geometry"}),s.createElement("primitive",e({object:v,attach:"material",color:o,vertexColors:Boolean(a),resolution:[b.width,b.height],linewidth:null!==(p=null!=c?c:l)&&void 0!==p?p:1,dashed:f,transparent:4===g},d)))}));exports.Line=a;
|
package/core/MapControls.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("@react-three/fiber"),r=require("react"),n=require("three-stdlib");function a(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(r);const o=s.forwardRef(((r={enableDamping:!0},a)=>{const{domElement:o,camera:c,makeDefault:u,onChange:i,onStart:d,onEnd:l,...f}=r,m=t.useThree((e=>e.invalidate)),v=t.useThree((e=>e.camera)),b=t.useThree((e=>e.gl)),h=t.useThree((e=>e.events)),E=t.useThree((e=>e.set)),p=t.useThree((e=>e.get)),g=o||h.connected||b.domElement,j=c||v,L=s.useMemo((()=>new n.MapControls(j)),[j]);return s.useEffect((()=>{L.connect(g);const e=e=>{m(),i&&i(e)};return L.addEventListener("change",e),d&&L.addEventListener("start",d),l&&L.addEventListener("end",l),()=>{L.dispose(),L.removeEventListener("change",e),d&&L.removeEventListener("start",d),l&&L.removeEventListener("end",l)}}),[i,d,l,L,m,g]),s.useEffect((()=>{if(u){const e=p().controls;return E({controls:L}),()=>E({controls:e})}}),[u,L]),t.useFrame((()=>L.update()),-1),s.createElement("primitive",e({ref:a,object:L,enableDamping:!0},f))}));exports.MapControls=o;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("three-stdlib"),u=require("@react-three/fiber");function a(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 c=a(r),l=a(t);const o=l.createContext(null),s=l.forwardRef((({resolution:r=28,maxPolyCount:t=1e4,enableUvs:a=!1,enableColors:c=!1,children:s,...i},d)=>{const f=l.useRef(null);l.useImperativeHandle(d,(()=>f.current),[]);const m=l.useMemo((()=>new n.MarchingCubes(r,null,a,c,t)),[r,t,a,c]),b=l.useMemo((()=>({getParent:()=>f})),[]);return u.useFrame((()=>{m.update(),m.reset()}),-1),l.createElement(l.Fragment,null,l.createElement("primitive",e({object:m,ref:f},i),l.createElement(o.Provider,{value:b},s)))})),i=l.forwardRef((({strength:r=.5,subtract:t=12,color:n,...a},s)=>{const{getParent:i}=l.useContext(o),d=l.useMemo((()=>i()),[i]),f=l.useRef(null);l.useImperativeHandle(s,(()=>f.current),[]);const m=new c.Vector3;return u.useFrame((e=>{d.current&&f.current&&(f.current.getWorldPosition(m),d.current.addBall(.5+.5*m.x,.5+.5*m.y,.5+.5*m.z,r,t,n))})),l.createElement("group",e({ref:f},a))})),d=l.forwardRef((({planeType:r="x",strength:t=.5,subtract:n=12,...a},c)=>{const{getParent:s}=l.useContext(o),i=l.useMemo((()=>s()),[s]),d=l.useRef(null);l.useImperativeHandle(c,(()=>d.current),[]);const f=l.useMemo((()=>"x"===r?"addPlaneX":"y"===r?"addPlaneY":"addPlaneZ"),[r]);return u.useFrame((()=>{i.current&&d.current&&i.current[f](t,n)})),l.createElement("group",e({ref:d},a))}));exports.MarchingCube=i,exports.MarchingCubes=s,exports.MarchingPlane=d;
|
package/core/Mask.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react");function n(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(t),i=n(r);const l=i.forwardRef((({id:t=1,colorWrite:r=!1,depthWrite:n=!1,...l},s)=>{const a=i.useRef(null),u=i.useMemo((()=>({colorWrite:r,depthWrite:n,stencilWrite:!0,stencilRef:t,stencilFunc:c.AlwaysStencilFunc,stencilFail:c.ReplaceStencilOp,stencilZFail:c.ReplaceStencilOp,stencilZPass:c.ReplaceStencilOp})),[t,r,n]);return i.useLayoutEffect((()=>{Object.assign(a.current.material,u)})),i.useImperativeHandle(s,(()=>a.current),[]),i.createElement("mesh",e({ref:a,renderOrder:-t},l))}));exports.Mask=l,exports.useMask=function(e,t=!1){return{stencilWrite:!0,stencilRef:e,stencilFunc:t?c.NotEqualStencilFunc:c.EqualStencilFunc,stencilFail:c.KeepStencilOp,stencilZFail:c.KeepStencilOp,stencilZPass:c.KeepStencilOp}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("react"),t=require("./Texture.cjs.js"),r=require("suspend-react");function n(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)}require("three"),require("@react-three/fiber");var a=n(e);function c(e=0,n=1024,c){const u=r.suspend((()=>fetch("https://cdn.jsdelivr.net/gh/pmndrs/drei-assets@master/matcaps.json").then((e=>e.json()))),["matcapList"]),s=u[0],i=a.useMemo((()=>Object.keys(u).length),[]),o=`${a.useMemo((()=>"string"==typeof e?e:"number"==typeof e?u[e]:null),[e])||s}${function(e){switch(e){case 64:return"-64px";case 128:return"-128px";case 256:return"-256px";case 512:return"-512px";default:return""}}(n)}.png`,p=`https://rawcdn.githack.com/emmelleppi/matcaps/9b36ccaaf0a24881a39062d05566c9e92be4aa0d/${n}/${o}`;return[t.useTexture(p,c),p,i]}exports.MatcapTexture=({children:e,id:t,format:r,onLoad:n})=>{const u=c(t,r,n);return a.createElement(a.Fragment,null,null==e?void 0:e(u))},exports.useMatcapTexture=c;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber"),a=require("../materials/DiscardMaterial.cjs.js");function i(e){var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("./shaderMaterial.cjs.js"),require("three");var c=i(r);const s=c.forwardRef(((r,i)=>(t.extend({DiscardMaterialImpl:a.DiscardMaterial}),c.createElement("discardMaterialImpl",e({ref:i},r)))));exports.MeshDiscardMaterial=s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three"),i=require("@react-three/fiber");function o(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=o(t);class c extends r.MeshPhysicalMaterial{constructor(e={}){super(e),this.setValues(e),this._time={value:0},this._distort={value:.4},this._radius={value:1}}onBeforeCompile(e){e.uniforms.time=this._time,e.uniforms.radius=this._radius,e.uniforms.distort=this._distort,e.vertexShader=`\n uniform float time;\n uniform float radius;\n uniform float distort;\n #define GLSLIFY 1\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 permute(vec4 x){return mod289(((x*34.0)+1.0)*x);}vec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}float snoise(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}\n ${e.vertexShader}\n `,e.vertexShader=e.vertexShader.replace("#include <begin_vertex>","\n float updateTime = time / 50.0;\n float noise = snoise(vec3(position / 2.0 + updateTime * 5.0));\n vec3 transformed = vec3(position * (noise * pow(distort, 2.0) + radius));\n ")}get time(){return this._time.value}set time(e){this._time.value=e}get distort(){return this._distort.value}set distort(e){this._distort.value=e}get radius(){return this._radius.value}set radius(e){this._radius.value=e}}const v=s.forwardRef((({speed:t=1,...r},o)=>{const[v]=s.useState((()=>new c));return i.useFrame((e=>v&&(v.time=e.clock.getElapsedTime()*t))),s.createElement("primitive",e({object:v,ref:o,attach:"material"},r))}));exports.MeshDistortMaterial=v;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./Fbo.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),u=require("three-stdlib"),s=require("../helpers/constants.cjs.js");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var d=v(e),m=c(r),f=c(t);const g=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new m.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }",`uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`),p=f.forwardRef((({children:e,events:r,blur:t=0,eventPriority:o=0,renderPriority:u=0,worldUnits:s=!1,resolution:v=512,...c},p)=>{n.extend({PortalMaterialImpl:g});const h=f.useRef(null),{scene:y,gl:b,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(v,v),[R,S]=f.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),f.useEffect((()=>{void 0!==r&&U({enabled:!r})}),[r]);const[_,D]=f.useState(!0),j=a.useIntersect(D);f.useLayoutEffect((()=>{var e;j.current=null==(e=h.current)?void 0:e.__r3f.parent}),[]),f.useLayoutEffect((()=>{if(j.current&&t&&null===h.current.sdf){const e=new m.Mesh(j.current.geometry,new m.MeshBasicMaterial),r=(new m.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new m.OrthographicCamera(r.min.x*(1+2/v),r.max.x*(1+2/v),r.max.y*(1+2/v),r.min.y*(1+2/v),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),b.setRenderTarget(T),b.render(e,t);const n=F(v,v,b)(T.texture),a=new Float32Array(v*v);b.readRenderTargetPixels(n,0,0,v,v,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,b.setRenderTarget(null)}}),[v,t]),f.useImperativeHandle(p,(()=>h.current));const P=f.useCallback(((e,r,t)=>{var n;if(!j.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(j.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return f.createElement("portalMaterialImpl",d.default({ref:h,blur:t,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],attach:"material"},c),f.createElement(l.RenderTexture,{attach:"map",frames:_?1/0:0,eventPriority:o,renderPriority:u,compute:P},e,f.createElement(x,{events:r,rootScene:y,priority:R,material:h,worldUnits:s})))}));function x({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),v=n.useThree((e=>e.setEvents)),c=i.useFBO(),d=i.useFBO();f.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),f.useEffect((()=>{void 0!==e&&v({enabled:e})}),[e]);const[g,p]=f.useMemo((()=>{const e={value:0};return[new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{a:{value:c.texture},b:{value:d.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <tonemapping_fragment>\n #include <${s.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)?void 0:n.__r3f.parent;if(i){var u,s,v,m;if(l)o.matrixWorld.identity();else a&&1===(null==(u=t.current)?void 0:u.blend)&&i.updateWorldMatrix(!0,!1),o.matrixWorld.copy(i.matrixWorld);if(a)(null==(s=t.current)?void 0:s.blend)>0&&(null==(v=t.current)?void 0:v.blend)<1?(p.value=t.current.blend,e.gl.setRenderTarget(c),e.gl.render(o,e.camera),e.gl.setRenderTarget(d),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),g.render(e.gl)):1===(null==(m=t.current)?void 0:m.blend)&&e.gl.render(o,e.camera)}}),a),f.createElement(f.Fragment,null)}const F=(e,r,t)=>{let n=new m.WebGLRenderTarget(e,r,{minFilter:m.LinearMipmapLinearFilter,magFilter:m.LinearFilter,type:m.FloatType,format:m.RedFormat,generateMipmaps:!0}),a=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),i=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),l=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),o=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter}),s=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat}),v=new m.WebGLRenderTarget(e,r,{minFilter:m.NearestFilter,magFilter:m.NearestFilter,type:m.FloatType,format:m.RedFormat});const c=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),d=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new m.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),p=new u.FullScreenQuad(new m.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:s.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return u=>{let x=n;u.minFilter=m.NearestFilter,u.magFilter=m.NearestFilter,c.material.uniforms.tex.value=u,t.setRenderTarget(a),c.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,y=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}t.setRenderTarget(s),g.material.uniforms.tex.value=y.texture,g.render(t),d.material.uniforms.tex.value=u,t.setRenderTarget(i),d.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}return t.setRenderTarget(v),g.material.uniforms.tex.value=y.texture,g.render(t),t.setRenderTarget(x),p.material.uniforms.tex.value=u,p.render(t),t.setRenderTarget(null),x}};exports.MeshPortalMaterial=p;
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react"),n=require("@react-three/fiber"),a=require("./useIntersect.cjs.js"),i=require("./Fbo.cjs.js"),l=require("./RenderTexture.cjs.js"),o=require("./shaderMaterial.cjs.js"),s=require("three-stdlib"),u=require("../helpers/constants.cjs.js");function v(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 c=v(r),m=v(t);const d=o.shaderMaterial({blur:0,map:null,sdf:null,blend:0,size:0,resolution:new c.Vector2},"varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vUv = uv;\n }",`uniform sampler2D sdf;\n uniform sampler2D map;\n uniform float blur;\n uniform float size;\n uniform float time;\n uniform vec2 resolution;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec2 uv = gl_FragCoord.xy / resolution.xy;\n vec4 t = texture2D(map, uv);\n float k = blur;\n float d = texture2D(sdf, vUv).r/size;\n float alpha = 1.0 - smoothstep(0.0, 1.0, clamp(d/k + 1.0, 0.0, 1.0));\n gl_FragColor = vec4(t.rgb, blur == 0.0 ? t.a : t.a * alpha);\n #include <tonemapping_fragment>\n #include <${u.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`),f=m.forwardRef((({children:r,events:t,blur:o=0,eventPriority:s=0,renderPriority:u=0,worldUnits:v=!1,resolution:f=512,...p},F)=>{n.extend({PortalMaterialImpl:d});const h=m.useRef(null),{scene:y,gl:b,size:w,viewport:M,setEvents:U}=n.useThree(),T=i.useFBO(f,f),[R,S]=m.useState(0);n.useFrame((()=>{const e=h.current.blend>0?Math.max(1,u):0;R!==e&&S(e)})),m.useEffect((()=>{void 0!==t&&U({enabled:!t})}),[t]);const[D,_]=m.useState(!0),j=a.useIntersect(_);m.useLayoutEffect((()=>{var e;j.current=null==(e=h.current)?void 0:e.__r3f.parent}),[]),m.useLayoutEffect((()=>{if(j.current&&o&&null===h.current.sdf){const e=new c.Mesh(j.current.geometry,new c.MeshBasicMaterial),r=(new c.Box3).setFromBufferAttribute(e.geometry.attributes.position),t=new c.OrthographicCamera(r.min.x*(1+2/f),r.max.x*(1+2/f),r.max.y*(1+2/f),r.min.y*(1+2/f),.1,1e3);t.position.set(0,0,1),t.lookAt(0,0,0),b.setRenderTarget(T),b.render(e,t);const n=x(f,f,b)(T.texture),a=new Float32Array(f*f);b.readRenderTargetPixels(n,0,0,f,f,a);let i=1/0;for(let e=0;e<a.length;e++)a[e]<i&&(i=a[e]);i=-i,h.current.size=i,h.current.sdf=n.texture,b.setRenderTarget(null)}}),[f,o]),m.useImperativeHandle(F,(()=>h.current));const P=m.useCallback(((e,r,t)=>{var n;if(!j.current)return!1;if(r.pointer.set(e.offsetX/r.size.width*2-1,-e.offsetY/r.size.height*2+1),r.raycaster.setFromCamera(r.pointer,r.camera),0===(null==(n=h.current)?void 0:n.blend)){const[e]=r.raycaster.intersectObject(j.current);if(!e)return r.raycaster.camera=void 0,!1}}),[]);return m.createElement("portalMaterialImpl",e({ref:h,blur:o,blend:0,resolution:[w.width*M.dpr,w.height*M.dpr],attach:"material"},p),m.createElement(l.RenderTexture,{attach:"map",frames:D?1/0:0,eventPriority:s,renderPriority:u,compute:P},r,m.createElement(g,{events:t,rootScene:y,priority:R,material:h,worldUnits:v})))}));function g({events:e,rootScene:r,material:t,priority:a,worldUnits:l}){const o=n.useThree((e=>e.scene)),v=n.useThree((e=>e.setEvents)),d=i.useFBO(),f=i.useFBO();m.useLayoutEffect((()=>{o.matrixAutoUpdate=!1}),[]),m.useEffect((()=>{void 0!==e&&v({enabled:e})}),[e]);const[g,x]=m.useMemo((()=>{const e={value:0};return[new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{a:{value:d.texture},b:{value:f.texture},blend:e},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n uniform sampler2D a;\n uniform sampler2D b;\n uniform float blend;\n varying vec2 vUv;\n #include <packing>\n void main() {\n vec4 ta = texture2D(a, vUv);\n vec4 tb = texture2D(b, vUv);\n gl_FragColor = mix(tb, ta, blend);\n #include <tonemapping_fragment>\n #include <${u.version>=154?"colorspace_fragment":"encodings_fragment"}>\n }`})),e]}),[]);return n.useFrame((e=>{var n;let i=null==t||null==(n=t.current)?void 0:n.__r3f.parent;if(i){var s,u,v,c;if(l)o.matrixWorld.identity();else a&&1===(null==(s=t.current)?void 0:s.blend)&&i.updateWorldMatrix(!0,!1),o.matrixWorld.copy(i.matrixWorld);if(a)(null==(u=t.current)?void 0:u.blend)>0&&(null==(v=t.current)?void 0:v.blend)<1?(x.value=t.current.blend,e.gl.setRenderTarget(d),e.gl.render(o,e.camera),e.gl.setRenderTarget(f),e.gl.render(r,e.camera),e.gl.setRenderTarget(null),g.render(e.gl)):1===(null==(c=t.current)?void 0:c.blend)&&e.gl.render(o,e.camera)}}),a),m.createElement(m.Fragment,null)}const x=(e,r,t)=>{let n=new c.WebGLRenderTarget(e,r,{minFilter:c.LinearMipmapLinearFilter,magFilter:c.LinearFilter,type:c.FloatType,format:c.RedFormat,generateMipmaps:!0}),a=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter}),i=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter}),l=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter}),o=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter}),u=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,type:c.FloatType,format:c.RedFormat}),v=new c.WebGLRenderTarget(e,r,{minFilter:c.NearestFilter,magFilter:c.NearestFilter,type:c.FloatType,format:c.RedFormat});const m=new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (round(texture2D(tex, vUv).x)));\n }"})),d=new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n uniform sampler2D tex;\n varying vec2 vUv;\n #include <packing>\n void main() {\n gl_FragColor = pack2HalfToRGBA(vUv * (1.0 - round(texture2D(tex, vUv).x)));\n }"})),f=new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{tex:{value:null},offset:{value:0},level:{value:0},maxSteps:{value:0}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:`\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform float offset;\n uniform float level;\n uniform float maxSteps;\n #include <packing>\n void main() {\n float closestDist = 9999999.9;\n vec2 closestPos = vec2(0.0);\n for (float x = -1.0; x <= 1.0; x += 1.0) {\n for (float y = -1.0; y <= 1.0; y += 1.0) {\n vec2 voffset = vUv;\n voffset += vec2(x, y) * vec2(${1/e}, ${1/r}) * offset;\n vec2 pos = unpackRGBATo2Half(texture2D(tex, voffset));\n float dist = distance(pos.xy, vUv);\n if(pos.x != 0.0 && pos.y != 0.0 && dist < closestDist) {\n closestDist = dist;\n closestPos = pos;\n }\n }\n }\n gl_FragColor = pack2HalfToRGBA(closestPos);\n }`})),g=new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{tex:{value:null},size:{value:new c.Vector2(e,r)}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D tex;\n uniform vec2 size;\n #include <packing>\n void main() {\n gl_FragColor = vec4(distance(size * unpackRGBATo2Half(texture2D(tex, vUv)), size * vUv), 0.0, 0.0, 0.0);\n }"})),x=new s.FullScreenQuad(new c.ShaderMaterial({uniforms:{inside:{value:v.texture},outside:{value:u.texture},tex:{value:null}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",fragmentShader:"\n varying vec2 vUv;\n uniform sampler2D inside;\n uniform sampler2D outside;\n uniform sampler2D tex;\n #include <packing>\n void main() {\n float i = texture2D(inside, vUv).x;\n float o =texture2D(outside, vUv).x;\n if (texture2D(tex, vUv).x == 0.0) {\n gl_FragColor = vec4(o, 0.0, 0.0, 0.0);\n } else {\n gl_FragColor = vec4(-i, 0.0, 0.0, 0.0);\n }\n }"}));return s=>{let p=n;s.minFilter=c.NearestFilter,s.magFilter=c.NearestFilter,m.material.uniforms.tex.value=s,t.setRenderTarget(a),m.render(t);const F=Math.ceil(Math.log(Math.max(e,r))/Math.log(2));let h=a,y=null;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===a?l:a,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}t.setRenderTarget(u),g.material.uniforms.tex.value=y.texture,g.render(t),d.material.uniforms.tex.value=s,t.setRenderTarget(i),d.render(t),h=i;for(let e=0;e<F;e++){const r=Math.pow(2,F-e-1);y=h===i?o:i,f.material.uniforms.level.value=e,f.material.uniforms.maxSteps.value=F,f.material.uniforms.offset.value=r,f.material.uniforms.tex.value=h.texture,t.setRenderTarget(y),f.render(t),h=y}return t.setRenderTarget(v),g.material.uniforms.tex.value=y.texture,g.render(t),t.setRenderTarget(p),x.material.uniforms.tex.value=s,x.render(t),t.setRenderTarget(null),p}};exports.MeshPortalMaterial=f;
|