Kick-start

The world

First of all you need to activate the plugin from the editor plugins menu, then enable visibility of Engine content and Plugin content for your content browser.

From the Shader World plugin Content folder, navigate to the Maps subfolder and open one of the demo maps. In the world outline select the blueprint named BP_NameOfMapDemo, within its detail panel you can find its generator Material which defines the foundation of how your world is generated.

The Generator Material (Default Surface - Unlit)

If you open the generator material you will find a material function named MF_Define_* which is responsible for creating your surface (ocean/terrain) foundation: for each XY coordinate as input, it outputs a height. Creating a new world in shaderworld, consists in creating such a material function, using the provided nodes toolbox and the well known Unreal Engine material editor.

To visualize its effect, first select the terrain in your currently opened demo map (Blank demo map is a good starting point), and check Update Height Data Over time in its detail panel Config tab: this option is used to create oceans, but allows instant feedback when iterating on landscapes. Open the MF_Define_* Material Function associated with your current world, now updating every frame, and replace the current computation by a simple constant to the output pin, compile the material function and observe the result.

What this material function is doing is: given a world position input, outputs the height of the terrain.

Node Based Workflow, connect those as you wish to create worlds

The intended design of Shader World plugin is to create a node based workflow to generate worlds within the material editor, so you don’t have to be a professional technical artist to create interesting worlds. The screenshot above displays the current state of the toolbox as of version 2.0, those nodes are premade and calibrated (inputs being in 0..1 0..10 0…1000 ranges) and can be combined as you want.

In Shader World plugin the nodes are actually material functions, you can develop your own nodes, taking for instance inspiration from the website Shadertoy.com, or even directly write your own shader logic without using them at all.

If you check the various demo map MF_Define_* material functions you can find some reference on how to use world coordinates to read a heightmap to define your terrain, as well as adding some lower scale noise variations to it, or relying exclusively on noise functions.

Alongside the provided toolbox you can use all the preexisting material functions within the Unreal Engine material editor, notably the Noise node and Vector Noise node (prefer computational noises to avoid precision issues). But we would recommend using Shader World's own noises which have been extensively tested. The toolbox is set to expand over time.

As a general idea you could think of generating a node combination for mountains, another for valleys, another for underwater, and blend between each other given a biome, mapped using a texture or another set of nodes, possibilities are endless.

Last updated