{"_id":"glodrei","_rev":"1-569866731dda259be1a95a516f98f6ba","name":"glodrei","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"glodrei","version":"0.0.1","keywords":["react","three","threejs","react-three-fiber"],"license":"MIT","_id":"glodrei@0.0.1","maintainers":[{"name":"emrahyurttutan","email":"emrah@yurttutan.net"}],"homepage":"https://github.com/pmndrs/drei","bugs":{"url":"https://github.com/pmndrs/drei/issues"},"dist":{"shasum":"948a02b1b180bd6c8e564850e945312944c66209","tarball":"https://registry.npmjs.org/glodrei/-/glodrei-0.0.1.tgz","fileCount":476,"integrity":"sha512-DMx6ElCSwh1pR4IyDS3LvyFwZHSCCKCqdqo8P1G7klQtqH6PcOjleduCDsHehDtyYQ1E4dzVeoEzHIL1DIxjag==","signatures":[{"sig":"MEUCIQDl0gUQ04NKbeA+QWAg30OTiRoF7gQhiXBXa1R0x7KfKQIgRcM6siiDPAYspJimEO5BsYSK5cJiq/BTTHWgNFWvlLA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1807672},"main":"index.cjs.js","types":"index.d.ts","module":"index.js","gitHead":"503f4f7b9a715dfdd33b9d0a07e6f08b93894903","private":false,"_npmUser":{"name":"emrahyurttutan","email":"emrah@yurttutan.net"},"commitlint":{"rules":{"body-max-line-length":[0]},"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/pmndrs/drei.git","type":"git"},"_npmVersion":"9.8.1","description":"useful add-ons for react-three-fiber","directories":{},"sideEffects":false,"_nodeVersion":"18.18.2","dependencies":{"uuid":"^9.0.1","maath":"^0.10.7","zustand":"^3.7.1","meshline":"^3.1.6","stats-gl":"^2.0.0","stats.js":"^0.17.0","cross-env":"^7.0.3","detect-gpu":"^5.0.28","glsl-noise":"^0.0.0","tunnel-rat":"^0.1.2","three-stdlib":"^2.29.4","suspend-react":"^0.1.3","utility-types":"^3.10.0","@babel/runtime":"^7.11.2","react-composer":"^5.0.3","three-mesh-bvh":"^0.7.0","camera-controls":"^2.4.2","react-merge-refs":"^1.1.0","troika-three-text":"^0.47.2","@use-gesture/react":"^10.2.24","@react-spring/three":"~9.6.1","@mediapipe/tasks-vision":"0.10.8"},"react-native":"native/index.cjs.js","_hasShrinkwrap":false,"peerDependencies":{"react":">=18.0","three":">=0.137","react-dom":">=18.0","@react-three/fiber":">=8.0"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/glodrei_0.0.1_1707292390132_0.911243254161245","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"glodrei","version":"0.0.2","private":false,"description":"useful add-ons for react-three-fiber","keywords":["react","three","threejs","react-three-fiber"],"repository":{"type":"git","url":"git+https://github.com/pmndrs/drei.git"},"license":"MIT","bugs":{"url":"https://github.com/pmndrs/drei/issues"},"homepage":"https://github.com/pmndrs/drei","maintainers":[{"name":"emrahyurttutan","email":"emrah@yurttutan.net"}],"main":"index.cjs.js","module":"index.js","types":"index.d.ts","react-native":"native/index.cjs.js","sideEffects":false,"scripts":{"build":"rimraf dist && yarn typegen && rollup -c && yarn copy","prepare":"yarn build && husky","eslint":"eslint --fix .","eslint:ci":"eslint .","prettier":"prettier --check .","prettier-fix":"prettier --write .","test":"yarn eslint:ci && yarn typecheck && yarn prettier && (cd test/e2e; ./e2e.sh)","typecheck":"tsc --noEmit --emitDeclarationOnly false --strict --jsx react","typegen":"tsc --emitDeclarationOnly","storybook":"cross-env NODE_OPTIONS=\"--openssl-legacy-provider\" storybook dev -p 6006","build-storybook":"cross-env NODE_OPTIONS=\"--openssl-legacy-provider\" storybook build","copy":"copyfiles package.json README.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.husky=undefined; this.prettier=undefined; this.jest=undefined; this['lint-staged']=undefined;\"","release":"semantic-release"},"dependencies":{"@babel/runtime":"^7.26.0","@mediapipe/tasks-vision":"0.10.17","@monogrid/gainmap-js":"^3.0.6","@react-spring/three":"~9.7.5","@use-gesture/react":"^10.3.1","camera-controls":"^2.9.0","cross-env":"^7.0.3","detect-gpu":"^5.0.56","glsl-noise":"^0.0.0","hls.js":"^1.5.17","maath":"^0.10.8","meshline":"^3.3.1","react-composer":"^5.0.3","stats-gl":"^2.2.8","stats.js":"^0.17.0","suspend-react":"^0.1.3","three-mesh-bvh":"^0.7.8","three-stdlib":"^2.34.0","troika-three-text":"^0.52.0","tunnel-rat":"^0.1.2","utility-types":"^3.11.0","uuid":"^9.0.1","zustand":"^5.0.1"},"devDependencies":{"@babel/core":"^7.26.0","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-nullish-coalescing-operator":"^7.18.6","@babel/plugin-transform-modules-commonjs":"^7.25.9","@babel/plugin-transform-runtime":"^7.25.9","@babel/preset-env":"^7.26.0","@babel/preset-react":"^7.25.9","@babel/preset-typescript":"^7.26.0","@chromatic-com/storybook":"^3.2.2","@eslint/compat":"^1.2.3","@eslint/eslintrc":"^3.2.0","@eslint/js":"^9.15.0","@playwright/test":"^1.45.2","@react-three/fiber":"^8.0.8","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-commonjs":"^19.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^13.0.0","@storybook/addon-actions":"^8.4.4","@storybook/addon-controls":"^8.4.4","@storybook/addon-essentials":"^8.4.4","@storybook/manager-api":"^8.4.4","@storybook/preview-api":"^8.4.4","@storybook/react":"^8.4.4","@storybook/react-vite":"^8.4.4","@storybook/theming":"^8.4.4","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/three":"^0.151.0","@typescript-eslint/eslint-plugin":"^8.15.0","@typescript-eslint/parser":"^8.15.0","@vitejs/plugin-react":"^4.3.3","babel-eslint":"^10.1.0","babel-loader":"^9.2.1","copyfiles":"^2.4.1","eslint":"^9.15.0","eslint-config-prettier":"^9.1.0","eslint-plugin-react":"^7.37.2","eslint-plugin-react-hooks":"^5.0.0","eslint-plugin-storybook":"^0.11.0","husky":"^9.1.7","json":"^11.0.0","prettier":"^3.3.3","pretty-quick":"^4.0.0","react":"^18.0.0","react-dom":"^18.0.0","rimraf":"^6.0.1","rollup":"^2.79.2","rollup-plugin-glslify":"^1.3.0","rollup-plugin-multi-input":"^1.5.0","rollup-plugin-terser":"^7.0.2","semantic-release":"^24.2.0","serve":"^14.2.4","storybook":"^8.4.4","three":"^0.161.0","ts-node":"^10.9.2","typescript":"^5.6.3","vite":"^5.4.11","vite-plugin-glslify":"^2.1.0"},"peerDependencies":{"@react-three/fiber":"^8 || ^9.0.0-0","react":"^18","react-dom":"^18","three":">=0.137"},"peerDependenciesMeta":{"react-dom":{"optional":true}},"packageManager":"yarn@4.3.1","_id":"glodrei@0.0.2","gitHead":"78b013f8a2649867b8fb015e825ec760e4a9c170","_nodeVersion":"18.18.2","_npmVersion":"9.8.1","dist":{"integrity":"sha512-MhJR3MlIyl7KMNRUhjY5gPEIv4jgRgckv/2UVZIz4kDlZ74Dw2QIL+ei1hAwp8Kbd9iGJTE6YU34zemzW+O5kQ==","shasum":"64bbfa6082def43fb898b01748a8e357da5a2d4d","tarball":"https://registry.npmjs.org/glodrei/-/glodrei-0.0.2.tgz","fileCount":817,"unpackedSize":4227492,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBN/Nc32c3T8QEpDU3vHHhPAHM19zATrBfYPz28Fn3V5AiEA69RqipDkmTnAXK6ALt5kE8ioHMx/sRZP9NJOVG99M3o="}]},"_npmUser":{"name":"emrahyurttutan","email":"emrah@yurttutan.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/glodrei_0.0.2_1734346123163_0.1268708761541415"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-07T07:53:10.131Z","modified":"2024-12-16T10:48:43.541Z","0.0.1":"2024-02-07T07:53:10.335Z","0.0.2":"2024-12-16T10:48:43.371Z"},"bugs":{"url":"https://github.com/pmndrs/drei/issues"},"license":"MIT","homepage":"https://github.com/pmndrs/drei","keywords":["react","three","threejs","react-three-fiber"],"repository":{"type":"git","url":"git+https://github.com/pmndrs/drei.git"},"description":"useful add-ons for react-three-fiber","maintainers":[{"name":"emrahyurttutan","email":"emrah@yurttutan.net"}],"readme":"[![Storybook](https://img.shields.io/static/v1?message=Storybook&style=flat&colorA=000000&colorB=000000&label=&logo=storybook&logoColor=ffffff)](https://drei.pmnd.rs/)\n[![Version](https://img.shields.io/npm/v/@react-three/drei?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/@react-three/drei)\n[![Downloads](https://img.shields.io/npm/dt/@react-three/drei.svg?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/@react-three/drei)\n[![Discord Shield](https://img.shields.io/discord/740090768164651008?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=ffffff)](https://discord.com/channels/740090768164651008/741751532592038022)\n[![Open in GitHub Codespaces](https://img.shields.io/static/v1?&message=Open%20in%20%20Codespaces&style=flat&colorA=000000&colorB=000000&label=GitHub&logo=github&logoColor=ffffff)](https://github.com/codespaces/new?template_repository=pmndrs%2Fdrei)\n\n[![logo](docs/logo.jpg)](https://codesandbox.io/s/bfplr)\n\nA growing collection of useful helpers and fully functional, ready-made abstractions for [@react-three/fiber](https://github.com/pmndrs/react-three-fiber).\n\nIf you make a component that is generic enough to be useful to others, think about [CONTRIBUTING](CONTRIBUTING.md)!\n\n```bash\nnpm install @react-three/drei\n```\n\n> [!IMPORTANT]\n> this package is using the stand-alone [`three-stdlib`](https://github.com/pmndrs/three-stdlib) instead of [`three/examples/jsm`](https://github.com/mrdoob/three.js/tree/master/examples/jsm).\n\n## Basic usage\n\n```jsx\nimport { PerspectiveCamera, PositionalAudio, ... } from '@react-three/drei'\n```\n\n## React-native\n\n```jsx\nimport { PerspectiveCamera, PositionalAudio, ... } from '@react-three/drei/native'\n```\n\nThe `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`.\n\n## Documentation\n\nhttps://pmndrs.github.io/drei\n\n<details>\n  <summary>Old doc</summary>\n\n> [!WARNING]\n> Below is an archive of the anchors links with their new respective locations to the documentation website.\n> Do not update the links below, they are for reference only.\n\n<!-- <table>\n  <tr>\n    <td valign=\"top\">\n      <ul>\n        <li><a href=\"#cameras\">Cameras</a></li>\n        <ul>\n          <li><a href=\"#perspectivecamera\">PerspectiveCamera</a></li>\n          <li><a href=\"#orthographiccamera\">OrthographicCamera</a></li>\n          <li><a href=\"#cubecamera\">CubeCamera</a></li>\n        </ul>\n        <li><a href=\"#controls\">Controls</a></li>\n        <ul>\n          <li><a href=\"#cameracontrols\">CameraControls</a></li>\n          <li><a href=\"#controls\">FlyControls</a></li>\n          <li><a href=\"#controls\">MapControls</a></li>\n          <li><a href=\"#controls\">DeviceOrientationControls</a></li>\n          <li><a href=\"#controls\">TrackballControls</a></li>\n          <li><a href=\"#controls\">ArcballControls</a></li>\n          <li><a href=\"#controls\">PointerLockControls</a></li>\n          <li><a href=\"#controls\">FirstPersonControls</a></li>\n          <li><a href=\"#scrollcontrols\">ScrollControls</a></li>\n          <li><a href=\"#presentationcontrols\">PresentationControls</a></li>\n          <li><a href=\"#keyboardcontrols\">KeyboardControls</a></li>\n          <li><a href=\"#FaceControls\">FaceControls</a></li>\n          <li><a href=\"#motionpathcontrols\">MotionPathControls</a></li>\n        </ul>\n        <li><a href=\"#gizmos\">Gizmos</a></li>\n        <ul>\n          <li><a href=\"#gizmohelper\">GizmoHelper</a></li>\n          <li><a href=\"#pivotcontrols\">PivotControls</a></li>\n          <li><a href=\"#dragcontrols\">DragControls</a></li>\n          <li><a href=\"#transformcontrols\">TransformControls</a></li>\n          <li><a href=\"#grid\">Grid</a></li>\n          <li><a href=\"#helper--usehelper\">Helper / useHelper</a></li>\n          <li><a href=\"#helper\">Helper</a></li>\n        </ul>\n        <li><a href=\"#abstractions\">Abstractions</a></li>\n        <ul>\n          <li><a href=\"#image\">Image</a></li>\n          <li><a href=\"#text\">Text</a></li>\n          <li><a href=\"#text3d\">Text3D</a></li>\n          <li><a href=\"#positionalaudio\">PositionalAudio</a></li>\n          <li><a href=\"#billboard\">Billboard</a></li>\n          <li><a href=\"#screenspace\">ScreenSpace</a></li>\n          <li><a href=\"#screensizer\">ScreenSizer</a></li>\n          <li><a href=\"#effects\">Effects</a></li>\n          <li><a href=\"#gradienttexture\">GradientTexture</a></li>\n          <li><a href=\"#edges\">Edges</a></li>\n          <li><a href=\"#outlines\">Outlines</a></li>\n          <li><a href=\"#trail\">Trail</a></li>\n          <li><a href=\"#sampler\">Sampler</a></li>\n          <li><a href=\"#computedattribute\">ComputedAttribute</a></li>\n          <li><a href=\"#clone\">Clone</a></li>\n          <li><a href=\"#useanimations\">useAnimations</a></li>\n          <li><a href=\"#marchingcubes\">MarchingCubes</a></li>\n          <li><a href=\"#decal\">Decal</a></li>\n          <li><a href=\"#svg\">Svg</a></li>\n          <li><a href=\"#gltf\">Gltf</a></li>\n          <li><a href=\"#asciirenderer\">AsciiRenderer</a></li>\n          <li><a href=\"#splat\">Splat</a></li>\n        </ul>\n        <li><a href=\"#shaders\">Shaders</a></li>\n        <ul>\n          <li><a href=\"#meshreflectormaterial\">MeshReflectorMaterial</a></li>\n          <li><a href=\"#meshwobblematerial\">MeshWobbleMaterial</a></li>\n          <li><a href=\"#meshdistortmaterial\">MeshDistortMaterial</a></li>\n          <li><a href=\"#meshrefractionmaterial\">MeshRefractionMaterial</a></li>\n          <li><a href=\"#meshtransmissionmaterial\">MeshTransmissionMaterial</a></li>\n          <li><a href=\"#meshdiscardmaterial\">MeshDiscardMaterial</a></li>\n          <li><a href=\"#pointmaterial\">PointMaterial</a></li>\n          <li><a href=\"#softshadows\">SoftShadows</a></li>\n          <li><a href=\"#shadermaterial\">shaderMaterial</a></li>\n        </ul>\n      </ul>\n    </td>\n    <td valign=\"top\">\n      <ul>\n        <li><a href=\"#misc\">Misc</a></li>\n        <ul>\n          <li><a href=\"#example\">Example</a></li>\n          <li><a href=\"#html\">Html</a></li>\n          <li><a href=\"#cycleraycast\">CycleRaycast</a></li>\n          <li><a href=\"#select\">Select</a></li>\n          <li><a href=\"#sprite-animator\">Sprite Animator</a></li>\n          <li><a href=\"#stats\">Stats</a></li>\n          <li><a href=\"#stats-gl\">StatsGl</a></li>\n          <li><a href=\"#wireframe\">Wireframe</a></li>\n          <li><a href=\"#usedepthbuffer\">useDepthBuffer</a></li>\n          <li><a href=\"#usecontextbridge\">useContextBridge</a></li>\n          <li><a href=\"#fbo--usefbo\">Fbo / useFBO</a></li>\n          <li><a href=\"#usecamera\">useCamera</a></li>\n          <li><a href=\"#cubecamera--usecubecamera\">CubeCamera / useCubeCamera</a></li>\n          <li><a href=\"#detectgpu--usedetectgpu\">DetectGPU / useDetectGPU</a></li>\n          <li><a href=\"#useaspect\">useAspect</a></li>\n          <li><a href=\"#usecursor\">useCursor</a></li>\n          <li><a href=\"#useintersect\">useIntersect</a></li>\n          <li><a href=\"#useboxprojectedenv\">useBoxProjectedEnv</a></li>\n          <li><a href=\"#trail--useTrail\">Trail / useTrail</a></li>\n          <li><a href=\"#useSurfaceSampler\">useSurfaceSampler</a></li>\n          <li><a href=\"#facelandmarker\">FaceLandmarker</a></li>\n        </ul>\n        <li><a href=\"#loading\">Loaders</a></li>\n        <ul>\n          <li><a href=\"#loader\">Loader</a></li>\n          <li><a href=\"#progress--useprogress\">Progress / useProgress</a></li>\n          <li><a href=\"#gltf--usegltf\">Gltf / useGLTF</a></li>\n          <li><a href=\"#fbx--usefbx\">FBX / useFBX</a></li>\n          <li><a href=\"#texture--usetexture\">Texture / useTexture</a></li>\n          <li><a href=\"#ktx2--usektx2\">Ktx2 / useKTX2</a></li>\n          <li><a href=\"#cubetexture--usecubetexture\">CubeTexture / useCubeTexture</a></li>\n          <li><a href=\"#videotexture--usevideotexture\">VideoTexture / useVideoTexture</a></li>\n          <li><a href=\"#trailtexture--usetrailtexture\">TrailTexture / useTrailTexture</a></li>\n          <li><a href=\"#usefont\">useFont</a></li>\n          <li><a href=\"#usespriteloader\">useSpriteLoader</a></li>\n        </ul>\n        <li><a href=\"#performance\">Performance</a></li>\n        <ul>\n          <li><a href=\"#instances\">Instances</a></li>\n          <li><a href=\"#merged\">Merged</a></li>\n          <li><a href=\"#points\">Points</a></li>\n          <li><a href=\"#segments\">Segments</a></li>\n          <li><a href=\"#detailed\">Detailed</a></li>\n          <li><a href=\"#preload\">Preload</a></li>\n          <li><a href=\"#bakeshadows\">BakeShadows</a></li>\n          <li><a href=\"#meshbounds\">meshBounds</a></li>\n          <li><a href=\"#adaptivedpr\">AdaptiveDpr</a></li>\n          <li><a href=\"#adaptiveevents\">AdaptiveEvents</a></li>\n          <li><a href=\"#bvh\">Bvh</a></li>\n          <li><a href=\"#performancemonitor\">PerformanceMonitor</a></li>\n        </ul>\n        <li><a href=\"#portals\">Portals</a></li>\n        <ul>\n          <li><a href=\"#hud\">Hud</a></li>\n          <li><a href=\"#view\">View</a></li>\n          <li><a href=\"#rendertexture\">RenderTexture</a></li>\n          <li><a href=\"#rendercubetexture\">RenderCubeTexture</a></li>\n          <li><a href=\"#fisheye\">Fisheye</a></li>\n          <li><a href=\"#mask\">Mask</a></li>\n          <li><a href=\"#meshportalmaterial\">MeshPortalMaterial</a></li>\n        </ul>\n        <li><a href=\"#modifiers\">Modifiers</a></li>\n        <ul>\n          <li><a href=\"#curvemodifier\">CurveModifier</a></li>\n        </ul>\n      </ul>\n    </td>\n    <td valign=\"top\">\n      <ul>\n        <li><a href=\"#shapes\">Shapes</a></li>\n        <ul>\n          <li><a href=\"#shapes\">Plane</a></li>\n          <li><a href=\"#shapes\">Box</a></li>\n          <li><a href=\"#shapes\">Sphere</a></li>\n          <li><a href=\"#shapes\">Circle</a></li>\n          <li><a href=\"#shapes\">Cone</a></li>\n          <li><a href=\"#shapes\">Cylinder</a></li>\n          <li><a href=\"#shapes\">Tube</a></li>\n          <li><a href=\"#shapes\">Torus</a></li>\n          <li><a href=\"#shapes\">TorusKnot</a></li>\n          <li><a href=\"#shapes\">Ring</a></li>\n          <li><a href=\"#shapes\">Tetrahedron</a></li>\n          <li><a href=\"#shapes\">Polyhedron</a></li>\n          <li><a href=\"#shapes\">Icosahedron</a></li>\n          <li><a href=\"#shapes\">Octahedron</a></li>\n          <li><a href=\"#shapes\">Dodecahedron</a></li>\n          <li><a href=\"#shapes\">Extrude</a></li>\n          <li><a href=\"#shapes\">Lathe</a></li>\n          <li><a href=\"#shapes\">Shape</a></li>\n          <li><a href=\"#roundedbox\">RoundedBox</a></li>\n          <li><a href=\"#screenquad\">Screenquad</a></li>\n          <li><a href=\"#line\">Line</a></li>\n          <li><a href=\"#quadraticbezierline\">QuadraticBezierLine</a></li>\n          <li><a href=\"#cubicbezierline\">CubicBezierLine</a></li>\n          <li><a href=\"#catmullromline\">CatmullRomLine</a></li>\n          <li><a href=\"#facemesh\">Facemesh</a></li>\n        </ul>\n        <li><a href=\"#staging\">Staging</a></li>\n        <ul>\n          <li><a href=\"#center\">Center</a></li>\n          <li><a href=\"#resize\">Resize</a></li>\n          <li><a href=\"#BBAnchor\">BBAnchor</a></li>\n          <li><a href=\"#bounds\">Bounds</a></li>\n          <li><a href=\"#camerashake\">CameraShake</a></li>\n          <li><a href=\"#float\">Float</a></li>\n          <li><a href=\"#stage\">Stage</a></li>\n          <li><a href=\"#backdrop\">Backdrop</a></li>\n          <li><a href=\"#environment\">Environment</a></li>\n          <li><a href=\"#lightformer\">Lightformer</a></li>\n          <li><a href=\"#spotlight\">SpotLight</a></li>\n          <li><a href=\"#spotlightshadow\">SpotLightShadow</a></li>\n          <li><a href=\"#shadow\">Shadow</a></li>\n          <li><a href=\"#caustics\">Caustics</a></li>\n          <li><a href=\"#contactshadows\">ContactShadows</a></li>\n          <li><a href=\"#randomizedlight\">RandomizedLight</a></li>\n          <li><a href=\"#accumulativeshadows\">AccumulativeShadows</a></li>\n          <li><a href=\"#sky\">Sky</a></li>\n          <li><a href=\"#stars\">Stars</a></li>\n          <li><a href=\"#sparkles\">Sparkles</a></li>\n          <li><a href=\"#cloud\">Cloud</a></li>\n          <li><a href=\"#useenvironment\">useEnvironment</a></li>\n          <li><a href=\"#matcaptexture--usematcaptexture\">MatcapTexture / useMatcapTexture</a></li>\n          <li><a href=\"#normaltexture--usenormaltexture\">NormalTexture / useNormalTexture</a></li>\n          <li><a href=\"#shadowalpha\">ShadowAlpha</a></li>\n        </ul>\n      </ul>\n    </td>\n  </tr>\n</table> -->\n\n### Cameras\n\n#### PerspectiveCamera\n\n[Documentation has moved here](https://pmndrs.github.io/drei/cameras/perspective-camera)\n\n#### OrthographicCamera\n\n[Documentation has moved here](https://pmndrs.github.io/drei/cameras/orthographic-camera)\n\n#### CubeCamera\n\n[Documentation has moved here](https://pmndrs.github.io/drei/cameras/cube-camera)\n\n### Controls\n\n#### CameraControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/camera-controls)\n\n#### ScrollControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/scroll-controls)\n\n#### PresentationControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/presentation-controls)\n\n#### KeyboardControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/keyboard-controls)\n\n#### FaceControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/face-controls)\n\n#### MotionPathControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/controls/motion-path-controls)\n\n### Gizmos\n\n#### GizmoHelper\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/gizmo-helper)\n\n#### PivotControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/pivot-controls)\n\n#### DragControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/drag-controls)\n\n#### TransformControls\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/transform-controls)\n\n#### Grid\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/grid)\n\n#### Helper / useHelper\n\n[Documentation has moved here](https://pmndrs.github.io/drei/gizmos/helper-use-helper)\n\n### Shapes\n\n#### Plane, Box, Sphere, Circle, Cone, Cylinder, Tube, Torus, TorusKnot, Ring, Tetrahedron, Polyhedron, Icosahedron, Octahedron, Dodecahedron, Extrude, Lathe, Shape\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/mesh)\n\n#### RoundedBox\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/rounded-box)\n\n#### ScreenQuad\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/screen-quad)\n\n#### Line\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/line)\n\n#### QuadraticBezierLine\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/quadratic-bezier-line)\n\n#### CubicBezierLine\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/cubic-bezier-line)\n\n#### CatmullRomLine\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/catmull-rom-line)\n\n#### Facemesh\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shapes/facemesh)\n\n### Abstractions\n\n#### Image\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/image)\n\n#### Text\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/text)\n\n#### Text3D\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/text3d)\n\n#### Effects\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/effects)\n\n#### PositionalAudio\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/positional-audio)\n\n#### Billboard\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/billboard)\n\n#### ScreenSpace\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/screen-space)\n\n#### ScreenSizer\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/screen-sizer)\n\n#### GradientTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/gradient-texture)\n\n#### Edges\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/edges)\n\n#### Outlines\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/outlines)\n\n#### Trail\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/trail)\n\n#### Sampler\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/sampler)\n\n#### ComputedAttribute\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/computed-attribute)\n\n#### Clone\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/clone)\n\n#### useAnimations\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/use-animations)\n\n#### MarchingCubes\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/marching-cubes)\n\n#### Decal\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/decal)\n\n#### Svg\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/svg)\n\n#### AsciiRenderer\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/ascii-renderer)\n\n#### Splat\n\n[Documentation has moved here](https://pmndrs.github.io/drei/abstractions/splat)\n\n### Shaders\n\n#### MeshReflectorMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-reflector-material)\n\n#### MeshWobbleMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-wobble-material)\n\n#### MeshDistortMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-distort-material)\n\n#### MeshRefractionMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-refraction-material)\n\n#### MeshTransmissionMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-transmission-material)\n\n#### MeshDiscardMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/mesh-discard-material)\n\n#### PointMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/point-material)\n\n#### SoftShadows\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/soft-shadows)\n\n#### shaderMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/shaders/shader-material)\n\n### Modifiers\n\n#### CurveModifier\n\n[Documentation has moved here](https://pmndrs.github.io/drei/modifiers/curve-modifier)\n\n### Misc\n\n#### useContextBridge\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-context-bridge)\n\n#### Example\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/example)\n\n#### Html\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/html)\n\n#### CycleRaycast\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/cycle-raycast)\n\n#### Select\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/select)\n\n#### Sprite Animator\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/sprite-animator)\n\n#### Stats\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/stats)\n\n#### StatsGl\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/stats-gl)\n\n#### Wireframe\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/wireframe)\n\n#### useDepthBuffer\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-depth-buffer)\n\n#### Fbo / useFBO\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/fbo-use-fbo)\n\n#### useCamera\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-camera)\n\n#### CubeCamera / useCubeCamera\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/cube-camera-use-cube-camera)\n\n#### DetectGPU / useDetectGPU\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/detect-gpu-use-detect-gpu)\n\n#### useAspect\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-aspect)\n\n#### useCursor\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-cursor)\n\n#### useIntersect\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-intersect)\n\n#### useBoxProjectedEnv\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-box-projected-env)\n\n#### Trail / useTrail\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/trail-use-trail)\n\n#### useSurfaceSampler\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/use-surface-sampler)\n\n#### FaceLandmarker\n\n[Documentation has moved here](https://pmndrs.github.io/drei/misc/face-landmarker)\n\n### Loading\n\n#### Loader\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/loader)\n\n#### Progress / useProgress\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/progress-use-progress)\n\n#### Gltf / useGLTF\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/gltf-use-gltf)\n\n#### Fbx / useFBX\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/fbx-use-fbx)\n\n#### Texture / useTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/texture-use-texture)\n\n#### Ktx2 / useKTX2\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/ktx2-use-ktx2)\n\n#### CubeTexture / useCubeTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/cube-texture-use-cube-texture)\n\n#### VideoTexture / useVideoTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/video-texture-use-video-texture)\n\n#### TrailTexture / useTrailTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/trail-texture-use-trail-texture)\n\n#### useFont\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/use-font)\n\n#### useSpriteLoader\n\n[Documentation has moved here](https://pmndrs.github.io/drei/loaders/use-sprite-loader)\n\n### Performance\n\n#### Instances\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/instances)\n\n#### Merged\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/merged)\n\n#### Points\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/points)\n\n#### Segments\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/segments)\n\n#### Detailed\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/detailed)\n\n#### Preload\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/preload)\n\n#### BakeShadows\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/bake-shadows)\n\n#### meshBounds\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/mesh-bounds)\n\n#### AdaptiveDpr\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/adaptive-dpr)\n\n#### AdaptiveEvents\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/adaptive-events)\n\n#### Bvh\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/bvh)\n\n#### PerformanceMonitor\n\n[Documentation has moved here](https://pmndrs.github.io/drei/performances/performance-monitor)\n\n### Portals\n\n#### Hud\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/hud)\n\n#### View\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/view)\n\n#### RenderTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/render-texture)\n\n#### RenderCubeTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/render-cube-texture)\n\n#### Fisheye\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/fisheye)\n\n#### Mask\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/mask)\n\n#### MeshPortalMaterial\n\n[Documentation has moved here](https://pmndrs.github.io/drei/portals/mesh-portal-material)\n\n### Staging\n\n#### Center\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/center)\n\n#### Resize\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/resize)\n\n#### BBAnchor\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/bb-anchor)\n\n#### Bounds\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/bounds)\n\n#### CameraShake\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/camera-shake)\n\n#### Float\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/float)\n\n#### Stage\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/stage)\n\n#### Backdrop\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/backdrop)\n\n#### Shadow\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/shadow)\n\n#### Caustics\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/caustics)\n\n#### ContactShadows\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/contact-shadows)\n\n#### RandomizedLight\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/randomized-light)\n\n#### AccumulativeShadows\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/accumulative-shadows)\n\n#### SpotLight\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/spot-light)\n\n#### SpotLightShadow\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/spot-light-shadow)\n\n#### Environment\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/environment)\n\n#### Lightformer\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/lightformer)\n\n#### Sky\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/sky)\n\n#### Stars\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/stars)\n\n#### Sparkles\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/sparkles)\n\n#### Cloud\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/cloud)\n\n#### useEnvironment\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/use-environment)\n\n#### MatcapTexture / useMatcapTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/matcap-texture-use-matcap-texture)\n\n#### NormalTexture / useNormalTexture\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/normal-texture-use-normal-texture)\n\n#### ShadowAlpha\n\n[Documentation has moved here](https://pmndrs.github.io/drei/staging/shadow-alpha)\n\n</details>\n\n## Dev\n\n### INSTALL\n\n```sh\n$ corepack enable\n$ yarn install\n```\n\n### Test\n\n#### Local\n\nPre-requisites:\n\n- ```sh\n  $ npx playwright install\n  ```\n\nTo run visual tests locally:\n\n```sh\n$ yarn build\n$ yarn test\n```\n\nTo update a snapshot:\n\n```sh\n$ PLAYWRIGHT_UPDATE_SNAPSHOTS=1 yarn test\n```\n\n#### Docker\n\n> [!IMPORTANT]\n> Snapshots are system-dependent, so to run playwright in the same environment as the CI:\n\n```sh\n$ docker run --init --rm \\\n    -v $(pwd):/app -w /app \\\n    ghcr.io/pmndrs/playwright:drei \\\n      sh -c \"corepack enable && yarn install && yarn build && yarn test\"\n```\n\nTo update a snapshot:\n\n```sh\n$ docker run --init --rm \\\n    -v $(pwd):/app -w /app \\\n    -e PLAYWRIGHT_UPDATE_SNAPSHOTS=1 \\\n    ghcr.io/pmndrs/playwright:drei \\\n      sh -c \"corepack enable && yarn install && yarn build && yarn test\"\n```\n","readmeFilename":"README.md"}