---
description: Setting up & using displacement on the Studio licences of PANORA|make
---

# Adding Displacement

**PANORA|make's paid licenses supports landscape displacement**, using Nanite (5.4+) or legacy Virtual Heightfield Meshes. Both methods are compared below:

<figure><img src="https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2FHlWZbTS2878CX0a4ifrr%2FDispCamparo.png?alt=media&#x26;token=81843268-7c3c-4102-922c-c83914ba3a77" alt=""><figcaption><p>Visual comparison of the methods, same spot and material.</p></figcaption></figure>

<table><thead><tr><th width="149"></th><th>Nanite Displacement</th><th>Virtual Heightfield Mesh</th></tr></thead><tbody><tr><td>Minimum UE Version</td><td><strong>5.4</strong></td><td><strong>5.1</strong></td></tr><tr><td>Performance Cost</td><td><p><strong>Big</strong> </p><ul><li>Recommended only for cinematics or 30fps targets.</li></ul></td><td><p><strong>Moderate</strong></p><ul><li>Depending on the level of resolution of the VT</li></ul></td></tr><tr><td>Texture quality</td><td><p><strong>Same</strong></p><ul><li>It's the same material ; no difference.</li></ul></td><td><p><strong>Moderate</strong></p><ul><li>Depending on the level of resolution of the Color VT.</li></ul></td></tr><tr><td>Virtual Texturing required</td><td><strong>No</strong></td><td><p><strong>Yes</strong> </p><ul><li><a href="../landscape-caching-for-better-performance#exclude-layers-from-caching">Excluding a Sub-Layer from caching</a> will also exclude it from being rendered in the VHM.</li></ul></td></tr><tr><td>Collision and Shadows</td><td><strong>Yes</strong></td><td><strong>No</strong></td></tr><tr><td>Displacement depth</td><td><p><strong>Free</strong></p><ul><li>The displacement can go upwards, downwards, or both; and follow the landscape normals.</li></ul></td><td><p><strong>Upwards only</strong></p><ul><li>The displacement only goes upwards from the landscape; regardless of normals.</li></ul></td></tr></tbody></table>

{% hint style="warning" %}
**Keep in mind that both are highly experimental and have issues.**&#x20;

* VHMs are legacy and probably won't be updated further, don't really feature collisions or shadowing, and can have runtime bugs when packaged with blocky artefacts.
* Nanite Displacement is very performance heavy - adding 4ms of GPU render time on a mobile 3070 GPU and has issues with AMD GPUs as of UE 5.4.\
  Having to manually add config lines in the .ini files of the project shows how experimental the feature is!
{% endhint %}

After the initial setup, you just have to enable the Displacement space in [the Sub-Layer's material settings, and then set your map.](../../interface-overview/builder-interface/building-materials#use-displacement)

The features and setup required are listed on the tabs below depending on your choice.

## Setup Instructions

{% tabs %}
{% tab title="Nanite Displacement (5.4+)" %}
In the Project Settings, ensure that Nanite is enabled...

<figure><img src="https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2F0L8778Hk05M1efCZQNLi%2Fimage.png?alt=media&#x26;token=f7f955b5-f1d7-4341-b0c6-f45cdd18e1a6" alt=""><figcaption><p>Project Settings</p></figcaption></figure>

...and enable Nanite on the Landscape. \
Make sure to rebuild Data after enabling it.

<figure><img src="https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2Fur5NdHeELgeygLOMBO3E%2Fimage.png?alt=media&#x26;token=e32d6c63-77d6-45f1-8297-12ca8d3c08f4" alt=""><figcaption><p>Landscape Actor's Details panel.</p></figcaption></figure>

Then, go in your project's DefaultEngine.ini.\
Look for a section called "\[/Script/Engine.RendererSettings]" and add these two lines under it:

`r.Nanite.AllowTessellation=1` \
`r.Nanite.Tessellation=1`

Then restart your project.\
You should now have access to the Nanite Tessellation features in the Global Options.

<figure><img src="https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2FqT2K5il0ahohTAEsuJZw%2Fimage.png?alt=media&#x26;token=02b07e4c-8d10-4cb5-b006-9043a19d0ba2" alt=""><figcaption><p>Nanite Tessellation toggle in the Global Options.</p></figcaption></figure>

Enabling it will allow the Displacement maps to be used with Nanite.\
If it is disabled, they will only affect Virtual Heightfield Meshes.
{% endtab %}

{% tab title="Virtual Heightfield Mesh" %}
{% hint style="info" %}
You need to have set virtual textures on the terrain with the volumes. \
See [Landscape Caching](landscape-caching-for-better-performance) for more information.
{% endhint %}

Place a Virtual Heightfield Mesh actor in your scene, and in its detail set the Virtual Texture to your "World Height" VT.

![](https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2FtWPTdG6pS0Zqad41unxT%2Fimage.png?alt=media\&token=9433068c-c918-4215-bdc3-3d00a1ae5fb8)

Then, click on "Set Bounds" and in Heightfield click on "Build" next to "Build MinMax Texture". Let it build its mesh.

{% hint style="info" %}
The build time can take some times, depending on the size of your terrain and size of your height VT.
{% endhint %}

**Then, create a new material.**&#x20;

It will be used to apply the texture of the landscape into the Virtual Heightfield Mesh.

![](https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2FKJuwZER8CbtoYaMc9iCV%2Fimage.png?alt=media\&token=33238ee3-02ec-4695-9c26-b8fcbaece1fd)

The material should look like this : a Runtime Virtual Texture Sample linked to our normal VT, which sets the Color/Specular/Roughness/Normal to our Heightfield Mesh.

Assign this material to your VHM and you're done !&#x20;

![](https://3751470283-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9KuznrlYB4kqrVq5qJMd%2Fuploads%2FN0UuwMDNOEPVEmRRQpth%2Fimage.png?alt=media\&token=a8fb1c06-dabc-499e-ac53-251cd5725770)

The VHM can be hidden in editor to not interfere with the edition of your Landscape Instance, in its details. **It is hidden by default !**

{% hint style="info" %}
The displacement maps & their force values blends with each other, if 4 sub-layers blends with each other then their dispalcement would be a middle-ground between each of their values.
{% endhint %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**To use the Nanite Displacement when cached**, you'll need to add a Runtime Virtual Texture Volume containing a VT using the type "Displacement", which will be drawn on by the Landscape just like the Color and World Height.&#x20;

[The steps are the same as the other volumes. ](../landscape-caching-for-better-performance#creating-the-runtime-virtual-textures)
{% endhint %}
