# Creating a new world

### Add a Shader World Actor in your scene

First step is simply to drag and drop a shader world actor your scene, eventually setting its position to the origin, and being sure it has no rotation.

By default it will have the blank terrain setup, which generate a flat surface.

## Create a generator material

Simply create a traditional basic material and configure it to be **Default Surface, Opaque**, **Unlit. and enable the usage Used with Virtual Heightfield Mesh.**

**Any Material used in ShaderWorld to do computation should have those settings**

ShaderWorld provides various noises, heightmap texture reading and filtering in different quality, layer inputs, layer samples etc...&#x20;

Copying the provided layers from the demo maps locally in your content browser is a good starting point.

<figure><img src="https://1959481941-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoSgK3bK748KQ9bA59ss4%2Fuploads%2FClqAyVRBeTbCw6lvRoJQ%2Fswinputoutput.jpg?alt=media&#x26;token=544ab5af-d735-44dd-b01f-6005e296964c" alt=""><figcaption></figcaption></figure>

This newly created generator material will be your own canvas to test things and iterate in ShaderWorld, you can find libraries of Material Function within Shader World folders, as well as in the provided demo maps: Noises, how to simply read an external heightmap... !

## Make your surface material Compatible

Inside your surface material, _not the generator material_ but the material being applied to the generated surface, be sure to toggle **Used with Virtual Heighfield Mesh** within its detail panel. By making this simple switch mandatory, we prevent unecessary shader compilation when you're enabling the plugin.

\
&#x20;      &#x20;

<figure><img src="https://1959481941-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoSgK3bK748KQ9bA59ss4%2Fuploads%2FGvNPiHLU1ChVqI1rBSga%2Fimage18.jpg?alt=media" alt=""><figcaption></figcaption></figure>

Inside the various MF\_Define\_\* from the demo map you can find the available premade nodes, noise, functions, from reading heightmaps, packed 16 bits heightmaps, noises, terracing, crater…

The LODs are defined by your vertical distance to the land/ocean: when collision is enabled we’re using the collision mesh grids to accurately know the viewer altitude to the ground, otherwise we’re using the altitude to the reference plane of the world.

<figure><img src="https://1959481941-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoSgK3bK748KQ9bA59ss4%2Fuploads%2F88AY63vGHBKzN4V5JagG%2Fimage14.jpg?alt=media" alt=""><figcaption></figcaption></figure>
