A growing collection of useful helpers and fully functional, ready-made abstractions for @react-three/fiber.
If you make a component that is generic enough to be useful to others, think about CONTRIBUTING!
npm install @react-three/drei
[!IMPORTANT]
this package is using the stand-alone three-stdlib
instead of three/examples/jsm
.
Basic usage
import { PerspectiveCamera, PositionalAudio, ... } from '@react-three/drei'
React-native
import { PerspectiveCamera, PositionalAudio, ... } from '@react-three/drei/native'
The native
route of the library does not export Html
or Loader
. The default export of the library is web
which does export Html
and Loader
.
Documentation
https://pmndrs.github.io/drei
Old doc
> [!WARNING]
> Below is an archive of the anchors links with their new respective locations to the documentation website.
> Do not update the links below, they are for reference only.
### Cameras
#### PerspectiveCamera
[Documentation has moved here](https://pmndrs.github.io/drei/cameras/perspective-camera)
#### OrthographicCamera
[Documentation has moved here](https://pmndrs.github.io/drei/cameras/orthographic-camera)
#### CubeCamera
[Documentation has moved here](https://pmndrs.github.io/drei/cameras/cube-camera)
### Controls
#### CameraControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/camera-controls)
#### ScrollControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/scroll-controls)
#### PresentationControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/presentation-controls)
#### KeyboardControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/keyboard-controls)
#### FaceControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/face-controls)
#### MotionPathControls
[Documentation has moved here](https://pmndrs.github.io/drei/controls/motion-path-controls)
### Gizmos
#### GizmoHelper
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/gizmo-helper)
#### PivotControls
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/pivot-controls)
#### DragControls
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/drag-controls)
#### TransformControls
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/transform-controls)
#### Grid
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/grid)
#### Helper / useHelper
[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/helper-use-helper)
### Shapes
#### Plane, Box, Sphere, Circle, Cone, Cylinder, Tube, Torus, TorusKnot, Ring, Tetrahedron, Polyhedron, Icosahedron, Octahedron, Dodecahedron, Extrude, Lathe, Shape
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/mesh)
#### RoundedBox
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/rounded-box)
#### ScreenQuad
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/screen-quad)
#### Line
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/line)
#### QuadraticBezierLine
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/quadratic-bezier-line)
#### CubicBezierLine
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/cubic-bezier-line)
#### CatmullRomLine
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/catmull-rom-line)
#### Facemesh
[Documentation has moved here](https://pmndrs.github.io/drei/shapes/facemesh)
### Abstractions
#### Image
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/image)
#### Text
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/text)
#### Text3D
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/text3d)
#### Effects
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/effects)
#### PositionalAudio
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/positional-audio)
#### Billboard
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/billboard)
#### ScreenSpace
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/screen-space)
#### ScreenSizer
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/screen-sizer)
#### GradientTexture
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/gradient-texture)
#### Edges
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/edges)
#### Outlines
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/outlines)
#### Trail
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/trail)
#### Sampler
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/sampler)
#### ComputedAttribute
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/computed-attribute)
#### Clone
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/clone)
#### useAnimations
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/use-animations)
#### MarchingCubes
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/marching-cubes)
#### Decal
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/decal)
#### Svg
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/svg)
#### AsciiRenderer
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/ascii-renderer)
#### Splat
[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/splat)
### Shaders
#### MeshReflectorMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-reflector-material)
#### MeshWobbleMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-wobble-material)
#### MeshDistortMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-distort-material)
#### MeshRefractionMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-refraction-material)
#### MeshTransmissionMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-transmission-material)
#### MeshDiscardMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-discard-material)
#### PointMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/point-material)
#### SoftShadows
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/soft-shadows)
#### shaderMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/shaders/shader-material)
### Modifiers
#### CurveModifier
[Documentation has moved here](https://pmndrs.github.io/drei/modifiers/curve-modifier)
### Misc
#### useContextBridge
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-context-bridge)
#### Example
[Documentation has moved here](https://pmndrs.github.io/drei/misc/example)
#### Html
[Documentation has moved here](https://pmndrs.github.io/drei/misc/html)
#### CycleRaycast
[Documentation has moved here](https://pmndrs.github.io/drei/misc/cycle-raycast)
#### Select
[Documentation has moved here](https://pmndrs.github.io/drei/misc/select)
#### Sprite Animator
[Documentation has moved here](https://pmndrs.github.io/drei/misc/sprite-animator)
#### Stats
[Documentation has moved here](https://pmndrs.github.io/drei/misc/stats)
#### StatsGl
[Documentation has moved here](https://pmndrs.github.io/drei/misc/stats-gl)
#### Wireframe
[Documentation has moved here](https://pmndrs.github.io/drei/misc/wireframe)
#### useDepthBuffer
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-depth-buffer)
#### Fbo / useFBO
[Documentation has moved here](https://pmndrs.github.io/drei/misc/fbo-use-fbo)
#### useCamera
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-camera)
#### CubeCamera / useCubeCamera
[Documentation has moved here](https://pmndrs.github.io/drei/misc/cube-camera-use-cube-camera)
#### DetectGPU / useDetectGPU
[Documentation has moved here](https://pmndrs.github.io/drei/misc/detect-gpu-use-detect-gpu)
#### useAspect
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-aspect)
#### useCursor
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-cursor)
#### useIntersect
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-intersect)
#### useBoxProjectedEnv
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-box-projected-env)
#### Trail / useTrail
[Documentation has moved here](https://pmndrs.github.io/drei/misc/trail-use-trail)
#### useSurfaceSampler
[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-surface-sampler)
#### FaceLandmarker
[Documentation has moved here](https://pmndrs.github.io/drei/misc/face-landmarker)
### Loading
#### Loader
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/loader)
#### Progress / useProgress
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/progress-use-progress)
#### Gltf / useGLTF
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/gltf-use-gltf)
#### Fbx / useFBX
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/fbx-use-fbx)
#### Texture / useTexture
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/texture-use-texture)
#### Ktx2 / useKTX2
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/ktx2-use-ktx2)
#### CubeTexture / useCubeTexture
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/cube-texture-use-cube-texture)
#### VideoTexture / useVideoTexture
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/video-texture-use-video-texture)
#### TrailTexture / useTrailTexture
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/trail-texture-use-trail-texture)
#### useFont
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/use-font)
#### useSpriteLoader
[Documentation has moved here](https://pmndrs.github.io/drei/loaders/use-sprite-loader)
### Performance
#### Instances
[Documentation has moved here](https://pmndrs.github.io/drei/performances/instances)
#### Merged
[Documentation has moved here](https://pmndrs.github.io/drei/performances/merged)
#### Points
[Documentation has moved here](https://pmndrs.github.io/drei/performances/points)
#### Segments
[Documentation has moved here](https://pmndrs.github.io/drei/performances/segments)
#### Detailed
[Documentation has moved here](https://pmndrs.github.io/drei/performances/detailed)
#### Preload
[Documentation has moved here](https://pmndrs.github.io/drei/performances/preload)
#### BakeShadows
[Documentation has moved here](https://pmndrs.github.io/drei/performances/bake-shadows)
#### meshBounds
[Documentation has moved here](https://pmndrs.github.io/drei/performances/mesh-bounds)
#### AdaptiveDpr
[Documentation has moved here](https://pmndrs.github.io/drei/performances/adaptive-dpr)
#### AdaptiveEvents
[Documentation has moved here](https://pmndrs.github.io/drei/performances/adaptive-events)
#### Bvh
[Documentation has moved here](https://pmndrs.github.io/drei/performances/bvh)
#### PerformanceMonitor
[Documentation has moved here](https://pmndrs.github.io/drei/performances/performance-monitor)
### Portals
#### Hud
[Documentation has moved here](https://pmndrs.github.io/drei/portals/hud)
#### View
[Documentation has moved here](https://pmndrs.github.io/drei/portals/view)
#### RenderTexture
[Documentation has moved here](https://pmndrs.github.io/drei/portals/render-texture)
#### RenderCubeTexture
[Documentation has moved here](https://pmndrs.github.io/drei/portals/render-cube-texture)
#### Fisheye
[Documentation has moved here](https://pmndrs.github.io/drei/portals/fisheye)
#### Mask
[Documentation has moved here](https://pmndrs.github.io/drei/portals/mask)
#### MeshPortalMaterial
[Documentation has moved here](https://pmndrs.github.io/drei/portals/mesh-portal-material)
### Staging
#### Center
[Documentation has moved here](https://pmndrs.github.io/drei/staging/center)
#### Resize
[Documentation has moved here](https://pmndrs.github.io/drei/staging/resize)
#### BBAnchor
[Documentation has moved here](https://pmndrs.github.io/drei/staging/bb-anchor)
#### Bounds
[Documentation has moved here](https://pmndrs.github.io/drei/staging/bounds)
#### CameraShake
[Documentation has moved here](https://pmndrs.github.io/drei/staging/camera-shake)
#### Float
[Documentation has moved here](https://pmndrs.github.io/drei/staging/float)
#### Stage
[Documentation has moved here](https://pmndrs.github.io/drei/staging/stage)
#### Backdrop
[Documentation has moved here](https://pmndrs.github.io/drei/staging/backdrop)
#### Shadow
[Documentation has moved here](https://pmndrs.github.io/drei/staging/shadow)
#### Caustics
[Documentation has moved here](https://pmndrs.github.io/drei/staging/caustics)
#### ContactShadows
[Documentation has moved here](https://pmndrs.github.io/drei/staging/contact-shadows)
#### RandomizedLight
[Documentation has moved here](https://pmndrs.github.io/drei/staging/randomized-light)
#### AccumulativeShadows
[Documentation has moved here](https://pmndrs.github.io/drei/staging/accumulative-shadows)
#### SpotLight
[Documentation has moved here](https://pmndrs.github.io/drei/staging/spot-light)
#### SpotLightShadow
[Documentation has moved here](https://pmndrs.github.io/drei/staging/spot-light-shadow)
#### Environment
[Documentation has moved here](https://pmndrs.github.io/drei/staging/environment)
#### Lightformer
[Documentation has moved here](https://pmndrs.github.io/drei/staging/lightformer)
#### Sky
[Documentation has moved here](https://pmndrs.github.io/drei/staging/sky)
#### Stars
[Documentation has moved here](https://pmndrs.github.io/drei/staging/stars)
#### Sparkles
[Documentation has moved here](https://pmndrs.github.io/drei/staging/sparkles)
#### Cloud
[Documentation has moved here](https://pmndrs.github.io/drei/staging/cloud)
#### useEnvironment
[Documentation has moved here](https://pmndrs.github.io/drei/staging/use-environment)
#### MatcapTexture / useMatcapTexture
[Documentation has moved here](https://pmndrs.github.io/drei/staging/matcap-texture-use-matcap-texture)
#### NormalTexture / useNormalTexture
[Documentation has moved here](https://pmndrs.github.io/drei/staging/normal-texture-use-normal-texture)
#### ShadowAlpha
[Documentation has moved here](https://pmndrs.github.io/drei/staging/shadow-alpha)
Dev
INSTALL
$ corepack enable
$ yarn install
Test
Local
Pre-requisites:
To run visual tests locally:
$ yarn build
$ yarn test
To update a snapshot:
$ PLAYWRIGHT_UPDATE_SNAPSHOTS=1 yarn test
Docker
[!IMPORTANT]
Snapshots are system-dependent, so to run playwright in the same environment as the CI:
$ docker run --init --rm \
-v $(pwd):/app -w /app \
ghcr.io/pmndrs/playwright:drei \
sh -c "corepack enable && yarn install && yarn build && yarn test"
To update a snapshot:
$ docker run --init --rm \
-v $(pwd):/app -w /app \
-e PLAYWRIGHT_UPDATE_SNAPSHOTS=1 \
ghcr.io/pmndrs/playwright:drei \
sh -c "corepack enable && yarn install && yarn build && yarn test"