> For the complete documentation index, see [llms.txt](https://amazing-assets.gitbook.io/beast-advanced-tessellation-shader/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://amazing-assets.gitbook.io/beast-advanced-tessellation-shader/readme.md).

# Beast - Advanced Tessellation Shader

[**Beast**](https://assetstore.unity.com/packages/vfx/shaders/beast-advanced-tessellation-shader-82066?aid=1011lvgVb) tessellation shader is integrated into Unity's default **Standard** (for Built-in RP) and **Lit** (for Universal RP) shaders and extends them with tessellation and displacement features:

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FWwdOCDTVOYu2iET5z9cu%2FScreenshots_3.png?alt=media&amp;token=8fa6dc1c-a010-4608-acda-800a308444b8" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FYXW5ZHSOCQVriclZG5v3%2FScreenshots_2%20copy.png?alt=media&amp;token=26a5058d-fcbe-4c8b-b020-f8ebf0bb6770" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2F3oNXAQVLKtfJvkOuAU4N%2FScreenshots_1.png?alt=media&amp;token=c863d1a3-a9ea-4d40-b0d4-033f935b89f1" alt=""><figcaption></figcaption></figure></div>

## Tessellation Types

**Beast** shaders offers four types of tessellation:

{% tabs %}
{% tab title="Fixed" %}
Adds fixed amount of tessellation to the whole mesh. This type of tessellation is useful for meshes with roughly the same size of faces on screen.

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FFYxaDjltlHC17PuK29yi%2FSurfaceShaderTess2-fixed.jpg?alt=media&amp;token=af46e6ae-d299-49ac-8677-ea525ed419a6" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Distance Based" %}
Models faces tessellation level is calculated based on their distance from the camera.

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FC9A7YhK6V0opLIlY3KYJ%2FSurfaceShaderTess3-distance.jpg?alt=media&amp;token=20947391-3a56-4d07-a856-3df6aa5fce55" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Edge Length" %}
If mesh faces are not roughly the same sizes, then **Fixed** and **Distance Based** tessellation methods create effect when small faces are tessellated too much, while large triangles aren’t tessellated enough. One way to improve this is to compute tessellation levels based on triangle **Edge Length** on the screen.

This makes the shader a bit more expensive, but saves a lot of GPU work for parts of meshes that are outside of the Camera’s view.

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FubYAvYLFxHZm8xGU8cpI%2FSurfaceShaderTess4-edgelength.jpg?alt=media&amp;token=4a940676-e9fc-4cb2-ae33-1c530d76c015" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Phong" %}
[Phong Tessellation](https://www.google.lt/search?q=phong+tessellation) modifies positions of the subdivided faces so that the resulting surface follows the mesh ***normals*** a bit. It’s quite an effective way of making low-poly meshes become more smooth.

<div align="left"><figure><img src="https://3010321965-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiakifRoeXoGI4Ot0Ia8G%2Fuploads%2FPZNjvxgDL4d9FUs6Ef9J%2FSurfaceShaderPhongTess.jpg?alt=media&amp;token=9e30ddf2-1dd6-43db-9b4a-e79746a0905a" alt=""><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}
