gitextract_vh50_xg3/ ├── .codesandbox/ │ └── ci.json ├── .devcontainer/ │ └── devcontainer.json ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── ---bug-report.md │ │ ├── ---feature-request.md │ │ └── --support-question.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ └── workflows/ │ ├── chromatic.yml │ ├── docs.yml │ └── release.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .storybook/ │ ├── Setup.tsx │ ├── favicon.ts │ ├── index.css │ ├── index.d.ts │ ├── main.ts │ ├── manager.ts │ ├── preview.tsx │ ├── public/ │ │ ├── LittlestTokyo.glb │ │ ├── archer.glb │ │ ├── cerberus.obj │ │ ├── cyclops.json │ │ ├── dflat.glb │ │ ├── draco-gltf/ │ │ │ ├── draco_decoder.js │ │ │ ├── draco_decoder.wasm │ │ │ └── draco_wasm_wrapper.js │ │ ├── fonts/ │ │ │ ├── Inter_Bold.json │ │ │ └── helvetiker_regular.typeface.json │ │ ├── gelatinous_cube.glb │ │ ├── sample_etc1s.ktx2 │ │ ├── sample_uastc_zstd.ktx2 │ │ ├── story.json │ │ ├── suzanne/ │ │ │ └── suzanne.fbx │ │ ├── suzanne-high-poly.gltf │ │ ├── suzanne.glb │ │ └── ybot.glb │ ├── stories/ │ │ ├── AccumulativeShadows.stories.tsx │ │ ├── Adaptive.stories.tsx │ │ ├── ArcballControls.stories.tsx │ │ ├── BBAnchor.stories.tsx │ │ ├── Billboard.stories.tsx │ │ ├── Bvh.stories.tsx │ │ ├── CameraControls.stories.tsx │ │ ├── CameraShake.stories.tsx │ │ ├── Center.stories.tsx │ │ ├── Cloud.stories.tsx │ │ ├── ContactShadows.stories.tsx │ │ ├── CubeCamera.stories.tsx │ │ ├── CubeTexture.stories.tsx │ │ ├── CurveModifier.stories.tsx │ │ ├── Decal.stories.tsx │ │ ├── Detailed.stories.tsx │ │ ├── DetectGPU.stories.tsx │ │ ├── DeviceOrientationControls.stories.tsx │ │ ├── DragControls.stories.tsx │ │ ├── Environment.stories.tsx │ │ ├── Example.stories.tsx │ │ ├── Extrude.stories.tsx │ │ ├── FaceControls.stories.tsx │ │ ├── Facemesh.stories.tsx │ │ ├── Fbo.stories.tsx │ │ ├── Fbx.stories.tsx │ │ ├── FirstPersonControls.stories.tsx │ │ ├── Float.stories.tsx │ │ ├── FlyControls.stories.tsx │ │ ├── GizmoHelper.stories.tsx │ │ ├── Gltf.stories.tsx │ │ ├── Grid.stories.tsx │ │ ├── HTML.stories.tsx │ │ ├── Helper.stories.tsx │ │ ├── Image.stories.tsx │ │ ├── Instances.stories.tsx │ │ ├── KeyboardControls.stories.tsx │ │ ├── Ktx2.stories.tsx │ │ ├── Lathe.stories.tsx │ │ ├── Line.stories.tsx │ │ ├── Loader.stories.tsx │ │ ├── MapControls.stories.tsx │ │ ├── MarchingCubes.stories.tsx │ │ ├── MatcapTexture.stories.tsx │ │ ├── Merged.stories.tsx │ │ ├── MeshDistortMaterial.stories.tsx │ │ ├── MeshRefractionMaterial.stories.tsx │ │ ├── MeshTransmissionMaterial.stories.tsx │ │ ├── MeshWobbleMaterial.stories.tsx │ │ ├── NormalTexture.stories.tsx │ │ ├── OrbitControls.stories.tsx │ │ ├── OrthographicCamera.stories.tsx │ │ ├── Outlines.stories.tsx │ │ ├── PerspectiveCamera.stories.tsx │ │ ├── PivotControls.stories.tsx │ │ ├── PointerLockControls.stories.tsx │ │ ├── Points.stories.tsx │ │ ├── PositionalAudio.stories.tsx │ │ ├── PresentationControls.stories.tsx │ │ ├── Progress.stories.tsx │ │ ├── Reflector.stories.tsx │ │ ├── Resize.stories.tsx │ │ ├── RoundedBox.stories.tsx │ │ ├── Sampler.stories.tsx │ │ ├── ScreenQuad.stories.tsx │ │ ├── ScreenSizer.stories.tsx │ │ ├── ScreenSpace.stories.tsx │ │ ├── ScreenVideoTexture.stories.tsx │ │ ├── ScrollControls.stories.tsx │ │ ├── Segments.stories.tsx │ │ ├── Shadow.stories.tsx │ │ ├── ShadowAlpha.stories.tsx │ │ ├── Shapes.Box.stories.tsx │ │ ├── Shapes.Circle.stories.tsx │ │ ├── Shapes.Cone.stories.tsx │ │ ├── Shapes.Cylinder.stories.tsx │ │ ├── Shapes.Dodecahedron.stories.tsx │ │ ├── Shapes.Icosahedron.stories.tsx │ │ ├── Shapes.Octahedron.stories.tsx │ │ ├── Shapes.Plane.stories.tsx │ │ ├── Shapes.Polyhedron.stories.tsx │ │ ├── Shapes.Ring.stories.tsx │ │ ├── Shapes.Sphere.stories.tsx │ │ ├── Shapes.Tetrahedron.stories.tsx │ │ ├── Shapes.Torus.stories.tsx │ │ ├── Shapes.TorusKnot.stories.tsx │ │ ├── Sky.stories.tsx │ │ ├── Sparkles.stories.tsx │ │ ├── Spotlight.stories.tsx │ │ ├── SpriteAnimator.stories.tsx │ │ ├── Stage.stories.tsx │ │ ├── Stars.stories.tsx │ │ ├── Stats.stories.tsx │ │ ├── StatsGl.stories.tsx │ │ ├── Svg.stories.tsx │ │ ├── Text.stories.tsx │ │ ├── Text3D.stories.tsx │ │ ├── Texture.stories.tsx │ │ ├── TrackballControls.stories.tsx │ │ ├── Trail.stories.tsx │ │ ├── TrailTexture.stories.tsx │ │ ├── TransformControls.stories.tsx │ │ ├── Tube.stories.tsx │ │ ├── VideoTexture.stories.tsx │ │ ├── WebcamVideoTexture.stories.tsx │ │ ├── Wireframe.stories.tsx │ │ ├── meshBounds.stories.tsx │ │ ├── shaderMaterial.stories.tsx │ │ ├── useAnimations.stories.tsx │ │ ├── useAspect.stories.tsx │ │ ├── useCamera.stories.tsx │ │ └── useContextBridge.stories.tsx │ ├── theme.ts │ └── useTurntable.ts ├── .yarnrc.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── chromatic.config.json ├── docs/ │ ├── abstractions/ │ │ ├── ascii-renderer.mdx │ │ ├── billboard.mdx │ │ ├── clone.mdx │ │ ├── computed-attribute.mdx │ │ ├── decal.mdx │ │ ├── edges.mdx │ │ ├── effects.mdx │ │ ├── gradient-texture.mdx │ │ ├── image.mdx │ │ ├── marching-cubes.mdx │ │ ├── outlines.mdx │ │ ├── positional-audio.mdx │ │ ├── sampler.mdx │ │ ├── screen-sizer.mdx │ │ ├── screen-space.mdx │ │ ├── splat.mdx │ │ ├── svg.mdx │ │ ├── text.mdx │ │ ├── text3d.mdx │ │ ├── trail.mdx │ │ └── use-animations.mdx │ ├── cameras/ │ │ ├── cube-camera.mdx │ │ ├── orthographic-camera.mdx │ │ └── perspective-camera.mdx │ ├── controls/ │ │ ├── camera-controls.mdx │ │ ├── face-controls.mdx │ │ ├── introduction.mdx │ │ ├── keyboard-controls.mdx │ │ ├── motion-path-controls.mdx │ │ ├── presentation-controls.mdx │ │ └── scroll-controls.mdx │ ├── getting-started/ │ │ └── introduction.mdx │ ├── gizmos/ │ │ ├── drag-controls.mdx │ │ ├── gizmo-helper.mdx │ │ ├── grid.mdx │ │ ├── helper-use-helper.mdx │ │ ├── pivot-controls.mdx │ │ └── transform-controls.mdx │ ├── loaders/ │ │ ├── cube-texture-use-cube-texture.mdx │ │ ├── fbx-use-fbx.mdx │ │ ├── gltf-use-gltf.mdx │ │ ├── ktx2-use-ktx2.mdx │ │ ├── loader.mdx │ │ ├── progress-use-progress.mdx │ │ ├── screen-video-texture.mdx │ │ ├── texture-use-texture.mdx │ │ ├── trail-texture-use-trail-texture.mdx │ │ ├── use-font.mdx │ │ ├── use-sprite-loader.mdx │ │ ├── video-texture-use-video-texture.mdx │ │ └── webcam-video-texture.mdx │ ├── misc/ │ │ ├── cube-camera-use-cube-camera.mdx │ │ ├── cycle-raycast.mdx │ │ ├── detect-gpu-use-detect-gpu.mdx │ │ ├── example.mdx │ │ ├── face-landmarker.mdx │ │ ├── fbo-use-fbo.mdx │ │ ├── html.mdx │ │ ├── select.mdx │ │ ├── sprite-animator.mdx │ │ ├── stats-gl.mdx │ │ ├── stats.mdx │ │ ├── trail-use-trail.mdx │ │ ├── use-aspect.mdx │ │ ├── use-box-projected-env.mdx │ │ ├── use-camera.mdx │ │ ├── use-context-bridge.mdx │ │ ├── use-cursor.mdx │ │ ├── use-depth-buffer.mdx │ │ ├── use-intersect.mdx │ │ ├── use-surface-sampler.mdx │ │ └── wireframe.mdx │ ├── modifiers/ │ │ └── curve-modifier.mdx │ ├── performances/ │ │ ├── adaptive-dpr.mdx │ │ ├── adaptive-events.mdx │ │ ├── bake-shadows.mdx │ │ ├── bvh.mdx │ │ ├── detailed.mdx │ │ ├── instances.mdx │ │ ├── merged.mdx │ │ ├── mesh-bounds.mdx │ │ ├── performance-monitor.mdx │ │ ├── points.mdx │ │ ├── preload.mdx │ │ └── segments.mdx │ ├── portals/ │ │ ├── fisheye.mdx │ │ ├── hud.mdx │ │ ├── mask.mdx │ │ ├── mesh-portal-material.mdx │ │ ├── render-cube-texture.mdx │ │ ├── render-texture.mdx │ │ └── view.mdx │ ├── shaders/ │ │ ├── mesh-discard-material.mdx │ │ ├── mesh-distort-material.mdx │ │ ├── mesh-reflector-material.mdx │ │ ├── mesh-refraction-material.mdx │ │ ├── mesh-transmission-material.mdx │ │ ├── mesh-wobble-material.mdx │ │ ├── point-material.mdx │ │ ├── shader-material.mdx │ │ └── soft-shadows.mdx │ ├── shapes/ │ │ ├── catmull-rom-line.mdx │ │ ├── cubic-bezier-line.mdx │ │ ├── facemesh.mdx │ │ ├── line.mdx │ │ ├── mesh.mdx │ │ ├── quadratic-bezier-line.mdx │ │ ├── rounded-box.mdx │ │ └── screen-quad.mdx │ └── staging/ │ ├── accumulative-shadows.mdx │ ├── backdrop.mdx │ ├── bb-anchor.mdx │ ├── bounds.mdx │ ├── camera-shake.mdx │ ├── caustics.mdx │ ├── center.mdx │ ├── cloud.mdx │ ├── contact-shadows.mdx │ ├── environment.mdx │ ├── float.mdx │ ├── lightformer.mdx │ ├── matcap-texture-use-matcap-texture.mdx │ ├── normal-texture-use-normal-texture.mdx │ ├── randomized-light.mdx │ ├── resize.mdx │ ├── shadow-alpha.mdx │ ├── shadow.mdx │ ├── sky.mdx │ ├── sparkles.mdx │ ├── spot-light-shadow.mdx │ ├── spot-light.mdx │ ├── stage.mdx │ ├── stars.mdx │ └── use-environment.mdx ├── eslint.config.mjs ├── package.json ├── release.config.js ├── rollup.config.js ├── sandboxes/ │ └── bug-report-template-starter/ │ ├── package.json │ ├── public/ │ │ └── index.html │ └── src/ │ ├── index.jsx │ └── styles.css ├── src/ │ ├── core/ │ │ ├── AccumulativeShadows.tsx │ │ ├── AdaptiveDpr.tsx │ │ ├── AdaptiveEvents.tsx │ │ ├── ArcballControls.tsx │ │ ├── AsciiRenderer.tsx │ │ ├── BBAnchor.tsx │ │ ├── Backdrop.tsx │ │ ├── BakeShadows.tsx │ │ ├── Billboard.tsx │ │ ├── Bounds.tsx │ │ ├── Bvh.tsx │ │ ├── CameraControls.tsx │ │ ├── CameraShake.tsx │ │ ├── CatmullRomLine.tsx │ │ ├── Caustics.tsx │ │ ├── Center.tsx │ │ ├── Clone.tsx │ │ ├── Cloud.tsx │ │ ├── ComputedAttribute.tsx │ │ ├── ContactShadows.tsx │ │ ├── CubeCamera.tsx │ │ ├── CubeTexture.tsx │ │ ├── CubicBezierLine.tsx │ │ ├── CurveModifier.tsx │ │ ├── Decal.tsx │ │ ├── Detailed.tsx │ │ ├── DetectGPU.tsx │ │ ├── DeviceOrientationControls.tsx │ │ ├── Edges.tsx │ │ ├── Effects.tsx │ │ ├── Environment.tsx │ │ ├── Example.tsx │ │ ├── Fbo.tsx │ │ ├── Fbx.tsx │ │ ├── FirstPersonControls.tsx │ │ ├── Fisheye.tsx │ │ ├── Float.tsx │ │ ├── FlyControls.tsx │ │ ├── GizmoHelper.tsx │ │ ├── GizmoViewcube.tsx │ │ ├── GizmoViewport.tsx │ │ ├── Gltf.tsx │ │ ├── GradientTexture.tsx │ │ ├── Grid.tsx │ │ ├── Helper.tsx │ │ ├── Hud.tsx │ │ ├── Image.tsx │ │ ├── Instances.tsx │ │ ├── Ktx2.tsx │ │ ├── Lightformer.tsx │ │ ├── Line.tsx │ │ ├── MapControls.tsx │ │ ├── MarchingCubes.tsx │ │ ├── Mask.tsx │ │ ├── MatcapTexture.tsx │ │ ├── MeshDiscardMaterial.tsx │ │ ├── MeshDistortMaterial.tsx │ │ ├── MeshPortalMaterial.tsx │ │ ├── MeshReflectorMaterial.tsx │ │ ├── MeshRefractionMaterial.tsx │ │ ├── MeshTransmissionMaterial.tsx │ │ ├── MeshWobbleMaterial.tsx │ │ ├── MotionPathControls.tsx │ │ ├── MultiMaterial.tsx │ │ ├── NormalTexture.tsx │ │ ├── OrbitControls.tsx │ │ ├── OrthographicCamera.tsx │ │ ├── Outlines.tsx │ │ ├── PerformanceMonitor.tsx │ │ ├── PerspectiveCamera.tsx │ │ ├── PointMaterial.tsx │ │ ├── PointerLockControls.tsx │ │ ├── Points.tsx │ │ ├── PositionalAudio.tsx │ │ ├── Preload.tsx │ │ ├── Progress.tsx │ │ ├── QuadraticBezierLine.tsx │ │ ├── RenderCubeTexture.tsx │ │ ├── RenderTexture.tsx │ │ ├── Resize.tsx │ │ ├── RoundedBox.tsx │ │ ├── Sampler.tsx │ │ ├── ScreenQuad.tsx │ │ ├── ScreenSizer.tsx │ │ ├── ScreenSpace.tsx │ │ ├── Segments.tsx │ │ ├── Shadow.tsx │ │ ├── ShadowAlpha.tsx │ │ ├── Sky.tsx │ │ ├── Sparkles.tsx │ │ ├── Splat.tsx │ │ ├── SpotLight.tsx │ │ ├── SpriteAnimator.tsx │ │ ├── Stage.tsx │ │ ├── Stars.tsx │ │ ├── Stats.tsx │ │ ├── StatsGl.tsx │ │ ├── Svg.tsx │ │ ├── Text.tsx │ │ ├── Text3D.tsx │ │ ├── Texture.tsx │ │ ├── TrackballControls.tsx │ │ ├── Trail.tsx │ │ ├── TrailTexture.tsx │ │ ├── TransformControls.tsx │ │ ├── VideoTexture.tsx │ │ ├── Wireframe.tsx │ │ ├── calculateScaleFactor.ts │ │ ├── index.ts │ │ ├── meshBounds.tsx │ │ ├── shaderMaterial.tsx │ │ ├── shapes.tsx │ │ ├── softShadows.tsx │ │ ├── useAnimations.tsx │ │ ├── useAspect.tsx │ │ ├── useBoxProjectedEnv.tsx │ │ ├── useCamera.tsx │ │ ├── useContextBridge.tsx │ │ ├── useDepthBuffer.ts │ │ ├── useEnvironment.tsx │ │ ├── useFont.tsx │ │ ├── useIntersect.tsx │ │ └── useSpriteLoader.tsx │ ├── helpers/ │ │ ├── constants.ts │ │ ├── deprecated.ts │ │ ├── environment-assets.ts │ │ ├── glsl/ │ │ │ ├── DefaultSpotlightShadowShadows.glsl │ │ │ ├── default.vert.glsl │ │ │ └── distort.vert.glsl │ │ ├── ts-utils.tsx │ │ └── useEffectfulState.tsx │ ├── index.ts │ ├── materials/ │ │ ├── BlurPass.tsx │ │ ├── ConvolutionMaterial.tsx │ │ ├── DiscardMaterial.tsx │ │ ├── MeshReflectorMaterial.tsx │ │ ├── MeshRefractionMaterial.tsx │ │ ├── SpotLightMaterial.tsx │ │ └── WireframeMaterial.tsx │ ├── native/ │ │ ├── index.ts │ │ └── package.json │ └── web/ │ ├── CycleRaycast.tsx │ ├── DragControls.tsx │ ├── FaceControls.tsx │ ├── FaceLandmarker.tsx │ ├── Facemesh.tsx │ ├── Html.tsx │ ├── KeyboardControls.tsx │ ├── Loader.tsx │ ├── PresentationControls.tsx │ ├── ScreenVideoTexture.tsx │ ├── ScrollControls.tsx │ ├── Select.tsx │ ├── View.tsx │ ├── WebcamVideoTexture.tsx │ ├── index.ts │ ├── pivotControls/ │ │ ├── AxisArrow.tsx │ │ ├── AxisRotator.tsx │ │ ├── PlaneSlider.tsx │ │ ├── ScalingSphere.tsx │ │ ├── context.ts │ │ └── index.tsx │ └── useCursor.tsx ├── test/ │ └── e2e/ │ ├── App.tsx │ ├── e2e.sh │ └── snapshot.test.ts ├── tsconfig.json └── vite.config.ts