Using Massive World with other landscape material. (Advanced). Example: Brushify

Important note

This section is for advanced users and Brushify / Dreamscape are here as examples but this does not make me the official customer service for them. If you don't know how to work with materials, I recommend learning it properly before moving forward with this and using MassiveLandscape instead.

Feel free to contact the creator of your material for further integration.

Integration

This section is a bit more advanced and requires a better understanding of how the material works. Note that you can integrate the landscape material but not use it as a biome mask. To sum up, the main reason is that the biome mask doesn't have access at all to the landscape data and the layer.

I will explain that section with Brushify as an example, and later make another example with Dreamscape.

Setting up the Runtime Virtual Texture (RVT).

The following will use Brushify as an example, but the workflow is the same for most Landscape Materials.

First, go into your copy of DT_VirtualTexture then add the Brushify RVT that comes with the demo (or any RVT you want to use). Make sure that there are only 2 RVT, one for the color and the other for the height. You can get those RVT inside Brushify/Materials/Landscape/Functions/RVT/VirtualTextures

To make the RVT work properly with Massive World's mask you will need to switch the Virtual Texture Content to the format "YCoCg Base Color, Normal, Roughness, Specular, Mask".

After the switch, the color of your current landscape may look weird, no worries we will fix that later.

Make sure that the 2 Virtual Textures are installed in your scene (with a Runtime Virtual Texture Volume) and that the bound matches the size of your terrain. Also, make sure the RVT is also added to your landscape

Inside the landscape material

Now let's set up the landscape material of Brushify. First, open Brushify's M_Landscape and look for the "Runtime Virtual Texture Output".

Set the Specular and Roughness to 0, those data will be used by Massive World's Mask.

Add MF_GetSlopeData and connect it to the Mask input like the screenshot below.

Now Brushify is sending the data needed for the biome texturing, but you need to the the information back to know what to paint on the landscape. In the case of Brushify it will be in the MakeMaterialAttributes inside the MF_RVT_Landscape (you can see it in the screenshot above, 2 click on it to open it)

Inside the MF_RVT_Landscape function, make the following changes

The Displacement and Remove Grass are named reroute nodes to be used to mask the grass (for example with the roads and beach) and the Displacement can be used for Nanite Displacement.

Finally, be sure to change the Runtime Virtual Texture Sample to "YCoCg Base Color, Normal, Roughness, Specular, Mask". This will fix the weird colors.

At this point, the texturing should already be working and have a behavior similar to this (I changed the texture of the road to use Brushify's forest). Now let's remove the grass

Removing grass

In the case of Brushify we need to bring back the "Remove Grass" data to the main material. To do this create a Function Output and call it "Remove Grass" then connect your Remove Grass to like the screenshot below

We can now go back to M_Landscape and access the Remove Grass, let's add it back into a Names Reroute node.

Now let's add them to the grass-removing section, still in M_Landscape, more to the left.

And now Massive World is communicating the information back to the landscape (roads and beach).

Last updated