gitextract_1bymcgrw/ ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug.report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── lint-pr.yml │ ├── lint.yml │ └── pkg.pr.new.yml ├── .gitignore ├── .npmrc ├── .release-it.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── core.d.ts ├── docs/ │ ├── .eslintrc.json │ ├── .vitepress/ │ │ ├── config.ts │ │ └── theme/ │ │ ├── TresLayout.vue │ │ ├── assets/ │ │ │ └── feather.glb │ │ ├── components/ │ │ │ ├── AccumulativeShadowsDemo.vue │ │ │ ├── AlignDemo.vue │ │ │ ├── AnimatedSpriteCenterDemo.vue │ │ │ ├── AnimatedSpriteDefinitionsDemo.vue │ │ │ ├── AnimatedSpriteDemo.vue │ │ │ ├── AnimatedSpriteNamedAnimationDemo.vue │ │ │ ├── BackdropDemo.vue │ │ │ ├── BakeShadowsDemo.vue │ │ │ ├── BillboardDemo.vue │ │ │ ├── BoundsDemo.vue │ │ │ ├── CameraControlsDemo.vue │ │ │ ├── CatmullRomCurve3Demo.vue │ │ │ ├── CientosComponentListGridView/ │ │ │ │ └── index.vue │ │ │ ├── CircleShadowDemo.vue │ │ │ ├── ContactShadowsDemo.vue │ │ │ ├── CubeCameraDemo.vue │ │ │ ├── CubicBezierLineDemo.vue │ │ │ ├── CustomShaderMaterialDemo.vue │ │ │ ├── DocsDemo.vue │ │ │ ├── EdgesDemo.vue │ │ │ ├── EnvironmentDemo.vue │ │ │ ├── EnvironmentPresetsDemo.vue │ │ │ ├── FBXModelDemo.vue │ │ │ ├── FboCube.vue │ │ │ ├── FboDemo.vue │ │ │ ├── Feather.vue │ │ │ ├── FitDemo.vue │ │ │ ├── GLTFModelDemo.vue │ │ │ ├── GlassMaterialDemo.vue │ │ │ ├── GradientTextureDemo.vue │ │ │ ├── GridDemo.vue │ │ │ ├── HelperDemo.vue │ │ │ ├── HolographicMaterialDemo.vue │ │ │ ├── HtmlDemo.vue │ │ │ ├── HtmlLaptopDemo.vue │ │ │ ├── HtmlOccludeDemo.vue │ │ │ ├── ImageDemo.vue │ │ │ ├── KeyboardControlsDemo.vue │ │ │ ├── LODDemo.vue │ │ │ ├── LensflareDemo.vue │ │ │ ├── LeviosoDemo.vue │ │ │ ├── Line2Demo.vue │ │ │ ├── LoveVueThreeJS.vue │ │ │ ├── MapControlsDemo.vue │ │ │ ├── MarchingCubesDemo.vue │ │ │ ├── MaskDemo.vue │ │ │ ├── MeshReflectionMaterialDemo.vue │ │ │ ├── MouseParallaxDemo.vue │ │ │ ├── OceanDemo.vue │ │ │ ├── OrbitControlsDemo.vue │ │ │ ├── OutlineDemo.vue │ │ │ ├── PBRTexturesDemo.vue │ │ │ ├── PointMaterialDemo.vue │ │ │ ├── PositionalAudioDemo.vue │ │ │ ├── PrecipitationBeamDemo.vue │ │ │ ├── PrecipitationDemo.vue │ │ │ ├── PrecipitationRainDemo.vue │ │ │ ├── PrecipitationStormDemo.vue │ │ │ ├── QuadraticBezierLineDemo.vue │ │ │ ├── ReflectorDemo.vue │ │ │ ├── RoundedBoxDemo.vue │ │ │ ├── SVGDemo.vue │ │ │ ├── SamplerDemo.vue │ │ │ ├── ScreenQuadDemo.vue │ │ │ ├── ScreenSizerDemo.vue │ │ │ ├── ScreenSpaceDemo.vue │ │ │ ├── ScrollControlsDemo.vue │ │ │ ├── ScrollControlsHorizontalDemo.vue │ │ │ ├── ScrollControlsPagesDemo.vue │ │ │ ├── ScrollControlsProgressCameraDemo.vue │ │ │ ├── ScrollControlsProgressDemo.vue │ │ │ ├── ScrollControlsSlotsDemo.vue │ │ │ ├── SkyDemo.vue │ │ │ ├── SmokeDemo.vue │ │ │ ├── SoftShadowsDemo.vue │ │ │ ├── SparklesDemo.vue │ │ │ ├── SparklesDirectionalLightDemo.vue │ │ │ ├── SparklesMixDemo.vue │ │ │ ├── SparklesSequenceDemo.vue │ │ │ ├── StageDemo.vue │ │ │ ├── StarsDemo.vue │ │ │ ├── SuperformulaDemo.vue │ │ │ ├── SuperformulaLechesDemo.vue │ │ │ ├── Text3Demo.vue │ │ │ ├── TransformControlsDemo.vue │ │ │ ├── UseFBODemo.vue │ │ │ ├── UseFBXDemo.vue │ │ │ ├── UseGLTFDemo.vue │ │ │ ├── UseSurfaceSamplerDemo.vue │ │ │ ├── UseTextureDemo.vue │ │ │ ├── VideoTextureDemo.vue │ │ │ └── WobbleMaterialDemo.vue │ │ ├── index.ts │ │ └── style.css │ ├── api-examples.md │ ├── component-list/ │ │ ├── components.ts │ │ └── index.md │ ├── guide/ │ │ ├── abstractions/ │ │ │ ├── animated-sprite.md │ │ │ ├── billboard.md │ │ │ ├── cube-camera.md │ │ │ ├── edges.md │ │ │ ├── fbo.md │ │ │ ├── global-audio.md │ │ │ ├── gradient-texture.md │ │ │ ├── image.md │ │ │ ├── lensflare.md │ │ │ ├── levioso.md │ │ │ ├── marching-cubes.md │ │ │ ├── mask.md │ │ │ ├── mouse-parallax.md │ │ │ ├── outline.md │ │ │ ├── positional-audio.md │ │ │ ├── reflector.md │ │ │ ├── sampler.md │ │ │ ├── screen-sizer.md │ │ │ ├── screen-space.md │ │ │ ├── text-3d.md │ │ │ ├── use-animations.md │ │ │ ├── use-fbo.md │ │ │ └── use-surface-sampler.md │ │ ├── controls/ │ │ │ ├── camera-controls.md │ │ │ ├── helper.md │ │ │ ├── keyboard-controls.md │ │ │ ├── map-controls.md │ │ │ ├── orbit-controls.md │ │ │ ├── pointer-lock-controls.md │ │ │ ├── scroll-controls.md │ │ │ └── transform-controls.md │ │ ├── index.md │ │ ├── loaders/ │ │ │ ├── fbx-model.md │ │ │ ├── gltf-model.md │ │ │ ├── use-fbx.md │ │ │ ├── use-gltf.md │ │ │ ├── use-progress.md │ │ │ ├── use-svg.md │ │ │ ├── use-texture.md │ │ │ ├── use-textures.md │ │ │ └── use-video-texture.md │ │ ├── materials/ │ │ │ ├── custom-shader-material.md │ │ │ ├── glass-material.md │ │ │ ├── holographic-material.md │ │ │ ├── mesh-discard-material.md │ │ │ ├── mesh-reflection-material.md │ │ │ ├── point-material.md │ │ │ └── wobble-material.md │ │ ├── migrating-from-v3.md │ │ ├── misc/ │ │ │ ├── bake-shadows.md │ │ │ ├── html-component.md │ │ │ ├── lod.md │ │ │ ├── stats-gl.md │ │ │ ├── stats.md │ │ │ ├── use-gltf-exporter.md │ │ │ └── use-intersect.md │ │ ├── shapes/ │ │ │ ├── box.md │ │ │ ├── catmullromcurve3.md │ │ │ ├── circle.md │ │ │ ├── cone.md │ │ │ ├── cubic-bezier-line.md │ │ │ ├── cylinder.md │ │ │ ├── dodecahedron.md │ │ │ ├── icosahedron.md │ │ │ ├── line2.md │ │ │ ├── octahedron.md │ │ │ ├── plane.md │ │ │ ├── quadratic-bezier-line.md │ │ │ ├── ring.md │ │ │ ├── rounded-box.md │ │ │ ├── screen-quad.md │ │ │ ├── sphere.md │ │ │ ├── superformula.md │ │ │ ├── tetrahedron.md │ │ │ ├── torus-knot.md │ │ │ ├── torus.md │ │ │ └── tube.md │ │ └── staging/ │ │ ├── accumulative-shadows.md │ │ ├── align.md │ │ ├── backdrop.md │ │ ├── bounds.md │ │ ├── circle-shadow.md │ │ ├── contact-shadows.md │ │ ├── environment.md │ │ ├── fit.md │ │ ├── grid.md │ │ ├── ocean.md │ │ ├── precipitation.md │ │ ├── randomized-lights.md │ │ ├── sky.md │ │ ├── smoke.md │ │ ├── soft-shadows.md │ │ ├── sparkles.md │ │ ├── stage.md │ │ ├── stars.md │ │ └── use-environment.md │ ├── index.md │ ├── markdown-examples.md │ ├── package.json │ ├── public/ │ │ └── feather.glb │ ├── tsconfig.json │ └── vite.config.ts ├── eslint.config.js ├── netlify.toml ├── package.json ├── playground/ │ └── vue/ │ ├── .eslintrc-auto-import.json │ ├── .eslintrc.json │ ├── .gitignore │ ├── .vscode/ │ │ └── extensions.json │ ├── README.md │ ├── auto-imports.d.ts │ ├── components.d.ts │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── blender-cube-draco.glb │ │ └── blender-cube.glb │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── FboCube.vue │ │ │ ├── GraphPane.vue │ │ │ ├── OverlayInfo.vue │ │ │ ├── StarsForTest.vue │ │ │ ├── fbx/ │ │ │ │ └── Jeep.vue │ │ │ └── gltf/ │ │ │ └── BlenderCube.vue │ │ ├── composables/ │ │ │ └── state.ts │ │ ├── main.ts │ │ ├── pages/ │ │ │ ├── abstractions/ │ │ │ │ ├── AnimatedSpriteDemo.vue │ │ │ │ ├── BillboardDemo.vue │ │ │ │ ├── CubeCameraDemo.vue │ │ │ │ ├── EdgesDemo.vue │ │ │ │ ├── GlobalAudioDemo.vue │ │ │ │ ├── GradientTextureDemo.vue │ │ │ │ ├── ImageDemo.vue │ │ │ │ ├── LensflareDemo.vue │ │ │ │ ├── LeviosoDemo.vue │ │ │ │ ├── MarchingCubesDemo.vue │ │ │ │ ├── MaskDemo.vue │ │ │ │ ├── MouseParallaxDemo.vue │ │ │ │ ├── OutlineDemo.vue │ │ │ │ ├── PositionalAudioDemo.vue │ │ │ │ ├── ReflectorMeshDemo.vue │ │ │ │ ├── Sampler.vue │ │ │ │ ├── ScreenSizerDemo.vue │ │ │ │ ├── ScreenSpaceDemo.vue │ │ │ │ ├── Text3DDemo.vue │ │ │ │ ├── fbo/ │ │ │ │ │ ├── FBODemo.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── useFBODemo.vue │ │ │ │ ├── lensflare/ │ │ │ │ │ ├── LensflareDemo.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── use-animations/ │ │ │ │ │ ├── TheModel.vue │ │ │ │ │ └── index.vue │ │ │ │ └── useSurfaceSampler.vue │ │ │ ├── controls/ │ │ │ │ ├── CameraControlsDemo.vue │ │ │ │ ├── HelperDemo.vue │ │ │ │ ├── KeyboardControlsDemo.vue │ │ │ │ ├── MapControlsDemo.vue │ │ │ │ ├── OrbitControlsDemo.vue │ │ │ │ ├── PointerLockControlsDemo.vue │ │ │ │ ├── ScrollControlsDemo.vue │ │ │ │ └── TransformControlsDemo.vue │ │ │ ├── index.vue │ │ │ ├── loaders/ │ │ │ │ ├── SVGDemo.vue │ │ │ │ ├── UseFBXDemo.vue │ │ │ │ ├── use-fbx/ │ │ │ │ │ ├── FBXModelDemo.vue │ │ │ │ │ ├── TheModel.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── use-gltf/ │ │ │ │ │ ├── GLTFModelDemo.vue │ │ │ │ │ ├── TheModel.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── use-svg/ │ │ │ │ │ ├── SVGModelDemo.vue │ │ │ │ │ ├── TheModel.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── use-texture/ │ │ │ │ │ ├── PBRTextures.vue │ │ │ │ │ ├── TheExperience.vue │ │ │ │ │ ├── UseTextureComponent.vue │ │ │ │ │ └── index.vue │ │ │ │ └── useVideoTextureDemo.vue │ │ │ ├── materials/ │ │ │ │ ├── CustomShaderMaterialDemo.vue │ │ │ │ ├── GlassMaterialDemo.vue │ │ │ │ ├── HolographicMaterialDemo.vue │ │ │ │ ├── MeshDiscardMaterialDemo.vue │ │ │ │ ├── MeshReflectionMaterialDemo.vue │ │ │ │ ├── PointMaterialDemo.vue │ │ │ │ └── WobbleMaterialDemo.vue │ │ │ ├── misc/ │ │ │ │ ├── BakeShadowsDemo.vue │ │ │ │ ├── Card.vue │ │ │ │ ├── GLTFExporterDemo.vue │ │ │ │ ├── HTMLDemo.vue │ │ │ │ ├── LODDemo.vue │ │ │ │ ├── LaptopDemo.vue │ │ │ │ ├── StatsDemo.vue │ │ │ │ ├── StatsGlDemo.vue │ │ │ │ └── useIntersect/ │ │ │ │ ├── TheExperience.vue │ │ │ │ └── index.vue │ │ │ ├── shapes/ │ │ │ │ ├── CatmullRomCurve3Demo.vue │ │ │ │ ├── CubicBezierLineDemo.vue │ │ │ │ ├── Cylinder.vue │ │ │ │ ├── Line2Demo.vue │ │ │ │ ├── OnDemandShapesDemo.vue │ │ │ │ ├── QuadraticBezierLineDemo.vue │ │ │ │ ├── RoundedBoxDemo.vue │ │ │ │ ├── ScreenQuadDemo.vue │ │ │ │ └── SuperformulaDemo.vue │ │ │ └── staging/ │ │ │ ├── AccumulativeShadowsDemo.vue │ │ │ ├── AlignDemo.vue │ │ │ ├── BackdropDemo.vue │ │ │ ├── BoundsDemo.vue │ │ │ ├── CircleShadowDemo.vue │ │ │ ├── ContactShadowsDemo.vue │ │ │ ├── GridDemo.vue │ │ │ ├── OceanDemo.vue │ │ │ ├── PrecipitationDemo.vue │ │ │ ├── SkyDemo.vue │ │ │ ├── SmokeDemo.vue │ │ │ ├── SoftShadowsDemo.vue │ │ │ ├── SparklesDemo.vue │ │ │ ├── StageDemo.vue │ │ │ ├── StarsDemo.vue │ │ │ ├── environment/ │ │ │ │ ├── EnvironmentDemo.vue │ │ │ │ └── Lightformers.vue │ │ │ └── fit/ │ │ │ ├── FitDemo.vue │ │ │ └── index.vue │ │ ├── router/ │ │ │ ├── index.ts │ │ │ └── routes/ │ │ │ ├── abstractions.ts │ │ │ ├── controls.ts │ │ │ ├── index.ts │ │ │ ├── loaders.ts │ │ │ ├── materials.ts │ │ │ ├── misc.ts │ │ │ ├── shapes.ts │ │ │ └── staging.ts │ │ ├── style.css │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── pnpm-workspace.yaml ├── renovate.json ├── src/ │ ├── core/ │ │ ├── abstractions/ │ │ │ ├── AnimatedSprite/ │ │ │ │ ├── Atlas.ts │ │ │ │ ├── AtlasAnimationDefinitionParser.ts │ │ │ │ ├── StringOps.ts │ │ │ │ └── component.vue │ │ │ ├── Billboard.vue │ │ │ ├── CubeCamera/ │ │ │ │ ├── component.vue │ │ │ │ └── useCubeCamera.ts │ │ │ ├── Edges.vue │ │ │ ├── GlobalAudio.ts │ │ │ ├── GradientTexture.vue │ │ │ ├── Image/ │ │ │ │ ├── ImageMaterial.vue │ │ │ │ ├── ImageMaterialImpl.ts │ │ │ │ └── component.vue │ │ │ ├── Lensflare/ │ │ │ │ ├── LensflareImpl.ts │ │ │ │ ├── RandUtils.ts │ │ │ │ ├── component.vue │ │ │ │ ├── constants.ts │ │ │ │ └── index.ts │ │ │ ├── Levioso.vue │ │ │ ├── MarchingCubes/ │ │ │ │ ├── MarchingCube.vue │ │ │ │ ├── MarchingCubes.vue │ │ │ │ ├── MarchingPlane.vue │ │ │ │ └── const.ts │ │ │ ├── Mask/ │ │ │ │ ├── component.vue │ │ │ │ └── useMask.ts │ │ │ ├── MouseParallax.vue │ │ │ ├── Outline/ │ │ │ │ ├── OutlineMaterialImpl.ts │ │ │ │ └── component.vue │ │ │ ├── PositionalAudio.vue │ │ │ ├── Reflector.vue │ │ │ ├── ScreenSizer.vue │ │ │ ├── ScreenSpace.vue │ │ │ ├── Text3D.vue │ │ │ ├── index.ts │ │ │ ├── useAnimations.ts │ │ │ ├── useFBO/ │ │ │ │ ├── component.vue │ │ │ │ └── index.ts │ │ │ └── useSurfaceSampler/ │ │ │ ├── component.vue │ │ │ └── index.ts │ │ ├── controls/ │ │ │ ├── CameraControls.vue │ │ │ ├── Helper/ │ │ │ │ ├── component.vue │ │ │ │ └── useHelper.ts │ │ │ ├── KeyboardControls.vue │ │ │ ├── MapControls.vue │ │ │ ├── OrbitControls.vue │ │ │ ├── PointerLockControls.vue │ │ │ ├── ScrollControls.vue │ │ │ ├── TransformControls.vue │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── loaders/ │ │ │ ├── index.ts │ │ │ ├── useFBX/ │ │ │ │ ├── component.vue │ │ │ │ └── index.ts │ │ │ ├── useGLTF/ │ │ │ │ ├── component.vue │ │ │ │ └── index.ts │ │ │ ├── useProgress.ts │ │ │ ├── useSVG/ │ │ │ │ ├── component.vue │ │ │ │ └── index.ts │ │ │ ├── useTexture/ │ │ │ │ ├── component.vue │ │ │ │ └── index.ts │ │ │ ├── useTextures/ │ │ │ │ └── index.ts │ │ │ └── useVideoTexture.ts │ │ ├── materials/ │ │ │ ├── customShaderMaterial/ │ │ │ │ └── index.vue │ │ │ ├── holographicMaterial/ │ │ │ │ ├── HolographicMaterialParameters.ts │ │ │ │ ├── index.vue │ │ │ │ └── material.ts │ │ │ ├── index.ts │ │ │ ├── meshDiscardMaterial/ │ │ │ │ ├── index.vue │ │ │ │ └── material.ts │ │ │ ├── meshGlassMaterial/ │ │ │ │ ├── index.vue │ │ │ │ └── material.ts │ │ │ ├── meshReflectionMaterial/ │ │ │ │ ├── BlurPass.ts │ │ │ │ ├── ConvolutionMaterial.ts │ │ │ │ ├── index.vue │ │ │ │ └── material.ts │ │ │ ├── meshWobbleMaterial/ │ │ │ │ ├── index.vue │ │ │ │ └── material.ts │ │ │ └── pointMaterial/ │ │ │ ├── component.vue │ │ │ └── material.ts │ │ ├── misc/ │ │ │ ├── BakeShadows.ts │ │ │ ├── LOD.vue │ │ │ ├── Stats.ts │ │ │ ├── StatsGl.ts │ │ │ ├── html/ │ │ │ │ ├── HTML.vue │ │ │ │ ├── shaders/ │ │ │ │ │ ├── fragment.glsl │ │ │ │ │ └── vertex.glsl │ │ │ │ └── utils.ts │ │ │ ├── index.ts │ │ │ ├── useGLTFExporter.ts │ │ │ └── useIntersect.ts │ │ ├── shapes/ │ │ │ ├── Box.vue │ │ │ ├── CatmullRomCurve3.vue │ │ │ ├── Circle.vue │ │ │ ├── Cone.vue │ │ │ ├── CubicBezierLine.vue │ │ │ ├── Cylinder.vue │ │ │ ├── Dodecahedron.vue │ │ │ ├── Icosahedron.vue │ │ │ ├── Line2.vue │ │ │ ├── Octahedron.vue │ │ │ ├── Plane.vue │ │ │ ├── QuadraticBezierLine.vue │ │ │ ├── Ring.vue │ │ │ ├── RoundedBox.vue │ │ │ ├── ScreenQuad.vue │ │ │ ├── Sphere.vue │ │ │ ├── Superformula.vue │ │ │ ├── Tetrahedron.vue │ │ │ ├── Torus.vue │ │ │ ├── TorusKnot.vue │ │ │ ├── Tube.vue │ │ │ └── index.ts │ │ └── staging/ │ │ ├── AccumulativeShadows/ │ │ │ ├── ProgressiveLightMap.ts │ │ │ ├── SoftShadowMaterial.ts │ │ │ └── component.vue │ │ ├── Align.vue │ │ ├── Backdrop.vue │ │ ├── Bounds/ │ │ │ ├── Bounds.ts │ │ │ └── component.vue │ │ ├── CircleShadow.vue │ │ ├── ContactShadows.vue │ │ ├── Fit.vue │ │ ├── Grid.vue │ │ ├── Ocean.vue │ │ ├── Precipitation.vue │ │ ├── RandomizedLights/ │ │ │ ├── RandomizedLights.ts │ │ │ └── component.vue │ │ ├── Sky.vue │ │ ├── Smoke.vue │ │ ├── SoftShadows.vue │ │ ├── Sparkles/ │ │ │ ├── ShaderData.ts │ │ │ ├── ShaderDataBuilder.ts │ │ │ ├── component.vue │ │ │ └── useEmptyDataTexture.ts │ │ ├── Stage.vue │ │ ├── Stars.vue │ │ ├── index.ts │ │ └── useEnvironment/ │ │ ├── EnvironmentScene.ts │ │ ├── component.vue │ │ ├── const.ts │ │ ├── index.ts │ │ └── lightformer/ │ │ └── index.vue │ ├── index.ts │ ├── utils/ │ │ ├── Gradient.ts │ │ ├── calculateScaleFactor.ts │ │ ├── constants.ts │ │ ├── easing.ts │ │ ├── index.ts │ │ ├── shaderMaterial.ts │ │ └── types.ts │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts