@ohos-ports/react-three-drei 10.7.7-beta.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/LICENSE +21 -0
- package/README.md +852 -0
- package/core/AccumulativeShadows.cjs.js +1 -0
- package/core/AccumulativeShadows.d.ts +59 -0
- package/core/AccumulativeShadows.js +310 -0
- package/core/AdaptiveDpr.cjs.js +1 -0
- package/core/AdaptiveDpr.d.ts +3 -0
- package/core/AdaptiveDpr.js +28 -0
- package/core/AdaptiveEvents.cjs.js +1 -0
- package/core/AdaptiveEvents.d.ts +1 -0
- package/core/AdaptiveEvents.js +20 -0
- package/core/ArcballControls.cjs.js +1 -0
- package/core/ArcballControls.d.ts +15 -0
- package/core/ArcballControls.js +67 -0
- package/core/AsciiRenderer.cjs.js +1 -0
- package/core/AsciiRenderer.d.ts +11 -0
- package/core/AsciiRenderer.js +66 -0
- package/core/BBAnchor.cjs.js +1 -0
- package/core/BBAnchor.d.ts +7 -0
- package/core/BBAnchor.js +37 -0
- package/core/Backdrop.cjs.js +1 -0
- package/core/Backdrop.d.ts +15 -0
- package/core/Backdrop.js +33 -0
- package/core/BakeShadows.cjs.js +1 -0
- package/core/BakeShadows.d.ts +1 -0
- package/core/BakeShadows.js +16 -0
- package/core/Billboard.cjs.js +1 -0
- package/core/Billboard.d.ts +10 -0
- package/core/Billboard.js +53 -0
- package/core/Bounds.cjs.js +1 -0
- package/core/Bounds.d.ts +36 -0
- package/core/Bounds.js +254 -0
- package/core/Bvh.cjs.js +1 -0
- package/core/Bvh.d.ts +19 -0
- package/core/Bvh.js +92 -0
- package/core/CameraControls.cjs.js +1 -0
- package/core/CameraControls.d.ts +48 -0
- package/core/CameraControls.js +151 -0
- package/core/CameraShake.cjs.js +1 -0
- package/core/CameraShake.d.ts +17 -0
- package/core/CameraShake.js +57 -0
- package/core/CatmullRomLine.cjs.js +1 -0
- package/core/CatmullRomLine.d.ts +10 -0
- package/core/CatmullRomLine.js +42 -0
- package/core/Caustics.cjs.js +1 -0
- package/core/Caustics.d.ts +32 -0
- package/core/Caustics.js +388 -0
- package/core/Center.cjs.js +1 -0
- package/core/Center.d.ts +33 -0
- package/core/Center.js +67 -0
- package/core/Clone.cjs.js +1 -0
- package/core/Clone.d.ts +15 -0
- package/core/Clone.js +100 -0
- package/core/Cloud.cjs.js +1 -0
- package/core/Cloud.d.ts +97 -0
- package/core/Cloud.js +231 -0
- package/core/ComputedAttribute.cjs.js +1 -0
- package/core/ComputedAttribute.d.ts +8 -0
- package/core/ComputedAttribute.js +33 -0
- package/core/ContactShadows.cjs.js +1 -0
- package/core/ContactShadows.d.ts +18 -0
- package/core/ContactShadows.js +114 -0
- package/core/CubeCamera.cjs.js +1 -0
- package/core/CubeCamera.d.ts +21 -0
- package/core/CubeCamera.js +86 -0
- package/core/CubeTexture.cjs.js +1 -0
- package/core/CubeTexture.d.ts +14 -0
- package/core/CubeTexture.js +25 -0
- package/core/CubicBezierLine.cjs.js +1 -0
- package/core/CubicBezierLine.d.ts +12 -0
- package/core/CubicBezierLine.js +28 -0
- package/core/CurveModifier.cjs.js +1 -0
- package/core/CurveModifier.d.ts +11 -0
- package/core/CurveModifier.js +27 -0
- package/core/Decal.cjs.js +1 -0
- package/core/Decal.d.ts +16 -0
- package/core/Decal.js +128 -0
- package/core/Detailed.cjs.js +1 -0
- package/core/Detailed.d.ts +10 -0
- package/core/Detailed.js +33 -0
- package/core/DetectGPU.cjs.js +1 -0
- package/core/DetectGPU.d.ts +7 -0
- package/core/DetectGPU.js +14 -0
- package/core/DeviceOrientationControls.cjs.js +1 -0
- package/core/DeviceOrientationControls.d.ts +10 -0
- package/core/DeviceOrientationControls.js +51 -0
- package/core/Edges.cjs.js +1 -0
- package/core/Edges.d.ts +13 -0
- package/core/Edges.js +38 -0
- package/core/Effects.cjs.js +1 -0
- package/core/Effects.d.ts +25 -0
- package/core/Effects.js +91 -0
- package/core/Environment.cjs.js +1 -0
- package/core/Environment.d.ts +37 -0
- package/core/Environment.js +189 -0
- package/core/Example.cjs.js +1 -0
- package/core/Example.d.ts +13 -0
- package/core/Example.js +46 -0
- package/core/Fbo.cjs.js +1 -0
- package/core/Fbo.d.ts +22 -0
- package/core/Fbo.js +63 -0
- package/core/Fbx.cjs.js +1 -0
- package/core/Fbx.d.ts +11 -0
- package/core/Fbx.js +23 -0
- package/core/FirstPersonControls.cjs.js +1 -0
- package/core/FirstPersonControls.d.ts +8 -0
- package/core/FirstPersonControls.js +38 -0
- package/core/Fisheye.cjs.js +1 -0
- package/core/Fisheye.d.ts +10 -0
- package/core/Fisheye.js +95 -0
- package/core/Float.cjs.js +1 -0
- package/core/Float.d.ts +14 -0
- package/core/Float.js +37 -0
- package/core/FlyControls.cjs.js +1 -0
- package/core/FlyControls.d.ts +10 -0
- package/core/FlyControls.js +55 -0
- package/core/GizmoHelper.cjs.js +1 -0
- package/core/GizmoHelper.d.ts +16 -0
- package/core/GizmoHelper.js +116 -0
- package/core/GizmoViewcube.cjs.js +1 -0
- package/core/GizmoViewcube.d.ts +14 -0
- package/core/GizmoViewcube.js +133 -0
- package/core/GizmoViewport.cjs.js +1 -0
- package/core/GizmoViewport.d.ts +16 -0
- package/core/GizmoViewport.js +140 -0
- package/core/Gltf.cjs.js +1 -0
- package/core/Gltf.d.ts +27 -0
- package/core/Gltf.js +52 -0
- package/core/GradientTexture.cjs.js +1 -0
- package/core/GradientTexture.d.ts +18 -0
- package/core/GradientTexture.js +54 -0
- package/core/Grid.cjs.js +1 -0
- package/core/Grid.d.ts +26 -0
- package/core/Grid.js +142 -0
- package/core/Helper.cjs.js +1 -0
- package/core/Helper.d.ts +16 -0
- package/core/Helper.js +47 -0
- package/core/Hud.cjs.js +1 -0
- package/core/Hud.d.ts +6 -0
- package/core/Hud.js +55 -0
- package/core/Image.cjs.js +1 -0
- package/core/Image.d.ts +38 -0
- package/core/Image.js +160 -0
- package/core/Instances.cjs.js +1 -0
- package/core/Instances.d.ts +64 -0
- package/core/Instances.js +313 -0
- package/core/Ktx2.cjs.js +1 -0
- package/core/Ktx2.d.ts +14 -0
- package/core/Ktx2.js +48 -0
- package/core/Lightformer.cjs.js +1 -0
- package/core/Lightformer.d.ts +15 -0
- package/core/Lightformer.js +63 -0
- package/core/Line.cjs.js +1 -0
- package/core/Line.d.ts +13 -0
- package/core/Line.js +73 -0
- package/core/MapControls.cjs.js +1 -0
- package/core/MapControls.d.ts +14 -0
- package/core/MapControls.js +63 -0
- package/core/MarchingCubes.cjs.js +1 -0
- package/core/MarchingCubes.d.ts +24 -0
- package/core/MarchingCubes.js +78 -0
- package/core/Mask.cjs.js +1 -0
- package/core/Mask.d.ts +17 -0
- package/core/Mask.js +42 -0
- package/core/MatcapTexture.cjs.js +1 -0
- package/core/MatcapTexture.d.ts +9 -0
- package/core/MatcapTexture.js +51 -0
- package/core/MeshDiscardMaterial.cjs.js +1 -0
- package/core/MeshDiscardMaterial.d.ts +10 -0
- package/core/MeshDiscardMaterial.js +15 -0
- package/core/MeshDistortMaterial.cjs.js +1 -0
- package/core/MeshDistortMaterial.d.ts +39 -0
- package/core/MeshDistortMaterial.js +72 -0
- package/core/MeshPortalMaterial.cjs.js +1 -0
- package/core/MeshPortalMaterial.d.ts +25 -0
- package/core/MeshPortalMaterial.js +467 -0
- package/core/MeshReflectorMaterial.cjs.js +1 -0
- package/core/MeshReflectorMaterial.d.ts +14 -0
- package/core/MeshReflectorMaterial.js +180 -0
- package/core/MeshRefractionMaterial.cjs.js +1 -0
- package/core/MeshRefractionMaterial.d.ts +19 -0
- package/core/MeshRefractionMaterial.js +73 -0
- package/core/MeshTransmissionMaterial.cjs.js +1 -0
- package/core/MeshTransmissionMaterial.d.ts +34 -0
- package/core/MeshTransmissionMaterial.js +402 -0
- package/core/MeshWobbleMaterial.cjs.js +1 -0
- package/core/MeshWobbleMaterial.d.ts +36 -0
- package/core/MeshWobbleMaterial.js +60 -0
- package/core/MotionPathControls.cjs.js +1 -0
- package/core/MotionPathControls.d.ts +33 -0
- package/core/MotionPathControls.js +121 -0
- package/core/MultiMaterial.cjs.js +1 -0
- package/core/MultiMaterial.d.ts +4 -0
- package/core/MultiMaterial.js +29 -0
- package/core/NormalTexture.cjs.js +1 -0
- package/core/NormalTexture.d.ts +14 -0
- package/core/NormalTexture.js +42 -0
- package/core/OrbitControls.cjs.js +1 -0
- package/core/OrbitControls.d.ts +22 -0
- package/core/OrbitControls.js +79 -0
- package/core/OrthographicCamera.cjs.js +1 -0
- package/core/OrthographicCamera.d.ts +14 -0
- package/core/OrthographicCamera.js +76 -0
- package/core/Outlines.cjs.js +1 -0
- package/core/Outlines.d.ts +17 -0
- package/core/Outlines.js +166 -0
- package/core/PerformanceMonitor.cjs.js +1 -0
- package/core/PerformanceMonitor.d.ts +36 -0
- package/core/PerformanceMonitor.js +116 -0
- package/core/PerspectiveCamera.cjs.js +1 -0
- package/core/PerspectiveCamera.d.ts +14 -0
- package/core/PerspectiveCamera.js +72 -0
- package/core/PointMaterial.cjs.js +1 -0
- package/core/PointMaterial.d.ts +8 -0
- package/core/PointMaterial.js +36 -0
- package/core/PointerLockControls.cjs.js +1 -0
- package/core/PointerLockControls.d.ts +15 -0
- package/core/PointerLockControls.js +89 -0
- package/core/Points.cjs.js +1 -0
- package/core/Points.d.ts +31 -0
- package/core/Points.js +202 -0
- package/core/PositionalAudio.cjs.js +1 -0
- package/core/PositionalAudio.d.ts +9 -0
- package/core/PositionalAudio.js +46 -0
- package/core/Preload.cjs.js +1 -0
- package/core/Preload.d.ts +7 -0
- package/core/Preload.js +44 -0
- package/core/Progress.cjs.js +1 -0
- package/core/Progress.d.ts +14 -0
- package/core/Progress.js +55 -0
- package/core/QuadraticBezierLine.cjs.js +1 -0
- package/core/QuadraticBezierLine.d.ts +14 -0
- package/core/QuadraticBezierLine.js +42 -0
- package/core/RenderCubeTexture.cjs.js +1 -0
- package/core/RenderCubeTexture.d.ts +30 -0
- package/core/RenderCubeTexture.js +96 -0
- package/core/RenderTexture.cjs.js +1 -0
- package/core/RenderTexture.d.ts +18 -0
- package/core/RenderTexture.js +105 -0
- package/core/Resize.cjs.js +1 -0
- package/core/Resize.d.ts +17 -0
- package/core/Resize.js +39 -0
- package/core/RoundedBox.cjs.js +1 -0
- package/core/RoundedBox.d.ts +14 -0
- package/core/RoundedBox.js +70 -0
- package/core/Sampler.cjs.js +1 -0
- package/core/Sampler.d.ts +28 -0
- package/core/Sampler.js +75 -0
- package/core/ScreenQuad.cjs.js +1 -0
- package/core/ScreenQuad.d.ts +5 -0
- package/core/ScreenQuad.js +25 -0
- package/core/ScreenSizer.cjs.js +1 -0
- package/core/ScreenSizer.d.ts +7 -0
- package/core/ScreenSizer.js +39 -0
- package/core/ScreenSpace.cjs.js +1 -0
- package/core/ScreenSpace.d.ts +7 -0
- package/core/ScreenSpace.js +25 -0
- package/core/Segments.cjs.js +1 -0
- package/core/Segments.d.ts +29 -0
- package/core/Segments.js +96 -0
- package/core/Shadow.cjs.js +1 -0
- package/core/Shadow.d.ts +12 -0
- package/core/Shadow.js +42 -0
- package/core/ShadowAlpha.cjs.js +1 -0
- package/core/ShadowAlpha.d.ts +7 -0
- package/core/ShadowAlpha.js +108 -0
- package/core/Sky.cjs.js +1 -0
- package/core/Sky.d.ts +16 -0
- package/core/Sky.js +39 -0
- package/core/Sparkles.cjs.js +1 -0
- package/core/Sparkles.d.ts +26 -0
- package/core/Sparkles.js +161 -0
- package/core/Splat.cjs.js +1 -0
- package/core/Splat.d.ts +56 -0
- package/core/Splat.js +506 -0
- package/core/SpotLight.cjs.js +1 -0
- package/core/SpotLight.d.ts +27 -0
- package/core/SpotLight.js +223 -0
- package/core/SpriteAnimator.cjs.js +1 -0
- package/core/SpriteAnimator.d.ts +88 -0
- package/core/SpriteAnimator.js +413 -0
- package/core/Stage.cjs.js +1 -0
- package/core/Stage.d.ts +27 -0
- package/core/Stage.js +133 -0
- package/core/Stars.cjs.js +1 -0
- package/core/Stars.d.ts +22 -0
- package/core/Stars.js +100 -0
- package/core/Stats.cjs.js +1 -0
- package/core/Stats.d.ts +7 -0
- package/core/Stats.js +32 -0
- package/core/StatsGl.cjs.js +1 -0
- package/core/StatsGl.d.ts +14 -0
- package/core/StatsGl.js +44 -0
- package/core/Svg.cjs.js +1 -0
- package/core/Svg.d.ts +13 -0
- package/core/Svg.js +62 -0
- package/core/Text.cjs.js +1 -0
- package/core/Text.d.ts +38 -0
- package/core/Text.js +57 -0
- package/core/Text3D.cjs.js +1 -0
- package/core/Text3D.d.ts +20 -0
- package/core/Text3D.js +74 -0
- package/core/Texture.cjs.js +1 -0
- package/core/Texture.d.ts +20 -0
- package/core/Texture.js +60 -0
- package/core/TrackballControls.cjs.js +1 -0
- package/core/TrackballControls.d.ts +15 -0
- package/core/TrackballControls.js +72 -0
- package/core/Trail.cjs.js +1 -0
- package/core/Trail.d.ts +21 -0
- package/core/Trail.js +150 -0
- package/core/TrailTexture.cjs.js +1 -0
- package/core/TrailTexture.d.ts +19 -0
- package/core/TrailTexture.js +159 -0
- package/core/TransformControls.cjs.js +1 -0
- package/core/TransformControls.d.ts +28 -0
- package/core/TransformControls.js +114 -0
- package/core/VideoTexture.cjs.js +1 -0
- package/core/VideoTexture.d.ts +26 -0
- package/core/VideoTexture.js +111 -0
- package/core/Wireframe.cjs.js +1 -0
- package/core/Wireframe.d.ts +15 -0
- package/core/Wireframe.js +157 -0
- package/core/calculateScaleFactor.cjs.js +1 -0
- package/core/calculateScaleFactor.d.ts +3 -0
- package/core/calculateScaleFactor.js +31 -0
- package/core/index.cjs.js +1 -0
- package/core/index.d.ts +122 -0
- package/core/index.js +150 -0
- package/core/meshBounds.cjs.js +1 -0
- package/core/meshBounds.d.ts +2 -0
- package/core/meshBounds.js +28 -0
- package/core/shaderMaterial.cjs.js +1 -0
- package/core/shaderMaterial.d.ts +9 -0
- package/core/shaderMaterial.js +29 -0
- package/core/shapes.cjs.js +1 -0
- package/core/shapes.d.ts +26 -0
- package/core/shapes.js +65 -0
- package/core/softShadows.cjs.js +1 -0
- package/core/softShadows.d.ts +6 -0
- package/core/softShadows.js +158 -0
- package/core/useAnimations.cjs.js +1 -0
- package/core/useAnimations.d.ts +13 -0
- package/core/useAnimations.js +52 -0
- package/core/useAspect.cjs.js +1 -0
- package/core/useAspect.d.ts +1 -0
- package/core/useAspect.js +10 -0
- package/core/useBoxProjectedEnv.cjs.js +1 -0
- package/core/useBoxProjectedEnv.d.ts +19 -0
- package/core/useBoxProjectedEnv.js +95 -0
- package/core/useCamera.cjs.js +1 -0
- package/core/useCamera.d.ts +3 -0
- package/core/useCamera.js +19 -0
- package/core/useContextBridge.cjs.js +1 -0
- package/core/useContextBridge.d.ts +4 -0
- package/core/useContextBridge.js +20 -0
- package/core/useDepthBuffer.cjs.js +1 -0
- package/core/useDepthBuffer.d.ts +6 -0
- package/core/useDepthBuffer.js +38 -0
- package/core/useEnvironment.cjs.js +1 -0
- package/core/useEnvironment.d.ts +17 -0
- package/core/useEnvironment.js +150 -0
- package/core/useFont.cjs.js +1 -0
- package/core/useFont.d.ts +24 -0
- package/core/useFont.js +24 -0
- package/core/useIntersect.cjs.js +1 -0
- package/core/useIntersect.d.ts +3 -0
- package/core/useIntersect.js +36 -0
- package/core/useSpriteLoader.cjs.js +1 -0
- package/core/useSpriteLoader.d.ts +57 -0
- package/core/useSpriteLoader.js +402 -0
- package/helpers/constants.cjs.js +1 -0
- package/helpers/constants.d.ts +1 -0
- package/helpers/constants.js +6 -0
- package/helpers/deprecated.cjs.js +1 -0
- package/helpers/deprecated.d.ts +5 -0
- package/helpers/deprecated.js +8 -0
- package/helpers/environment-assets.cjs.js +1 -0
- package/helpers/environment-assets.d.ts +13 -0
- package/helpers/environment-assets.js +14 -0
- package/helpers/glsl/DefaultSpotlightShadowShadows.glsl.js +3 -0
- package/helpers/glsl/distort.vert.glsl.js +3 -0
- package/helpers/ts-utils.cjs.js +1 -0
- package/helpers/ts-utils.d.ts +7 -0
- package/helpers/ts-utils.js +1 -0
- package/helpers/useEffectfulState.cjs.js +1 -0
- package/helpers/useEffectfulState.d.ts +4 -0
- package/helpers/useEffectfulState.js +17 -0
- package/index.cjs.js +1 -0
- package/index.d.ts +1 -0
- package/index.js +139 -0
- package/materials/BlurPass.cjs.js +1 -0
- package/materials/BlurPass.d.ts +23 -0
- package/materials/BlurPass.js +72 -0
- package/materials/ConvolutionMaterial.cjs.js +1 -0
- package/materials/ConvolutionMaterial.d.ts +7 -0
- package/materials/ConvolutionMaterial.js +97 -0
- package/materials/DiscardMaterial.cjs.js +1 -0
- package/materials/DiscardMaterial.d.ts +3 -0
- package/materials/DiscardMaterial.js +5 -0
- package/materials/MeshReflectorMaterial.cjs.js +1 -0
- package/materials/MeshReflectorMaterial.d.ts +50 -0
- package/materials/MeshReflectorMaterial.js +256 -0
- package/materials/MeshRefractionMaterial.cjs.js +1 -0
- package/materials/MeshRefractionMaterial.d.ts +18 -0
- package/materials/MeshRefractionMaterial.js +163 -0
- package/materials/SpotLightMaterial.cjs.js +1 -0
- package/materials/SpotLightMaterial.d.ts +4 -0
- package/materials/SpotLightMaterial.js +115 -0
- package/materials/WireframeMaterial.cjs.js +1 -0
- package/materials/WireframeMaterial.d.ts +64 -0
- package/materials/WireframeMaterial.js +217 -0
- package/native/index.cjs.js +1 -0
- package/native/index.d.ts +1 -0
- package/native/index.js +150 -0
- package/native/package.json +5 -0
- package/package.json +83 -0
- package/web/CycleRaycast.cjs.js +1 -0
- package/web/CycleRaycast.d.ts +10 -0
- package/web/CycleRaycast.js +93 -0
- package/web/DragControls.cjs.js +1 -0
- package/web/DragControls.d.ts +17 -0
- package/web/DragControls.js +127 -0
- package/web/FaceControls.cjs.js +1 -0
- package/web/FaceControls.d.ts +29 -0
- package/web/FaceControls.js +236 -0
- package/web/FaceLandmarker.cjs.js +1 -0
- package/web/FaceLandmarker.d.ts +14 -0
- package/web/FaceLandmarker.js +49 -0
- package/web/Facemesh.cjs.js +1 -0
- package/web/Facemesh.d.ts +118 -0
- package/web/Facemesh.js +4538 -0
- package/web/Html.cjs.js +1 -0
- package/web/Html.d.ts +34 -0
- package/web/Html.js +375 -0
- package/web/KeyboardControls.cjs.js +1 -0
- package/web/KeyboardControls.d.ts +37 -0
- package/web/KeyboardControls.js +104 -0
- package/web/Loader.cjs.js +1 -0
- package/web/Loader.d.ts +12 -0
- package/web/Loader.js +101 -0
- package/web/PresentationControls.cjs.js +1 -0
- package/web/PresentationControls.d.ts +16 -0
- package/web/PresentationControls.js +79 -0
- package/web/ScreenVideoTexture.cjs.js +1 -0
- package/web/ScreenVideoTexture.d.ts +17 -0
- package/web/ScreenVideoTexture.js +30 -0
- package/web/ScrollControls.cjs.js +1 -0
- package/web/ScrollControls.d.ts +45 -0
- package/web/ScrollControls.js +237 -0
- package/web/Select.cjs.js +1 -0
- package/web/Select.d.ts +14 -0
- package/web/Select.js +171 -0
- package/web/View.cjs.js +1 -0
- package/web/View.d.ts +34 -0
- package/web/View.js +259 -0
- package/web/WebcamVideoTexture.cjs.js +1 -0
- package/web/WebcamVideoTexture.d.ts +17 -0
- package/web/WebcamVideoTexture.js +33 -0
- package/web/index.cjs.js +1 -0
- package/web/index.d.ts +17 -0
- package/web/index.js +176 -0
- package/web/pivotControls/AxisArrow.cjs.js +1 -0
- package/web/pivotControls/AxisArrow.d.ts +7 -0
- package/web/pivotControls/AxisArrow.js +193 -0
- package/web/pivotControls/AxisRotator.cjs.js +1 -0
- package/web/pivotControls/AxisRotator.d.ts +7 -0
- package/web/pivotControls/AxisRotator.js +220 -0
- package/web/pivotControls/PlaneSlider.cjs.js +1 -0
- package/web/pivotControls/PlaneSlider.d.ts +7 -0
- package/web/pivotControls/PlaneSlider.js +202 -0
- package/web/pivotControls/ScalingSphere.cjs.js +1 -0
- package/web/pivotControls/ScalingSphere.d.ts +7 -0
- package/web/pivotControls/ScalingSphere.js +192 -0
- package/web/pivotControls/context.cjs.js +1 -0
- package/web/pivotControls/context.d.ts +33 -0
- package/web/pivotControls/context.js +5 -0
- package/web/pivotControls/index.cjs.js +1 -0
- package/web/pivotControls/index.d.ts +39 -0
- package/web/pivotControls/index.js +213 -0
- package/web/useCursor.cjs.js +1 -0
- package/web/useCursor.d.ts +1 -0
- package/web/useCursor.js +12 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Shape } from 'three';
|
|
4
|
+
import { toCreasedNormals } from 'three-stdlib';
|
|
5
|
+
|
|
6
|
+
const eps = 0.00001;
|
|
7
|
+
function createShape(width, height, radius0) {
|
|
8
|
+
const shape = new Shape();
|
|
9
|
+
const radius = radius0 - eps;
|
|
10
|
+
shape.absarc(eps, eps, eps, -Math.PI / 2, -Math.PI, true);
|
|
11
|
+
shape.absarc(eps, height - radius * 2, eps, Math.PI, Math.PI / 2, true);
|
|
12
|
+
shape.absarc(width - radius * 2, height - radius * 2, eps, Math.PI / 2, 0, true);
|
|
13
|
+
shape.absarc(width - radius * 2, eps, eps, 0, -Math.PI / 2, true);
|
|
14
|
+
return shape;
|
|
15
|
+
}
|
|
16
|
+
const RoundedBox = /* @__PURE__ */React.forwardRef(function RoundedBox({
|
|
17
|
+
args: [width = 1, height = 1, depth = 1] = [],
|
|
18
|
+
radius = 0.05,
|
|
19
|
+
steps = 1,
|
|
20
|
+
smoothness = 4,
|
|
21
|
+
bevelSegments = 4,
|
|
22
|
+
creaseAngle = 0.4,
|
|
23
|
+
children,
|
|
24
|
+
...rest
|
|
25
|
+
}, ref) {
|
|
26
|
+
return /*#__PURE__*/React.createElement("mesh", _extends({
|
|
27
|
+
ref: ref
|
|
28
|
+
}, rest), /*#__PURE__*/React.createElement(RoundedBoxGeometry, {
|
|
29
|
+
args: [width, height, depth],
|
|
30
|
+
radius: radius,
|
|
31
|
+
steps: steps,
|
|
32
|
+
smoothness: smoothness,
|
|
33
|
+
bevelSegments: bevelSegments,
|
|
34
|
+
creaseAngle: creaseAngle
|
|
35
|
+
}), children);
|
|
36
|
+
});
|
|
37
|
+
const RoundedBoxGeometry = /* @__PURE__ */React.forwardRef(function RoundedBoxGeometry({
|
|
38
|
+
args: [width = 1, height = 1, depth = 1] = [],
|
|
39
|
+
radius = 0.05,
|
|
40
|
+
steps = 1,
|
|
41
|
+
smoothness = 4,
|
|
42
|
+
bevelSegments = 4,
|
|
43
|
+
creaseAngle = 0.4,
|
|
44
|
+
...rest
|
|
45
|
+
}, ref) {
|
|
46
|
+
const shape = React.useMemo(() => createShape(width, height, radius), [width, height, radius]);
|
|
47
|
+
const params = React.useMemo(() => ({
|
|
48
|
+
depth: depth - radius * 2,
|
|
49
|
+
bevelEnabled: true,
|
|
50
|
+
bevelSegments: bevelSegments * 2,
|
|
51
|
+
steps,
|
|
52
|
+
bevelSize: radius - eps,
|
|
53
|
+
bevelThickness: radius,
|
|
54
|
+
curveSegments: smoothness
|
|
55
|
+
}), [depth, radius, smoothness, bevelSegments, steps]);
|
|
56
|
+
const geomRef = React.useRef(null);
|
|
57
|
+
React.useLayoutEffect(() => {
|
|
58
|
+
if (geomRef.current) {
|
|
59
|
+
geomRef.current.center();
|
|
60
|
+
toCreasedNormals(geomRef.current, creaseAngle);
|
|
61
|
+
}
|
|
62
|
+
}, [shape, params, creaseAngle]);
|
|
63
|
+
React.useImperativeHandle(ref, () => geomRef.current);
|
|
64
|
+
return /*#__PURE__*/React.createElement("extrudeGeometry", _extends({
|
|
65
|
+
ref: geomRef,
|
|
66
|
+
args: [shape, params]
|
|
67
|
+
}, rest));
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
export { RoundedBox, RoundedBoxGeometry };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("three-stdlib"),n=require("three");function u(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 o=u(e),a=c(r);function i(e,r=16,u,c,o){const[i,l]=a.useState((()=>{const e=Array.from({length:r},(()=>[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])).flat();return new n.InstancedBufferAttribute(Float32Array.from(e),16)}));return a.useLayoutEffect((()=>{if(void 0===e.current)return;const a=new t.MeshSurfaceSampler(e.current);c&&a.setWeightAttribute(c),a.build();const s=new n.Vector3,f=new n.Vector3,d=new n.Color,p=new n.Object3D;e.current.updateMatrixWorld(!0);for(let t=0;t<r;t++)a.sample(s,f,d),"function"==typeof u?u({dummy:p,sampledMesh:e.current,position:s,normal:f,color:d},t):p.position.copy(s),p.updateMatrix(),null!=o&&o.current&&o.current.setMatrixAt(t,p.matrix),p.matrix.toArray(i.array,16*t);null!=o&&o.current&&(o.current.instanceMatrix.needsUpdate=!0),i.needsUpdate=!0,l(new n.InstancedBufferAttribute(i.array,i.itemSize).copy(i))}),[e,o,c,r,u]),i}exports.Sampler=function({children:e,weight:r,transform:t,instances:n,mesh:u,count:c=16,...l}){const s=a.useRef(null),f=a.useRef(null),d=a.useRef(null);return a.useLayoutEffect((()=>{var e,r;f.current=null!==(e=null==n?void 0:n.current)&&void 0!==e?e:s.current.children.find((e=>e.hasOwnProperty("instanceMatrix"))),d.current=null!==(r=null==u?void 0:u.current)&&void 0!==r?r:s.current.children.find((e=>"Mesh"===e.type))}),[e,null==u?void 0:u.current,null==n?void 0:n.current]),i(d,c,t,r,f),a.createElement("group",o.default({ref:s},l),e)},exports.useSurfaceSampler=i;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Color, InstancedBufferAttribute, InstancedMesh, Mesh, Object3D, Vector3 } from 'three';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
type SamplePayload = {
|
|
5
|
+
position: Vector3;
|
|
6
|
+
normal: Vector3;
|
|
7
|
+
color: Color;
|
|
8
|
+
};
|
|
9
|
+
export type TransformFn = (payload: TransformPayload, i: number) => void;
|
|
10
|
+
type TransformPayload = SamplePayload & {
|
|
11
|
+
dummy: Object3D;
|
|
12
|
+
sampledMesh: Mesh;
|
|
13
|
+
};
|
|
14
|
+
export type SamplerProps = Omit<ThreeElements['group'], 'ref'> & {
|
|
15
|
+
mesh?: React.RefObject<Mesh>;
|
|
16
|
+
instances?: React.RefObject<InstancedMesh>;
|
|
17
|
+
weight?: string;
|
|
18
|
+
transform?: TransformFn;
|
|
19
|
+
count?: number;
|
|
20
|
+
};
|
|
21
|
+
export interface useSurfaceSamplerProps {
|
|
22
|
+
transform?: TransformFn;
|
|
23
|
+
weight?: string;
|
|
24
|
+
count?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function useSurfaceSampler(mesh: React.RefObject<Mesh>, count?: number, transform?: TransformFn, weight?: string, instanceMesh?: React.RefObject<InstancedMesh> | null): InstancedBufferAttribute;
|
|
27
|
+
export declare function Sampler({ children, weight, transform, instances, mesh, count, ...props }: SamplerProps): React.JSX.Element;
|
|
28
|
+
export {};
|
package/core/Sampler.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { MeshSurfaceSampler } from 'three-stdlib';
|
|
4
|
+
import { InstancedBufferAttribute, Vector3, Color, Object3D } from 'three';
|
|
5
|
+
|
|
6
|
+
function useSurfaceSampler(mesh, count = 16, transform, weight, instanceMesh) {
|
|
7
|
+
const [buffer, setBuffer] = React.useState(() => {
|
|
8
|
+
const arr = Array.from({
|
|
9
|
+
length: count
|
|
10
|
+
}, () => [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]).flat();
|
|
11
|
+
return new InstancedBufferAttribute(Float32Array.from(arr), 16);
|
|
12
|
+
});
|
|
13
|
+
React.useLayoutEffect(() => {
|
|
14
|
+
if (typeof mesh.current === 'undefined') return;
|
|
15
|
+
const sampler = new MeshSurfaceSampler(mesh.current);
|
|
16
|
+
if (weight) {
|
|
17
|
+
sampler.setWeightAttribute(weight);
|
|
18
|
+
}
|
|
19
|
+
sampler.build();
|
|
20
|
+
const position = new Vector3();
|
|
21
|
+
const normal = new Vector3();
|
|
22
|
+
const color = new Color();
|
|
23
|
+
const dummy = new Object3D();
|
|
24
|
+
mesh.current.updateMatrixWorld(true);
|
|
25
|
+
for (let i = 0; i < count; i++) {
|
|
26
|
+
sampler.sample(position, normal, color);
|
|
27
|
+
if (typeof transform === 'function') {
|
|
28
|
+
transform({
|
|
29
|
+
dummy,
|
|
30
|
+
sampledMesh: mesh.current,
|
|
31
|
+
position,
|
|
32
|
+
normal,
|
|
33
|
+
color
|
|
34
|
+
}, i);
|
|
35
|
+
} else {
|
|
36
|
+
dummy.position.copy(position);
|
|
37
|
+
}
|
|
38
|
+
dummy.updateMatrix();
|
|
39
|
+
if (instanceMesh != null && instanceMesh.current) {
|
|
40
|
+
instanceMesh.current.setMatrixAt(i, dummy.matrix);
|
|
41
|
+
}
|
|
42
|
+
dummy.matrix.toArray(buffer.array, i * 16);
|
|
43
|
+
}
|
|
44
|
+
if (instanceMesh != null && instanceMesh.current) {
|
|
45
|
+
instanceMesh.current.instanceMatrix.needsUpdate = true;
|
|
46
|
+
}
|
|
47
|
+
buffer.needsUpdate = true;
|
|
48
|
+
setBuffer(new InstancedBufferAttribute(buffer.array, buffer.itemSize).copy(buffer));
|
|
49
|
+
}, [mesh, instanceMesh, weight, count, transform]);
|
|
50
|
+
return buffer;
|
|
51
|
+
}
|
|
52
|
+
function Sampler({
|
|
53
|
+
children,
|
|
54
|
+
weight,
|
|
55
|
+
transform,
|
|
56
|
+
instances,
|
|
57
|
+
mesh,
|
|
58
|
+
count = 16,
|
|
59
|
+
...props
|
|
60
|
+
}) {
|
|
61
|
+
const group = React.useRef(null);
|
|
62
|
+
const instancedRef = React.useRef(null);
|
|
63
|
+
const meshToSampleRef = React.useRef(null);
|
|
64
|
+
React.useLayoutEffect(() => {
|
|
65
|
+
var _instances$current, _mesh$current;
|
|
66
|
+
instancedRef.current = (_instances$current = instances == null ? void 0 : instances.current) !== null && _instances$current !== void 0 ? _instances$current : group.current.children.find(c => c.hasOwnProperty('instanceMatrix'));
|
|
67
|
+
meshToSampleRef.current = (_mesh$current = mesh == null ? void 0 : mesh.current) !== null && _mesh$current !== void 0 ? _mesh$current : group.current.children.find(c => c.type === 'Mesh');
|
|
68
|
+
}, [children, mesh == null ? void 0 : mesh.current, instances == null ? void 0 : instances.current]);
|
|
69
|
+
useSurfaceSampler(meshToSampleRef, count, transform, weight, instancedRef);
|
|
70
|
+
return /*#__PURE__*/React.createElement("group", _extends({
|
|
71
|
+
ref: group
|
|
72
|
+
}, props), children);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export { Sampler, useSurfaceSampler };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("three"),t=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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 o=n(e),f=u(r),c=u(t);function i(){const e=new f.BufferGeometry,r=new Float32Array([-1,-1,3,-1,-1,3]);return e.boundingSphere=new f.Sphere,e.boundingSphere.set(new f.Vector3,1/0),e.setAttribute("position",new f.BufferAttribute(r,2)),e}const a=c.forwardRef((function({children:e,...r},t){const n=c.useMemo(i,[]);return c.createElement("mesh",o.default({ref:t,geometry:n,frustumCulled:!1},r),e)}));exports.ScreenQuad=a;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
export type ScreenQuadProps = Omit<ThreeElements['mesh'], 'ref' | 'args'>;
|
|
5
|
+
export declare const ScreenQuad: ForwardRefComponent<ScreenQuadProps, THREE.Mesh>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
function createScreenQuadGeometry() {
|
|
6
|
+
const geometry = new THREE.BufferGeometry();
|
|
7
|
+
const vertices = new Float32Array([-1, -1, 3, -1, -1, 3]);
|
|
8
|
+
geometry.boundingSphere = new THREE.Sphere();
|
|
9
|
+
geometry.boundingSphere.set(new THREE.Vector3(), Infinity);
|
|
10
|
+
geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 2));
|
|
11
|
+
return geometry;
|
|
12
|
+
}
|
|
13
|
+
const ScreenQuad = /* @__PURE__ */React.forwardRef(function ScreenQuad({
|
|
14
|
+
children,
|
|
15
|
+
...restProps
|
|
16
|
+
}, ref) {
|
|
17
|
+
const geometry = React.useMemo(createScreenQuadGeometry, []);
|
|
18
|
+
return /*#__PURE__*/React.createElement("mesh", _extends({
|
|
19
|
+
ref: ref,
|
|
20
|
+
geometry: geometry,
|
|
21
|
+
frustumCulled: false
|
|
22
|
+
}, restProps), children);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export { ScreenQuad };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("@react-three/fiber"),t=require("react"),c=require("three"),a=require("./calculateScaleFactor.cjs.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function n(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var c=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,c.get?c:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}var l=u(e),o=n(t);const i=new c.Vector3,s=t.forwardRef((({scale:e=1,...c},u)=>{const n=t.useRef(null);return o.useImperativeHandle(u,(()=>n.current),[]),r.useFrame((r=>{const t=n.current;if(!t)return;const c=a.calculateScaleFactor(t.getWorldPosition(i),e,r.camera,r.size);t.scale.setScalar(c*e)})),o.createElement("object3D",l.default({ref:n},c))}));exports.ScreenSizer=s;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
2
|
+
import { Object3D } from 'three';
|
|
3
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
+
export type ScreenSizerProps = Omit<ThreeElements['object3D'], 'ref'> & {
|
|
5
|
+
scale?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const ScreenSizer: ForwardRefComponent<ScreenSizerProps, Object3D>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import { useFrame } from '@react-three/fiber';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { forwardRef, useRef } from 'react';
|
|
5
|
+
import { Vector3 } from 'three';
|
|
6
|
+
import { calculateScaleFactor } from './calculateScaleFactor.js';
|
|
7
|
+
|
|
8
|
+
const worldPos = /* @__PURE__ */new Vector3();
|
|
9
|
+
/**
|
|
10
|
+
* Wraps children in an `Object3D` and attempts to scale from
|
|
11
|
+
* world units to screen units * scale factor.
|
|
12
|
+
*
|
|
13
|
+
* For example, this will render a box of roughly 1x1 pixel size,
|
|
14
|
+
* independently of how far the camera is.
|
|
15
|
+
*
|
|
16
|
+
* ```jsx
|
|
17
|
+
* <ScreenSizer>
|
|
18
|
+
* <Box />
|
|
19
|
+
* </ScreenSizer>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
const ScreenSizer = /* @__PURE__ */forwardRef(({
|
|
23
|
+
scale = 1,
|
|
24
|
+
...props
|
|
25
|
+
}, ref) => {
|
|
26
|
+
const container = useRef(null);
|
|
27
|
+
React.useImperativeHandle(ref, () => container.current, []);
|
|
28
|
+
useFrame(state => {
|
|
29
|
+
const obj = container.current;
|
|
30
|
+
if (!obj) return;
|
|
31
|
+
const sf = calculateScaleFactor(obj.getWorldPosition(worldPos), scale, state.camera, state.size);
|
|
32
|
+
obj.scale.setScalar(sf * scale);
|
|
33
|
+
});
|
|
34
|
+
return /*#__PURE__*/React.createElement("object3D", _extends({
|
|
35
|
+
ref: container
|
|
36
|
+
}, props));
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export { ScreenSizer };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),r=require("react"),t=require("@react-three/fiber");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function u(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 c=n(e),o=u(r);const a=o.forwardRef((({children:e,depth:r=-1,...n},u)=>{const a=o.useRef(null);return o.useImperativeHandle(u,(()=>a.current),[]),t.useFrame((({camera:e})=>{a.current.quaternion.copy(e.quaternion),a.current.position.copy(e.position)})),o.createElement("group",c.default({ref:a},n),o.createElement("group",{"position-z":-r},e))}));exports.ScreenSpace=a;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Group } from 'three';
|
|
2
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
3
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
4
|
+
export type ScreenSpaceProps = Omit<ThreeElements['group'], 'ref'> & {
|
|
5
|
+
depth?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const ScreenSpace: ForwardRefComponent<ScreenSpaceProps, Group>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useFrame } from '@react-three/fiber';
|
|
4
|
+
|
|
5
|
+
const ScreenSpace = /* @__PURE__ */React.forwardRef(({
|
|
6
|
+
children,
|
|
7
|
+
depth = -1,
|
|
8
|
+
...rest
|
|
9
|
+
}, ref) => {
|
|
10
|
+
const localRef = React.useRef(null);
|
|
11
|
+
React.useImperativeHandle(ref, () => localRef.current, []);
|
|
12
|
+
useFrame(({
|
|
13
|
+
camera
|
|
14
|
+
}) => {
|
|
15
|
+
localRef.current.quaternion.copy(camera.quaternion);
|
|
16
|
+
localRef.current.position.copy(camera.position);
|
|
17
|
+
});
|
|
18
|
+
return /*#__PURE__*/React.createElement("group", _extends({
|
|
19
|
+
ref: localRef
|
|
20
|
+
}, rest), /*#__PURE__*/React.createElement("group", {
|
|
21
|
+
"position-z": -depth
|
|
22
|
+
}, children));
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export { ScreenSpace };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("three"),r=require("react"),n=require("@react-three/fiber"),o=require("three-stdlib");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var i=c(e),u=s(t),a=s(r);const l=a.createContext(null),f=a.forwardRef(((e,t)=>{a.useMemo((()=>n.extend({SegmentObject:m})),[]);const{limit:r=1e3,lineWidth:c=1,children:s,...f}=e,[d,b]=a.useState([]),[p]=a.useState((()=>new o.Line2)),[h]=a.useState((()=>new o.LineMaterial)),[g]=a.useState((()=>new o.LineSegmentsGeometry)),[v]=a.useState((()=>new u.Vector2(512,512))),[w]=a.useState((()=>Array(6*r).fill(0))),[S]=a.useState((()=>Array(6*r).fill(0))),j=a.useMemo((()=>({subscribe:e=>(b((t=>[...t,e])),()=>b((t=>t.filter((t=>t.current!==e.current)))))})),[]);return n.useFrame((()=>{for(let t=0;t<r;t++){var e;const r=null==(e=d[t])?void 0:e.current;r&&(w[6*t+0]=r.start.x,w[6*t+1]=r.start.y,w[6*t+2]=r.start.z,w[6*t+3]=r.end.x,w[6*t+4]=r.end.y,w[6*t+5]=r.end.z,S[6*t+0]=r.color.r,S[6*t+1]=r.color.g,S[6*t+2]=r.color.b,S[6*t+3]=r.color.r,S[6*t+4]=r.color.g,S[6*t+5]=r.color.b)}g.setColors(S),g.setPositions(w),p.computeLineDistances()})),a.createElement("primitive",{object:p,ref:t},a.createElement("primitive",{object:g,attach:"geometry"}),a.createElement("primitive",i.default({object:h,attach:"material",vertexColors:!0,resolution:v,linewidth:c},f)),a.createElement(l.Provider,{value:j},s))}));class m{constructor(){this.color=new u.Color("white"),this.start=new u.Vector3(0,0,0),this.end=new u.Vector3(0,0,0)}}const d=e=>e instanceof u.Vector3?e:new u.Vector3(..."number"==typeof e?[e,e,e]:e),b=a.forwardRef((({color:e,start:t,end:r},n)=>{const o=a.useContext(l);if(!o)throw"Segment must used inside Segments component.";const c=a.useRef(null);return a.useImperativeHandle(n,(()=>c.current),[]),a.useLayoutEffect((()=>o.subscribe(c)),[]),a.createElement("segmentObject",{ref:c,color:e,start:d(t),end:d(r)})}));exports.Segment=b,exports.SegmentObject=m,exports.Segments=f;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { ReactThreeFiber, ThreeElements, ThreeElement } from '@react-three/fiber';
|
|
4
|
+
import { Line2, LineMaterialParameters } from 'three-stdlib';
|
|
5
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
6
|
+
export type SegmentsProps = LineMaterialParameters & {
|
|
7
|
+
limit?: number;
|
|
8
|
+
lineWidth?: number;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export type SegmentProps = Omit<ThreeElements['segmentObject'], 'ref' | 'start' | 'end' | 'color'> & {
|
|
12
|
+
start: ReactThreeFiber.Vector3;
|
|
13
|
+
end: ReactThreeFiber.Vector3;
|
|
14
|
+
color?: ReactThreeFiber.Color;
|
|
15
|
+
};
|
|
16
|
+
declare const Segments: ForwardRefComponent<SegmentsProps, Line2>;
|
|
17
|
+
declare module '@react-three/fiber' {
|
|
18
|
+
interface ThreeElements {
|
|
19
|
+
segmentObject: ThreeElement<typeof SegmentObject>;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export declare class SegmentObject {
|
|
23
|
+
color: THREE.Color;
|
|
24
|
+
start: THREE.Vector3;
|
|
25
|
+
end: THREE.Vector3;
|
|
26
|
+
constructor();
|
|
27
|
+
}
|
|
28
|
+
declare const Segment: ForwardRefComponent<SegmentProps, SegmentObject>;
|
|
29
|
+
export { Segments, Segment };
|
package/core/Segments.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { extend, useFrame } from '@react-three/fiber';
|
|
5
|
+
import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
|
|
6
|
+
|
|
7
|
+
const context = /* @__PURE__ */React.createContext(null);
|
|
8
|
+
const Segments = /* @__PURE__ */React.forwardRef((props, forwardedRef) => {
|
|
9
|
+
React.useMemo(() => extend({
|
|
10
|
+
SegmentObject
|
|
11
|
+
}), []);
|
|
12
|
+
const {
|
|
13
|
+
limit = 1000,
|
|
14
|
+
lineWidth = 1.0,
|
|
15
|
+
children,
|
|
16
|
+
...rest
|
|
17
|
+
} = props;
|
|
18
|
+
const [segments, setSegments] = React.useState([]);
|
|
19
|
+
const [line] = React.useState(() => new Line2());
|
|
20
|
+
const [material] = React.useState(() => new LineMaterial());
|
|
21
|
+
const [geometry] = React.useState(() => new LineSegmentsGeometry());
|
|
22
|
+
const [resolution] = React.useState(() => new THREE.Vector2(512, 512));
|
|
23
|
+
const [positions] = React.useState(() => Array(limit * 6).fill(0));
|
|
24
|
+
const [colors] = React.useState(() => Array(limit * 6).fill(0));
|
|
25
|
+
const api = React.useMemo(() => ({
|
|
26
|
+
subscribe: ref => {
|
|
27
|
+
setSegments(segments => [...segments, ref]);
|
|
28
|
+
return () => setSegments(segments => segments.filter(item => item.current !== ref.current));
|
|
29
|
+
}
|
|
30
|
+
}), []);
|
|
31
|
+
useFrame(() => {
|
|
32
|
+
for (let i = 0; i < limit; i++) {
|
|
33
|
+
var _segments$i;
|
|
34
|
+
const segment = (_segments$i = segments[i]) == null ? void 0 : _segments$i.current;
|
|
35
|
+
if (segment) {
|
|
36
|
+
positions[i * 6 + 0] = segment.start.x;
|
|
37
|
+
positions[i * 6 + 1] = segment.start.y;
|
|
38
|
+
positions[i * 6 + 2] = segment.start.z;
|
|
39
|
+
positions[i * 6 + 3] = segment.end.x;
|
|
40
|
+
positions[i * 6 + 4] = segment.end.y;
|
|
41
|
+
positions[i * 6 + 5] = segment.end.z;
|
|
42
|
+
colors[i * 6 + 0] = segment.color.r;
|
|
43
|
+
colors[i * 6 + 1] = segment.color.g;
|
|
44
|
+
colors[i * 6 + 2] = segment.color.b;
|
|
45
|
+
colors[i * 6 + 3] = segment.color.r;
|
|
46
|
+
colors[i * 6 + 4] = segment.color.g;
|
|
47
|
+
colors[i * 6 + 5] = segment.color.b;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
geometry.setColors(colors);
|
|
51
|
+
geometry.setPositions(positions);
|
|
52
|
+
line.computeLineDistances();
|
|
53
|
+
});
|
|
54
|
+
return /*#__PURE__*/React.createElement("primitive", {
|
|
55
|
+
object: line,
|
|
56
|
+
ref: forwardedRef
|
|
57
|
+
}, /*#__PURE__*/React.createElement("primitive", {
|
|
58
|
+
object: geometry,
|
|
59
|
+
attach: "geometry"
|
|
60
|
+
}), /*#__PURE__*/React.createElement("primitive", _extends({
|
|
61
|
+
object: material,
|
|
62
|
+
attach: "material",
|
|
63
|
+
vertexColors: true,
|
|
64
|
+
resolution: resolution,
|
|
65
|
+
linewidth: lineWidth
|
|
66
|
+
}, rest)), /*#__PURE__*/React.createElement(context.Provider, {
|
|
67
|
+
value: api
|
|
68
|
+
}, children));
|
|
69
|
+
});
|
|
70
|
+
class SegmentObject {
|
|
71
|
+
constructor() {
|
|
72
|
+
this.color = new THREE.Color('white');
|
|
73
|
+
this.start = new THREE.Vector3(0, 0, 0);
|
|
74
|
+
this.end = new THREE.Vector3(0, 0, 0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const normPos = pos => pos instanceof THREE.Vector3 ? pos : new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
|
|
78
|
+
const Segment = /* @__PURE__ */React.forwardRef(({
|
|
79
|
+
color,
|
|
80
|
+
start,
|
|
81
|
+
end
|
|
82
|
+
}, forwardedRef) => {
|
|
83
|
+
const api = React.useContext(context);
|
|
84
|
+
if (!api) throw 'Segment must used inside Segments component.';
|
|
85
|
+
const ref = React.useRef(null);
|
|
86
|
+
React.useImperativeHandle(forwardedRef, () => ref.current, []);
|
|
87
|
+
React.useLayoutEffect(() => api.subscribe(ref), []);
|
|
88
|
+
return /*#__PURE__*/React.createElement("segmentObject", {
|
|
89
|
+
ref: ref,
|
|
90
|
+
color: color,
|
|
91
|
+
start: normPos(start),
|
|
92
|
+
end: normPos(end)
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
export { Segment, SegmentObject, Segments };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var 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 n=a(e),c=o(t);const i=c.forwardRef((({fog:e=!1,renderOrder:t,depthWrite:a=!1,colorStop:o=0,color:i="black",opacity:l=.5,...d},u)=>{const f=c.useMemo((()=>{const e=document.createElement("canvas");e.width=128,e.height=128;const t=e.getContext("2d"),a=t.createRadialGradient(e.width/2,e.height/2,0,e.width/2,e.height/2,e.width/2);return a.addColorStop(o,new r.Color(i).getStyle()),a.addColorStop(1,"rgba(0,0,0,0)"),t.fillStyle=a,t.fillRect(0,0,e.width,e.height),e}),[i,o]);return c.createElement("mesh",n.default({renderOrder:t,ref:u,"rotation-x":-Math.PI/2},d),c.createElement("planeGeometry",null),c.createElement("meshBasicMaterial",{transparent:!0,opacity:l,fog:e,depthWrite:a,side:r.DoubleSide},c.createElement("canvasTexture",{attach:"map",args:[f]})))}));exports.Shadow=i;
|
package/core/Shadow.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Mesh, Color, type PlaneGeometry, type MeshBasicMaterial } from 'three';
|
|
2
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
3
|
+
import { ThreeElements } from '@react-three/fiber';
|
|
4
|
+
export type ShadowProps = Omit<ThreeElements['mesh'], 'ref'> & {
|
|
5
|
+
colorStop?: number;
|
|
6
|
+
fog?: boolean;
|
|
7
|
+
color?: Color | number | string;
|
|
8
|
+
opacity?: number;
|
|
9
|
+
depthWrite?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type ShadowType = Mesh<PlaneGeometry, MeshBasicMaterial>;
|
|
12
|
+
export declare const Shadow: ForwardRefComponent<ShadowProps, ShadowType>;
|
package/core/Shadow.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/esm/extends';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Color, DoubleSide } from 'three';
|
|
4
|
+
|
|
5
|
+
const Shadow = /* @__PURE__ */React.forwardRef(({
|
|
6
|
+
fog = false,
|
|
7
|
+
renderOrder,
|
|
8
|
+
depthWrite = false,
|
|
9
|
+
colorStop = 0.0,
|
|
10
|
+
color = 'black',
|
|
11
|
+
opacity = 0.5,
|
|
12
|
+
...props
|
|
13
|
+
}, ref) => {
|
|
14
|
+
const canvas = React.useMemo(() => {
|
|
15
|
+
const canvas = document.createElement('canvas');
|
|
16
|
+
canvas.width = 128;
|
|
17
|
+
canvas.height = 128;
|
|
18
|
+
const context = canvas.getContext('2d');
|
|
19
|
+
const gradient = context.createRadialGradient(canvas.width / 2, canvas.height / 2, 0, canvas.width / 2, canvas.height / 2, canvas.width / 2);
|
|
20
|
+
gradient.addColorStop(colorStop, new Color(color).getStyle());
|
|
21
|
+
gradient.addColorStop(1, 'rgba(0,0,0,0)');
|
|
22
|
+
context.fillStyle = gradient;
|
|
23
|
+
context.fillRect(0, 0, canvas.width, canvas.height);
|
|
24
|
+
return canvas;
|
|
25
|
+
}, [color, colorStop]);
|
|
26
|
+
return /*#__PURE__*/React.createElement("mesh", _extends({
|
|
27
|
+
renderOrder: renderOrder,
|
|
28
|
+
ref: ref,
|
|
29
|
+
"rotation-x": -Math.PI / 2
|
|
30
|
+
}, props), /*#__PURE__*/React.createElement("planeGeometry", null), /*#__PURE__*/React.createElement("meshBasicMaterial", {
|
|
31
|
+
transparent: true,
|
|
32
|
+
opacity: opacity,
|
|
33
|
+
fog: fog,
|
|
34
|
+
depthWrite: depthWrite,
|
|
35
|
+
side: DoubleSide
|
|
36
|
+
}, /*#__PURE__*/React.createElement("canvasTexture", {
|
|
37
|
+
attach: "map",
|
|
38
|
+
args: [canvas]
|
|
39
|
+
})));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export { Shadow };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@react-three/fiber"),r=require("react"),a=require("three");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var t=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(r,a,t.get?t:{enumerable:!0,get:function(){return e[a]}})}})),r.default=e,Object.freeze(r)}var n=t(r),u=t(a);exports.ShadowAlpha=function({opacity:r,alphaMap:a}){const t=n.useRef(null),l=n.useRef(null),o=n.useRef({value:1}),c=n.useRef({value:null}),i=n.useRef({value:!1});return n.useLayoutEffect((()=>{t.current.onBeforeCompile=l.current.onBeforeCompile=e=>{const r=e.fragmentShader.indexOf("void main");let a,t="",n=r;for(;"\n"!==a&&n<r+100;)a=e.fragmentShader.charAt(n),t+=a,n++;t=t.trim(),e.vertexShader=e.vertexShader.replace("void main() {","\n varying vec2 custom_vUv;\n\n void main() {\n custom_vUv = uv;\n \n "),e.fragmentShader=e.fragmentShader.replace(t,"\n uniform float uShadowOpacity;\n uniform sampler2D uAlphaMap;\n uniform bool uHasAlphaMap;\n\n varying vec2 custom_vUv;\n \n float bayerDither2x2( vec2 v ) {\n return mod( 3.0 * v.y + 2.0 * v.x, 4.0 );\n }\n \n float bayerDither4x4( vec2 v ) {\n vec2 P1 = mod( v, 2.0 );\n vec2 P2 = mod( floor( 0.5 * v ), 2.0 );\n return 4.0 * bayerDither2x2( P1 ) + bayerDither2x2( P2 );\n }\n \n void main() {\n float alpha = \n uHasAlphaMap ? \n uShadowOpacity * texture2D(uAlphaMap, custom_vUv).x\n : uShadowOpacity;\n\n if( ( bayerDither4x4( floor( mod( gl_FragCoord.xy, 4.0 ) ) ) ) / 16.0 >= alpha ) discard;\n \n "),e.uniforms.uShadowOpacity=o.current,e.uniforms.uAlphaMap=c.current,e.uniforms.uHasAlphaMap=i.current}}),[]),e.useFrame((()=>{var e;const n=null==(e=t.current.__r3f)||null==(e=e.parent)?void 0:e.object;if(n){const e=n.material;e&&(o.current.value=null!=r?r:e.opacity,!1===a?(c.current.value=null,i.current.value=!1):(c.current.value=a||e.alphaMap,i.current.value=!!c.current.value))}})),n.createElement(n.Fragment,null,n.createElement("meshDepthMaterial",{ref:t,attach:"customDepthMaterial",depthPacking:u.RGBADepthPacking}),n.createElement("meshDistanceMaterial",{ref:l,attach:"customDistanceMaterial"}))};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { useFrame } from '@react-three/fiber';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Integration and compilation: Faraz Shaikh (https://twitter.com/CantBeFaraz)
|
|
7
|
+
*
|
|
8
|
+
* Based on:
|
|
9
|
+
* - https://gkjohnson.github.io/threejs-sandbox/screendoor-transparency/ by Garrett Johnson (https://github.com/gkjohnson)
|
|
10
|
+
*
|
|
11
|
+
* Note:
|
|
12
|
+
* - Must depreciate in favor of https://github.com/mrdoob/three.js/issues/10600 when it's ready.
|
|
13
|
+
*/
|
|
14
|
+
function ShadowAlpha({
|
|
15
|
+
opacity,
|
|
16
|
+
alphaMap
|
|
17
|
+
}) {
|
|
18
|
+
const depthMaterialRef = React.useRef(null);
|
|
19
|
+
const distanceMaterialRef = React.useRef(null);
|
|
20
|
+
const uShadowOpacity = React.useRef({
|
|
21
|
+
value: 1
|
|
22
|
+
});
|
|
23
|
+
const uAlphaMap = React.useRef({
|
|
24
|
+
value: null
|
|
25
|
+
});
|
|
26
|
+
const uHasAlphaMap = React.useRef({
|
|
27
|
+
value: false
|
|
28
|
+
});
|
|
29
|
+
React.useLayoutEffect(() => {
|
|
30
|
+
depthMaterialRef.current.onBeforeCompile = distanceMaterialRef.current.onBeforeCompile = shader => {
|
|
31
|
+
// Need to get the "void main" line dynamically because the lines for
|
|
32
|
+
// MeshDistanceMaterial and MeshDepthMaterial are different 🤦♂️
|
|
33
|
+
const mainLineStart = shader.fragmentShader.indexOf('void main');
|
|
34
|
+
let mainLine = '';
|
|
35
|
+
let ch;
|
|
36
|
+
let i = mainLineStart;
|
|
37
|
+
while (ch !== '\n' && i < mainLineStart + 100) {
|
|
38
|
+
ch = shader.fragmentShader.charAt(i);
|
|
39
|
+
mainLine += ch;
|
|
40
|
+
i++;
|
|
41
|
+
}
|
|
42
|
+
mainLine = mainLine.trim();
|
|
43
|
+
shader.vertexShader = shader.vertexShader.replace('void main() {', `
|
|
44
|
+
varying vec2 custom_vUv;
|
|
45
|
+
|
|
46
|
+
void main() {
|
|
47
|
+
custom_vUv = uv;
|
|
48
|
+
|
|
49
|
+
`);
|
|
50
|
+
shader.fragmentShader = shader.fragmentShader.replace(mainLine, `
|
|
51
|
+
uniform float uShadowOpacity;
|
|
52
|
+
uniform sampler2D uAlphaMap;
|
|
53
|
+
uniform bool uHasAlphaMap;
|
|
54
|
+
|
|
55
|
+
varying vec2 custom_vUv;
|
|
56
|
+
|
|
57
|
+
float bayerDither2x2( vec2 v ) {
|
|
58
|
+
return mod( 3.0 * v.y + 2.0 * v.x, 4.0 );
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
float bayerDither4x4( vec2 v ) {
|
|
62
|
+
vec2 P1 = mod( v, 2.0 );
|
|
63
|
+
vec2 P2 = mod( floor( 0.5 * v ), 2.0 );
|
|
64
|
+
return 4.0 * bayerDither2x2( P1 ) + bayerDither2x2( P2 );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
void main() {
|
|
68
|
+
float alpha =
|
|
69
|
+
uHasAlphaMap ?
|
|
70
|
+
uShadowOpacity * texture2D(uAlphaMap, custom_vUv).x
|
|
71
|
+
: uShadowOpacity;
|
|
72
|
+
|
|
73
|
+
if( ( bayerDither4x4( floor( mod( gl_FragCoord.xy, 4.0 ) ) ) ) / 16.0 >= alpha ) discard;
|
|
74
|
+
|
|
75
|
+
`);
|
|
76
|
+
shader.uniforms['uShadowOpacity'] = uShadowOpacity.current;
|
|
77
|
+
shader.uniforms['uAlphaMap'] = uAlphaMap.current;
|
|
78
|
+
shader.uniforms['uHasAlphaMap'] = uHasAlphaMap.current;
|
|
79
|
+
};
|
|
80
|
+
}, []);
|
|
81
|
+
useFrame(() => {
|
|
82
|
+
var _r3f;
|
|
83
|
+
const parent = (_r3f = depthMaterialRef.current.__r3f) == null || (_r3f = _r3f.parent) == null ? void 0 : _r3f.object;
|
|
84
|
+
if (parent) {
|
|
85
|
+
const parentMainMaterial = parent.material;
|
|
86
|
+
if (parentMainMaterial) {
|
|
87
|
+
uShadowOpacity.current.value = opacity !== null && opacity !== void 0 ? opacity : parentMainMaterial.opacity;
|
|
88
|
+
if (alphaMap === false) {
|
|
89
|
+
uAlphaMap.current.value = null;
|
|
90
|
+
uHasAlphaMap.current.value = false;
|
|
91
|
+
} else {
|
|
92
|
+
uAlphaMap.current.value = alphaMap || parentMainMaterial.alphaMap;
|
|
93
|
+
uHasAlphaMap.current.value = !!uAlphaMap.current.value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("meshDepthMaterial", {
|
|
99
|
+
ref: depthMaterialRef,
|
|
100
|
+
attach: "customDepthMaterial",
|
|
101
|
+
depthPacking: THREE.RGBADepthPacking
|
|
102
|
+
}), /*#__PURE__*/React.createElement("meshDistanceMaterial", {
|
|
103
|
+
ref: distanceMaterialRef,
|
|
104
|
+
attach: "customDistanceMaterial"
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export { ShadowAlpha };
|
package/core/Sky.cjs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/extends"),t=require("react"),r=require("three-stdlib"),i=require("three");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function a(e){if(e&&e.__esModule)return 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 u=n(e),o=a(t);function c(e,t,r=new i.Vector3){const n=Math.PI*(e-.5),a=2*Math.PI*(t-.5);return r.x=Math.cos(a),r.y=Math.sin(n),r.z=Math.sin(a),r}const l=o.forwardRef((({inclination:e=.6,azimuth:t=.1,distance:n=1e3,mieCoefficient:a=.005,mieDirectionalG:l=.8,rayleigh:s=.5,turbidity:f=10,sunPosition:m=c(e,t),...d},b)=>{const h=o.useMemo((()=>(new i.Vector3).setScalar(n)),[n]),[y]=o.useState((()=>new r.Sky));return o.createElement("primitive",u.default({object:y,ref:b,"material-uniforms-mieCoefficient-value":a,"material-uniforms-mieDirectionalG-value":l,"material-uniforms-rayleigh-value":s,"material-uniforms-sunPosition-value":m,"material-uniforms-turbidity-value":f,scale:h},d))}));exports.Sky=l,exports.calcPosFromAngles=c;
|
package/core/Sky.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactThreeFiber } from '@react-three/fiber';
|
|
2
|
+
import { Sky as SkyImpl } from 'three-stdlib';
|
|
3
|
+
import { Vector3 } from 'three';
|
|
4
|
+
import { ForwardRefComponent } from '../helpers/ts-utils';
|
|
5
|
+
export type SkyProps = {
|
|
6
|
+
distance?: number;
|
|
7
|
+
sunPosition?: ReactThreeFiber.Vector3;
|
|
8
|
+
inclination?: number;
|
|
9
|
+
azimuth?: number;
|
|
10
|
+
mieCoefficient?: number;
|
|
11
|
+
mieDirectionalG?: number;
|
|
12
|
+
rayleigh?: number;
|
|
13
|
+
turbidity?: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function calcPosFromAngles(inclination: number, azimuth: number, vector?: Vector3): Vector3;
|
|
16
|
+
export declare const Sky: ForwardRefComponent<SkyProps, SkyImpl>;
|