ContactShadows 
<ContactShadows /> is a "fake", non-lighting-based shadow component. It displays shadows on a single plane. The component is based on the THREE.js contact shadows example by @mrdoob.
Usage 
vue
<script setup lang="ts">
import { ContactShadows, Levioso, TorusKnot } from '@tresjs/cientos'
import { TresCanvas } from '@tresjs/core'
</script>
<template>
  <TresCanvas clear-color="white">
    <Levioso :speed="2" :range="[0, 0.7]" :rotation-factor="9">
      <TorusKnot :scale="0.45">
        <TresMeshNormalMaterial />
      </TorusKnot>
    </Levioso>
    <ContactShadows :position-y="-1" color="#335" :scale="20" />
  </TresCanvas>
</template>Props 
| Prop | Description | Default | 
|---|---|---|
| opacity | The opacity of the shadows. | 1 | 
| blur | The blur of the shadows. | 1 | 
| color | The color of the shadows. | '#000000' | 
| tint | If provided, the color of the "core" of the shadows. "Added" to color. | undefined | 
| scale | The scale of the shadows/shadow plane. Can be a number or an array of two numbers [x, y]. | 10 | 
| width | The width of the shadow plane. | 1 | 
| height | The height of the shadow plane. | 1 | 
| far | The distance of the orthographic shadow camera extends above the shadow plane. | 10 | 
| smooth | Whether the shadows should be smoothed to reduce artifacts. | true | 
| resolution | The resolution of the shadow textures. | 512 | 
| frames | For performance, optionally stop updating shadows after framesframes. | Math.POSITIVE_INFINITY | 
| depthWrite | Whether the shadows should write to the depth buffer or not. | false |