# SHADERSOURCE.io Documentation

This is the official SHADERSOURCE.io documentation page.

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

* [Frequently Asked Questions](/faq-answers)
* [Support Discord](https://docs.shadersource.io/support)

### !! IMPORTANT UPDATE !!

Now that the Unreal Engine Marketplace has reached its end of life, all SHADERSOURCE assets are now live on Fab here: <https://www.fab.com/sellers/SHADERSOURCE>!

<figure><img src="/files/cVDmsVxNUjhWZVDTazwj" alt=""><figcaption></figcaption></figure>

### Featured Assets

<table data-view="cards"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Texture Tools</td><td></td><td></td><td><a href="/files/zGnaCtV41q9O1xM15veQ">/files/zGnaCtV41q9O1xM15veQ</a></td><td><a href="/pages/iKVBV5CciGndJR2HVZQC">/pages/iKVBV5CciGndJR2HVZQC</a></td></tr><tr><td>Waterfall Tool 2</td><td></td><td></td><td><a href="/files/9QzsNgrdzB9PReMn1qNr">/files/9QzsNgrdzB9PReMn1qNr</a></td><td><a href="/pages/ERI9eaFifrEzKn3con5x">/pages/ERI9eaFifrEzKn3con5x</a></td></tr><tr><td>Landscape Material Tool</td><td></td><td></td><td><a href="/files/exy9jhCXQpAWZ4I9RwQa">/files/exy9jhCXQpAWZ4I9RwQa</a></td><td><a href="/pages/czRiGpujsQ7fJKV6IcWf">/pages/czRiGpujsQ7fJKV6IcWf</a></td></tr></tbody></table>

### Supported Assets

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Branching River Tool</td><td><a href="/files/z8mTUwl5vD9ROeVxXYEt">/files/z8mTUwl5vD9ROeVxXYEt</a></td><td><a href="/pages/3kxXJqpAaDaxyQR9BK7Z">/pages/3kxXJqpAaDaxyQR9BK7Z</a></td></tr><tr><td>Fluid Interaction Tool</td><td><a href="/files/ZYUBxpq31jZY1zYx1MIb">/files/ZYUBxpq31jZY1zYx1MIb</a></td><td><a href="/pages/-Mk56qXUQiK5u1Ymyf0w">/pages/-Mk56qXUQiK5u1Ymyf0w</a></td></tr><tr><td>Landscape Material Tool</td><td><a href="/files/exy9jhCXQpAWZ4I9RwQa">/files/exy9jhCXQpAWZ4I9RwQa</a></td><td><a href="/pages/czRiGpujsQ7fJKV6IcWf">/pages/czRiGpujsQ7fJKV6IcWf</a></td></tr><tr><td>Level Palette</td><td><a href="/files/7utyIModvKQH68g2kCNf">/files/7utyIModvKQH68g2kCNf</a></td><td><a href="/pages/6StdTBTO6Qo1IxpATZEw">/pages/6StdTBTO6Qo1IxpATZEw</a></td></tr><tr><td>Poison Toxic Goo</td><td><a href="/files/mMMzOMguSZu3iElxTtIj">/files/mMMzOMguSZu3iElxTtIj</a></td><td><a href="/pages/OH9Qcv42VKzGfNI1cLNJ">/pages/OH9Qcv42VKzGfNI1cLNJ</a></td></tr><tr><td>Texture Tools</td><td><a href="/files/zGnaCtV41q9O1xM15veQ">/files/zGnaCtV41q9O1xM15veQ</a></td><td><a href="/pages/iKVBV5CciGndJR2HVZQC">/pages/iKVBV5CciGndJR2HVZQC</a></td></tr><tr><td>Tropical Ocean Tool</td><td><a href="/files/jc3WCSVqCHD7HAmdn2Nr">/files/jc3WCSVqCHD7HAmdn2Nr</a></td><td><a href="/pages/aD7SfbDhsQuxYpRCpZfG">/pages/aD7SfbDhsQuxYpRCpZfG</a></td></tr><tr><td>Waterfall Tool</td><td><a href="/files/0N9gTPa6rYW3BfaF7rJT">/files/0N9gTPa6rYW3BfaF7rJT</a></td><td><a href="/pages/VD6LPU8ylYKR0f3TbLHu">/pages/VD6LPU8ylYKR0f3TbLHu</a></td></tr><tr><td>Waterfall Tool 2</td><td><a href="/files/9QzsNgrdzB9PReMn1qNr">/files/9QzsNgrdzB9PReMn1qNr</a></td><td><a href="/pages/ERI9eaFifrEzKn3con5x">/pages/ERI9eaFifrEzKn3con5x</a></td></tr></tbody></table>

### No Longer in Support

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Procedural FX Spawner</td><td><a href="/files/YUBh4IkVw7jD5jaXwqbg">/files/YUBh4IkVw7jD5jaXwqbg</a></td><td><a href="/pages/dYX1uqFqoZ2WzSr1SftG">/pages/dYX1uqFqoZ2WzSr1SftG</a></td></tr><tr><td>River Buoyancy Tool</td><td><a href="/files/aLluQeg2MIlJKPZfKA8g">/files/aLluQeg2MIlJKPZfKA8g</a></td><td><a href="/pages/rUno1MOV4CFW1jWC9okO">/pages/rUno1MOV4CFW1jWC9okO</a></td></tr><tr><td>Weather Tool</td><td><a href="/files/9d9nUpm9yohVQ8kZXcfD">/files/9d9nUpm9yohVQ8kZXcfD</a></td><td><a href="/pages/1wgEmizzTUXQdQsRSHeb">/pages/1wgEmizzTUXQdQsRSHeb</a></td></tr><tr><td>Procedural Water Foliage</td><td><a href="/files/xwDHEm8ecD8gCrLy0o8v">/files/xwDHEm8ecD8gCrLy0o8v</a></td><td><a href="/pages/3QAXrWaITA0YgAw8cREh">/pages/3QAXrWaITA0YgAw8cREh</a></td></tr></tbody></table>


# FAQ Answers

Information on frequently asked questions


# Sales/Discounts

SHADERSOURCE products are put on sale regularly, usually in line with Fab sale events. This will sometimes include a couple of products, or all products, depending on the invitation that we receive from Epic Games.

{% hint style="warning" %}
**In between sales, our products are all sold at full price and no discounts will be given out.**
{% endhint %}

We are also unable to provide advance notice of upcoming sale dates due to Epic Games' seller agreement. We are not allowed to publicly discuss a sale until it has been announced on Epic Games' socials, which is usually the day the sale starts.

[Join our Discord](https://docs.shadersource.io/support) or follow us on social media to keep up to date with when our products go on sale. Sales will generally be announced on these platforms: [YouTube](https://www.youtube.com/@ShaderSource) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource).


# Platform Support

{% hint style="success" %}
Has been fully tested on **Windows** platforms.
{% endhint %}

{% hint style="warning" %}
Untested on other platforms including:

* Mobile (Android/iOS)
* Mac OS
* Linux
* Gaming Consoles (XBox/PlayStation/Switch/Etc)

It's possible that the assets/plugins will work just fine on these platforms. However, we do not currently support or test our products on these platforms.
{% endhint %}


# River Buoyancy & Branching River Tool Differences

Information on the differences between the two River Tool assets

## River Buoyancy Tool

* [Fab Link](https://www.fab.com/listings/682b8592-3159-443a-87b3-9c843a910095)
* [Documentation](/no-longer-in-support/river-buoyancy-tool)

This was the first River Tool to be released and had a specific use in mind, the key features of this tool is for making a more simple non branching river and wanting buoyancy support. It also uses an older technique for the shader, utilizing panning textures.

![](/files/-Mk6CePoFnD4T_MFiNpt)

{% hint style="success" %}

#### Pros

* Simple river spline creation
* Ability to have physics object have buoyancy and flow down the river
* Panning textures
  {% endhint %}

{% hint style="danger" %}

#### Cons

* Unable to branch and re-attach
* Does not support Flowmaps
* Cannot have vertex painting
* Not supported with UE4.26 Water Tools Plugin
* No longer in development support - final engine version is 4.27 (untested in 5.0+).
  {% endhint %}

## Branching River Tool

* [Fab Link](https://www.fab.com/listings/e0e83ded-b935-42c2-a247-7afb6f2e70f8)
* [Documentation](/assets-and-plugins/branching-river-tool)

This was a completely new project made for a different use. It is more focused on the ability to branch and then re-attach the river in multiple areas. It also has the ability to vertex paint areas for foam, and warping in different directions.\
In engine 4.26 the "Water Tools" plugin was added, the Branching River Tool has added support to work with this.

![](/files/-Mk6CigcZDjmZ6npx4ye)

{% hint style="success" %}

#### Pros

* Ability to branch and re-attach rivers
* Supports Flowmaps
* Higher Quality Materials
* Vertex painting for foam and directions
* Supports UE4.26 Water Tools Plugin
  {% endhint %}

{% hint style="danger" %}

#### Cons

* Does not support Buoyancy
* More complex material and blueprint
  {% endhint %}


# Waterfall Tool and Waterfall Tool 2 Differences

The Waterfall Tool and Waterfall Tool 2 are two completely different products offering different solutions. We currently plan on supporting both products going forward as they both have different use-cases for different types of projects.

### Waterfall Tool

* [Fab Link](https://www.fab.com/listings/e42888e7-8dea-4893-874c-f3533ddf49f3)
* [Documentation](https://docs.shadersource.io/assets-and-plugins/waterfall-tool)

The first Waterfall Tool was built way back in UE4.17. It is super simplistic in its approach of using spline mesh planes and has very limited functionality.

<figure><img src="/files/pDXiQVIcOIf6Ib63So2N" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Features**

* Spline based Waterfall Tool.
* Automatic ground detection.
* Dynamic Material Object Detection.
* Material Settings: Color, Brightness, Flow Speed, and more!
* All Particle Effects have LODs for better performance.
  {% endhint %}

{% hint style="success" %}
**Pros**

* Super simple and easy to implement
* Good for styalised projects
  {% endhint %}

{% hint style="danger" %}
**Cons**

* Limited to using straight-edged, flat planes
* Limited functionality and flexibility to create more complex waterfalls
  {% endhint %}

### Waterfall Tool 2

* [Fab Link](https://www.fab.com/listings/f44cd11c-4202-4e63-b74d-be09b1749b6e)
* [Documentation](https://docs.shadersource.io/new-assets/waterfall-tool-2)

The Waterfall Tool 2 has been built from the ground up in UE5.2 as a way to create much more realistic and less-stylized waterfalls to cater for the ever-increasing demand for more realistic environments. It provides a full Editor Mode and has many more variables and uses dynamic meshes and spline paths to build geometry from scratch, giving it the ability to bend along a cliff-face, rather than being a simple straight plane.

<figure><img src="/files/LAQNXs9DE9DuHju2QXH1" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**Features**

* Create a realistic waterfall by dragging and dropping and clicking a couple of buttons!
* Create waterfalls that aren’t just planes but instead bend to conform to the cliff-face!
* Full flexibility when it comes to tweaking variables for how paths, meshes, and FX generate!
* Split into Simple and Advanced Modes to cater for a wide variety of use cases and technical ability!
* Ability to bake the Dynamic Meshes to a single Static Mesh for optimization.
* Includes a Material for each mesh type.
* Includes Niagara System assets for each global VFX Component.
* Includes Audio Components for SFX (SFX Assets not included).
* UI to easily add and modify additional VFX and SFX Components to any of the spline points on any of the paths.
* Most variables are exposed to Blueprints and most functions are virtual, allowing the possibility to add on top of this system!
  {% endhint %}

{% hint style="success" %}
**Pros**

* Provides a full Editor Mode with many parameters to provide flexibility
* Create realistic-looking waterfalls for less-styalised projects
* Generates custom meshes based on an offline particle simulation to create waterfalls that conform to a cliff-face rather than being a simple flat, straight-edged plane
* Ability to bake meshes into a single Static Mesh with an option to also combine same Materials into singular slots, which provides a more optimised version of the waterfall, reducing the number of draw calls and removing all the overhead of the Dynamic Meshes.
  {% endhint %}

{% hint style="danger" %}
**Cons**

* Better to create more realistic waterfalls, rather than styalised waterfalls
* Bigger learning curve
  {% endhint %}


# \[UE4] Asset Displaying Wrong

Common issues with the asset displaying wrong or different from the marketplace previews

## Mesh Distance Fields not Enabled

#### A lot of our assets use Distance Fields for their materials, which UE4 has disabled by default.

You can easily enable it by going to your project settings and searching for "Generate Distance Fields" then enabling the checkbox "Generate Mesh Distance Fields"

![](/files/-Mk5t0PzCCyQup_eH15g)

An engine restart is required.

<div align="left"><img src="/files/-Mk5vTvPV2ngraEIfdGG" alt=""></div>

{% hint style="warning" %}
**In some cases, even with Mesh Distance Fields enabled they still do not get generated. A common issue is because there isn't at least 1 static mesh in the scene. You can fix this by simply dropping a cube somewhere within your scene.**
{% endhint %}

{% hint style="warning" %}
**Another reason could be that you have set your engine scalability "Shadows" setting to medium or lower. Distance Fields require at least High "Shadows" setting to generate.**
{% endhint %}

![](/files/-Mk64x2efyUOrVyUSiJb)


# Support

We provide a support server on Discord for all of our assets.

{% hint style="warning" %}
**Please note: It is also not our job to teach you how to use Unreal Engine or any of its features.** We do not provide personal services for individual projects and their requirements. Products are sold as-is and it's up to the developer using our product to modify it in any way they see fit after purchase.

We’re happy to provide support for technical questions and help understanding how aspects of the tool work if the documentation isn’t sufficient enough.

It is ok to ask for help with general Unreal Engine questions in the *⁠off-topic* channel on the Discord server and if anyone in the server wants to assist, that is ok too, but please remember that you've paid a one-off payment for a product sold as-is, and not a subscription.
{% endhint %}

[Join the SHADERSOURCE Discord here.](https://discord.gg/Gu7ZJg9)


# Branching River Tool

Documentation for the SHADERSOURCE Branching River Tool

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/e0e83ded-b935-42c2-a247-7afb6f2e70f8)
* [Playable Demo](https://drive.google.com/drive/folders/1ksE-dUMkw1MUszO9b3OpWRXk7PgKnVYg?usp=sharing)
* Videos:
  * Preview Video: {Updated Video Coming Soon}
  * Quick-Guide with the [SHADERSOURCE Fluid Interaction Tool](/assets-and-plugins/fluid-interaction-tool): [YouTube](https://youtu.be/DksUCrBIORo?si=oDclmjn5Ry0WvHgB) | [Rumble](https://rumble.com/v459r0o-branching-river-tool-fluid-interaction-tool-quick-guide.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.2+
  * Versions no longer supported (sold as is): 4.22 - 4.27, 5.0 - 5.1

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/branching-river-tool/changelog)
* [How to Use](https://docs.shadersource.io/assets-and-plugins/branching-river-tool/how-to-use)


# Changelog

**UPDATE V1.3b (Pending) 13/11/2024 (UE5.5+)**

* Vertex Painting for Warping and Foam has been re-enabled as epic has re-added the ability to vertex paint on Spline Meshes

**UPDATE V1.3a (Released!) 2/27/2021 (UE4.24+)**

* Added updated branching support for disconnecting and reconnecting rivers
* Fixed material setup for SingleLayerWater Shading

**UPDATE V1.3 (Released) 12/31/2020 (UE4.26+ ONLY)**

* Added support for the 4.26 water plugin (Must have plugin enabled to view changes)


# How To Use

{% hint style="warning" %}
Unreal Engine 4.22 to 4.27 have Tutorial Blueprints built into the product.
{% endhint %}

## Placing and Extending the River

{% hint style="info" %}
It's best to carve a river using the Landscape Editor Mode first.

<https://dev.epicgames.com/documentation/en-us/unreal-engine/creating-landscapes-in-unreal-engine>
{% endhint %}

Start by placing the `BP_FlowmapRiverSystem` Actor into the world.

To extend the river out, select the end spline point `(1)` hold `ALT` on your keyboard and `LEFT CLICK` with your mouse to drag out the point, this will create a new spline point for the river.

<figure><img src="/files/1XOhg1oruQgAZj7SD8PQ" alt=""><figcaption></figcaption></figure>

## Branching the River

For this tutorial we have a basic river shape created with the Landscape Editor Mode and built with a single `BP_FlowmapRiverSystem`.

<figure><img src="/files/GHuAEDukvCg1qgrMdHKp" alt=""><figcaption></figcaption></figure>

Once the first river is placed, navigate to the *Details Panel* of the Actor and press the `Update River` button.

<figure><img src="/files/g7lgSsuq4DPxlIrEaH5Z" alt=""><figcaption></figcaption></figure>

This will fill the `River Splits` array with all of the river's Spline Points.

{% hint style="info" %}
You should update your river each time you add additional Spline Points.
{% endhint %}

### Branching Into

Within the `River Splits` array, find the closest Spline Point at which you want to have your river branch.

In this example, we're branching into Spline Point `(1)` so we will select the option `Right End`, which will split the river at the end of Spline Mesh `(1)`.

<figure><img src="/files/LlEz3hm8STt7ITigyNa0" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can check the Spline Index Number by enabling `Show Spline Visualizers` and `Show Spline Number`.
{% endhint %}

Next we place down another `BP_FlowmapRiverSystem`. this will be used as the river branching into the previous one.

Within the *Details Panel* of the newly placed river, navigate to the `AttachEnd` input. Select the original river for this input, and then under the `AttachEndIndex` set this to the visually split river Spline Number.

{% hint style="info" %}
You can use the eyedropper tool to select this river.
{% endhint %}

<figure><img src="/files/2mbkhKy4VxO2HgPYboY0" alt=""><figcaption></figcaption></figure>

Press the `Update River` button on the newly placed river and it should snap into location.

We now want to make sure the new river has the right river split to reduce mesh overlap. In this example, `Left End` is the correct choice for `Index [2]`.

<figure><img src="/files/zaMca1VFOt1ZdIM6lRkh" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If you get strange results, try altering the tangents of the spline points.
{% endhint %}

### Branching Out

Branching out of a river is similar to branching into. In this example we branch out of `Index [3]` on the main river using the `Left Start` option.

<figure><img src="/files/9P8kfvyHiq4YLlOUl2js" alt=""><figcaption></figcaption></figure>

From there we place down another `BP_FlowmapRiverSystem` into the scene. This river will be used as the river branching out the main one.

We then set the `AttachBeginning` and `AttachBeginningIndex` to the main river and Spline Point `(3)`.

<figure><img src="/files/LLjxTVYSJXe1osBJoFjk" alt=""><figcaption></figcaption></figure>

Next we press the `Update River` button and set the river split `Index [0]` to the `Right Start` option.

<figure><img src="/files/FnYcfXfNPplHNDEG43IG" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Currently the river will snap into place for branching out which makes it not possible to change the tangents on that point.

Doing some light landscape editing and moving the splines can fix this.
{% endhint %}

You should now have a branched river!

<figure><img src="/files/7e9xBzpNX5Rcn897AAH0" alt=""><figcaption></figcaption></figure>

## Vertex Painting

{% hint style="success" %}
Vertex Painting is available in versions UE4.22-4.27, UE5.0-5.1 and UE5.5+. This includes Water Warping and Foam Painting.
{% endhint %}

{% hint style="danger" %}
Vertex Painting is not available in versions UE5.2-5.4, as Epic removed the feature of Vertex Painting on Spline Meshes.
{% endhint %}

This system uses Epic's built-in `Mesh Paint` Mode for Vertex Painting. We currently have no up-to-date tutorial on using this feature, but Epic's documentation can be found here: <https://dev.epicgames.com/documentation/en-us/unreal-engine/mesh-paint-mode-in-unreal-engine>.


# Fluid Interaction Tool

Documentation for the SHADERSOURCE Fluid Interaction Tool

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/ccf150d7-1098-43bb-9a75-3595881f8c45)
* [Playable Demo](https://drive.google.com/file/d/1p5_0EiuuL1FuZxWOmmtZWn6lZO5U7Fae/view?usp=sharing)
* Videos:
  * Preview Video: [YouTube](https://youtu.be/B6OHPJ5XZyI?si=g0JysR-85eqUTkJb) | [Rumble](https://rumble.com/v484bpr-fluid-interaction-tool-preview.html)
  * Quick-Guide with the [SHADERSOURCE Branching River Tool](/assets-and-plugins/branching-river-tool): [YouTube](https://youtu.be/DksUCrBIORo?si=VWCUIwuSQp4xULne) | [Rumble](https://rumble.com/v459r0o-branching-river-tool-fluid-interaction-tool-quick-guide.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.0+
  * Versions no longer supported (sold as is): 4.16 - 4.27

### Section Links

* [Changelog](/assets-and-plugins/fluid-interaction-tool/changelog)
* [How to Use](/assets-and-plugins/fluid-interaction-tool/how-to-use)


# Changelog

Changelog for Fluid Interaction Tool

\[28 Apr 2024]: Version 1.1 - Versions UE5.4+

* BUG: There appears to be a bug with getting per bone velocity in UE5.4, We have changed this to use actor velocity instead which is not as accurate. When epic hot fixes this bug we will revert back to using per bone velocity.&#x20;
* Added a parameter input to select which trace channel to use
* Changed example content mannequin mesh to the UE5 variant
* Moved asset into \_SHADERSOURCE folder


# How To Use

### Tool Features

1. [Render Targets](/assets-and-plugins/fluid-interaction-tool/how-to-use/1.-render-targets)
2. [Materials](/assets-and-plugins/fluid-interaction-tool/how-to-use/2.-materials)
3. [Fluid Controller](/assets-and-plugins/fluid-interaction-tool/how-to-use/3.-fluid-controller)
4. [Fluid Component](/assets-and-plugins/fluid-interaction-tool/how-to-use/4.-fluid-component)


# Demo Map

Input: Keyboard/Mouse

* W - Walk Forward
* Space - Jump
* Left Mouse - Fire Physics Object


# 1. Render Targets

## Setup for the Fluid Simulation Render Targets

Let's begin by making sure we have the Render Targets we require.

Here you should see the default Render Targets that come with the asset.

![](/files/-MkARV9DZbbkf-nIbO00)

{% hint style="info" %}
These should be:

* RT\_Fluid\_Complete
* RT\_Fluid\_Complete\_N
* RT\_Fluid\_Complete\_Alt
* RT\_Fluid\_Complete\_N\_Alt
  {% endhint %}

{% hint style="warning" %}
These render targets make up the small unit fluid simulation and the larger object fluid simulation layers. If you would like to have more unique fluid sim layers, duplicate or create another set of render targets. for e.g.

* RT\_FluidComplet&#x65;*\_*"fluidname"
* RT\_FluidComplet&#x65;*\_*"fluidname"\_N
  {% endhint %}


# 2. Materials

## Adding the Fluid Interaction Material Function to your water material

To preview this, open up the **M\_Water** Material.

<div align="center"><img src="/files/-MkATnM_rul8ZEHMc8jG" alt=""></div>

Within the Material you will see two **MF\_FluidInteraction** Material Functions.&#x20;

<div align="center"><img src="/files/-MkAUNv8En37rCC3HHAX" alt=""></div>

They use Material Attributes inputs so make sure to create your Material with a **Make/Break Material Attributes Node**. You should also consider enabling **Use Material Attributes** from the *Details Panel* of the Material you wish to add the fluid sim to.

<div align="left"><img src="/files/-MkAVl2YHGdKAVofA3R9" alt=""></div>

You will want to hook up your Render Targets to this node so make sure you use the same in the set. If you would like to have more simulations, you just need another **MF\_FluidInteractions** in your Material. This one currently uses two.

![](/files/-MkAXc1QLTEgFyQrUlZq)

{% hint style="warning" %}
**NOTE: The more Fluid Interaction Material Functions you have in your Material, the more expensive it will be. It's best to stick with just one. In some special use cases you can have more.**
{% endhint %}

You can offset the UV of the fluid interaction and also change the Displacement Intensity.\
**Displacement Intensity** is set to 15 by default in the preview.


# 3. Fluid Controller

## Setting up the Fluid Controller to your scene

Navigate to your *Place Actors* tab and search for "Fluid Controller". Select the **BP\_FluidController** from the list and place it within your scene.

![](/files/-MkAjV6WtD_dbIkpeNaz)

Once placed in the scene, navigate to the *Details Panel*.

Under the *Render Targets* category, make sure your previously created Render Targets are input into the **Fluid Out** parameters.

![](/files/-MkAsk-wE8KjkevXFSAE)

{% hint style="info" %}
You will need to add multiple Fluid Controllers and add the correct **Fluid Out** Render Targets if you plan to have multiple fluid simulations.
{% endhint %}

You can also change some of the fluid simulation settings in this *Details Panel*.

* **Fluid Update Rate**: This will change the rate at which the fluid simulation ticks.
* **Fluid Travel Speed**: This will change the speed at which the fluid ripples travel.
* **Fluid Dampening**: This changes the dampening amount for the fluid ripples.
* **Normal Intensity**: This changes the overall normal calculation intensity for this fluid simulation.


# 4. Fluid Component

## Setting up the Fluid Implementation Actor Component for Skeletal Meshes

Within the overview map or a scene of your own, duplicate out one of the tutorial Skeletal Meshes or place one of your own.

![](/files/-MkFROCMs9Kal_-AQh_H)

Next select the new Skeletal Mesh Actor. Within the *Details Panel*, press the **Add Component** button and select the **BP\_FluidImplementation** from the list.

![](/files/-MkFT9xdwGgWXMKGpcb-)

We will also want some motion to see the fluid simulation work. Click on the Skeletal Mesh and set **Simulate Physics** from the *Details Panel*.

![](/files/-MkFV0o6oWooG-2BH5w3)

Now select the newly added **BP\_FluidInteraction** component.

We want to go to the **Per Bone Trace** category and make sure **Use Per Bone Trace** is enabled.

<div align="center"><img src="/files/-MkFVvUbmlYelAP8MhP-" alt=""></div>

Secondly lets look at the **Fluid Mesh Tag** and set this to whichever name you want for the mesh.

![](/files/-MkFZv3z6yDktWu911cJ)

Next add the same **Fluid Mesh Tag** to your mesh's Component Tags.

![](/files/-MkF_viOwxSOtWSCjrfR)

Make sure to set the Component Tag on your water plane mesh to the correct tag listed on the component.

![](/files/MVjKxixDjGlJZZqmjAF5)

We can now press the play or simulate button and watch the skeletal mesh fall into the water and cause ripples.

![](/files/-MkFbfL7mv77FIk4QIRt)


# Landscape Material Tool

Documentation on the SHADERSOURCE Landscape Material Tool plugin

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

{% hint style="success" %}
L**andscape Material Tool Update 2.0 is now live!** See more information here:

* [Changelog v2.0](/assets-and-plugins/landscape-material-tool/changelog/changelog-v2.0)
* [How To Use (5.4+)](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+)
  {% endhint %}

### Quick Links

* [Fab Link](https://www.fab.com/listings/f4fc1f8b-4487-4974-b106-34831bc523b7)
* [Playable Demo](https://drive.google.com/file/d/19_Uq8sPZYlraIwY0JAPqe4L6FaCCjrZn/view?usp=sharing)
* Videos:
  * Preview Video (Update 2.0): [YouTube](https://youtu.be/2RM78yfpOxA) | [Rumble](https://rumble.com/v624m5b-landscape-material-tool-update-2.0-preview.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.4+
  * Versions no longer supported (sold as is): 4.26 - 4.27, 5.0 - 5.3

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/landscape-material-tool/changelog)
* [How to Use (5.4+)](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+)
* [How to Use (Legacy 4.26-5.3)](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3)


# Changelog

**\[23 December 2024] Version 2.0 - UE5.4+**

* Huge overhaul for the whole Landscape Material Tool!
* [See the full changelog here!](/assets-and-plugins/landscape-material-tool/changelog/changelog-v2.0)

**\[25 April 2024] Version 1.2b - UE5.4+**

* Fixed bug that caused compile errors with missing include files
* Removed deprecated classes
* Renamed some classes to bring them into line with SHADERSOURCE naming conventions
* Added Enable Tessellation toggle

**\[10 April 2024] Version 1.2a - UE5.3+**

* Fixed up class names to bring them in line with new SHADERSOURCE naming conventions

**\[10 April 2024]: Version 1.1b - UE5.1-UE5.3**

* Fixed up some SHADERSOURCE branding in the tool
* Added to the new SHADERSOURCE menu

**\[06 March 2024]: Version 1.2 - UE 5.3+**

* Added Support for [Nanite Displacement on Landscapes](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/setup-and-using-nanite-displacement)
* Added Documentation Button
* Added Marketplace Button

**Version 1.1a - UE 5.1+**

* Minor hotfix to fix undo not working on many features across the tool

**Version 1.1 - UE 5.1-5.3**

* Fixed crash on material compile
* Updated triplanar mapping with correct normal solution

**Version 1.0 - Versions 4.26+**


# Changelog v2.0

\[23 December 2024] Version 2.0 - UE5.4+

{% hint style="info" %}
See the [documentation for the Landscape Tool 2.0+](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+) for more information.
{% endhint %}

### Bug Fixes

* \[Bug Fix] Fixed bug where tool did not take into account Source Control locks before trying to save assets.
* \[Bug Fix] Deleting a Material or Layer from the Content Browser while it's open in the Landscape Material Tool Editor Mode will crash the editor.
* \[Bug Fix] Reverting a Material or Layer in Source Control while the asset is open in the Landscape Material Tool Editor Mode will crash the editor.
* \[Bug Fix] Fixed an issue where very occasionally the editor might crash on closing when the Landscape Material Tool Editor Mode is active.
* \[Bug Fix] Fixed a crash when clicking Reload Level in an Untitled/Unsaved map.
  * Reload Level will also prompt to save an Untitled/Unsaved map as an asset.
  * Reload Level will show a warning if the level can't be reloaded.

### General

* Massive cleanup, rework, and optimisation of code.
* Renamed categories to remove redundant descriptor 'Landscape'.
* Added Editor Notifications for many actions.
* Renamed classes, structs, enums, namespaces, and related files with new Shadersource naming convention.
* Updated icons from UE4-style icons to UE5-style icons.
* Added settings to change defaults in Project Settings.
* Added prompts to save previous Material/Layer if dirty when Material/Layer references are changed and when exiting the Editor Mode.
* Updated Copyright Notice.
* Rewrote all [documentation to be better and reflect the new version of the Landscape Material Tool](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+).
  * This includes a [Quick Tutorial](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/quick-tutorial).
* Fixed numerous spelling and grammar mistakes throughout the code.

### Editor Mode Header

* Added SHADERSOURCE Header to the Editor Mode.
  * Added tool name.
  * Added SHADERSOURCE branding.
  * Added Quick Select of SHADERSOURCE Editor Modes to easily switch between.
  * Added Documentation button.
  * Added Store Page button.
* Added the tab and action buttons to the Editor Mode header so that action buttons don't disappear when scrolling down in the tool.
* Added shortcut button to header to open the [SHADERSOURCE Texture Tools](/assets-and-plugins/texture-tools) if the plugin is enabled/loaded, or open its Fab page if it is not.

### Landscape Interaction

* When the Master Material or Material Instance is manually set, it now updates the material on the selected landscape too (optional).
  * Updating the Landscape Material through the normal Details Panel for the Landscape Actor now automatically updates the Editor Mode panel.
* Landscape Reference now works combined with Viewport selection: Selecting a Landscape (or Landscape Streaming Proxy) in the Level Editor Viewport will update the Landscape Reference in the Editor Mode, and manually selecting a Landscape from the dropdown will select the Landscape in the Level Editor Viewport.
* Added support for Landscape Streaming Proxies.

### Tools Tab

* Removed the Tools tab (relocated everything to other areas of the Editor Mode).
  * Removed Gather Materials Button completely - this now happens automatically when the Landscape Actor Reference changes (optional).
  * Landscape Reference is now in Editor Mode header.
  * Reload Level button is now in Editor Mode header.
* Removed Live Link option.
* Added a new Instance tab.
  * Moved Material Instance Reference to the Instance Tab.
  * Added Material Instance Parameters to the Instance Tab.
  * Added tooltip to show Material Instance stats when hovering the Material Instance.

### Layer Tab

* Most of the Layer Material Function backend has been reworked and remade.
* Added Ability to disable specific texture maps if they are not used (this is reflected in the code which saves shader instruction calls)
* Complete Overhaul of Triplanar Mapping / World Aligned Textures with new Advanced Triplanar mapping options.
* Removed Texture Variation for new Swizzle and Blotch based tiling.
* Added Ability to blur Heightmaps.
* Overhauled the Global Distance Swap.
  * Ability to use the detail textures for Global Distance Swap.
  * Ability to toggle on the full Global Parameter set
* Variable "Paint Over Previous" has been renamed to "Noise Layer" with its description updated to better reflect its functionality.
  * Also moved to the Layers context menu.
* Moved New, Reset, Apply, Create Copy, Copy Layer Data to the Layer selection in the header.
  * "Revert" is now "Reset" to more accurately reflect functionality.
  * "Save" is now "Apply" to more accurately reflect functionality.
  * "Save As" is now "Create Copy" to more accurately reflect functionality.
  * "Gather" is now "Copy Layer Data" to more accurately reflect functionality.
* Added ability to select Layer to Edit from the Master Material in Layers Tab context menu.
* Added '\*' to display when the Layer is dirty/unsaved.
* Added new tooltip with extra information about the selected Layer:
  * Content Browser Path
  * Materials referencing this Layer
  * Layer details in the selected Master Material.
* Overlay category is now called Overlay Blend Parameters and are hidden if the current layer is not an overlay or cliff blend in the Master Material.
* Cliff category is now called Cliff Blend Parameters and are hidden if the current layer is not a cliff blend in the Master Material.
* Added Undo to Reset and Copy Layer Data buttons.
* Added confirmation popups for Reset Layer and Copy Layer Data buttons.
* Copy Layer Data no longer reads from the selected asset in the Content Browser, instead it now has its own context menu for selecting a Layer to copy the data from.
* Falloff Texture, Falloff Texture UV Scale, and Falloff Texture Channel are now disabled when Falloff Use Height Map is unticked.
* Added ability to Rename a Landscape Layer.

### Material Tab

* Added ability to enable Fully Rough Material
* Moved the Master Material reference to the Editor Mode header so that it's visible in all tabs.
* Moved the Layers array into a new panel that displays them in order like Photoshop layers.
  * Simplified UI layout.
  * Filter added to Layers selection.
  * Added context menu with multiple new options:
    * Edit Layer: Open this Layer in the Layers tab
    * Shift Layer Up: Moves this layer up one in the hierarchy
    * Shift Layer Down: Move this layer down one in the hierarchy
    * Delete Layer: Deletes this layer from the Master Material
    * Insert Layer: Insert a new blank layer here
    * Layer Via Copy: Creates a new layer by duplicating this layer
    * Layer Via Copy & Replace: Creates a new layer by duplicating this layer and then replaces this layer with the new duplicated copy.
* Moved New, Save, Compile buttons to the Material selection in the header.
* Added '\*' to display when the Material is dirty/unsaved.
* Added Undo to Reset Master Material button.
* Grass Types and Physical Materials have updated UI.
* \[Experimental]: Added [Material Converter](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab/convertible-material) to convert other Landscape Materials into Materials that work with the Landscape Material Tool.

### Example Content

* Recreated all new Example Content to better reflect the new Landscape Material Tool update.

{% hint style="info" %}
See the [documentation for the Landscape Tool 2.0+](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+) for more information.
{% endhint %}


# How To Use (5.4+)

This documentation is for update 2.0+, applied to 5.4+.

The SHADERSOURCE Landscape Material Tool adds an Editor Mode to UE5 that handles easy creation and modification of Landscape Materials.

### Overview

The Landscape Material Tool is split into three tabs:

* **Material**: Edit parameters in the selected Material OR convert the selected Material into a Landscape Material Tool-compatible Material.
* **Instance**: Edit the parameters of a Material Instance of a Landscape Material Tool-compatible Material.
* **Layer**: Edit a Landscape Material Tool-compatible Landscape Layer.

### Workflow

1. Create/load a Landscape Material into the Landscape Material Tool.
2. Create Landscape Layers through the Landscape Material Tool to apply to the Material.
3. Add Landscape Layers to the Material and moddify other Material Parameters through the Landscape Material Tool.
4. Create a Material Instance from the Material and apply to the Landscape or Landscape Streaming Proxy.

### Tutorials

* [Quick Tutrorial](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/quick-tutorial)

### Technical Information/Descriptions of Variables, Functions, Actions

* [Plugin Content](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/plugin-content)
* [Landscape Material Tool Editor Mode](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode)
  * [Material Tab](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab)
    * [Valid Material](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab/valid-material)
    * [Convertible Material](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab/convertible-material)
  * [Instance Tab](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/instance-tab)
  * [Layer Tab](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/layer-tab)
* [Landscape Material Tool Project Settings](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-project-settings)


# Quick Tutorial

On this page we will cover how to use the Landscape Material Tool Update 2.0+

{% hint style="warning" %}
Runtime Virtual Texturing is used for this tutorial, see [**here**](https://dev.epicgames.com/documentation/en-us/unreal-engine/virtual-texturing-settings-and-properties-in-unreal-engine#projectsettings) on how to enable it within your project settings.
{% endhint %}

## Example Level

{% hint style="info" %}
For this tutorial we will use the provided level **Islands\_Demo\_RVT.**
{% endhint %}

<figure><img src="/files/OQnsVaX7DLlXkfm3LxAq" alt=""><figcaption></figcaption></figure>

Begin by opening the scene, selecting the landscape, and removing the existing Material. It's advisable to save the level as a new file to retain a reference for future comparisons.

## Setup Blank Material

Begin by creating a new blank Material from the Material Tab.

<figure><img src="/files/vPopH4SeuGN3UcS7nE17" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
To duplicate a Landscape Material, select an existing Material and click `Create a New Landscape Material`
{% endhint %}

Choose a name for the `Landscape Material` and save it.

<figure><img src="/files/qegeIgCYvMmfXS1LuRou" alt=""><figcaption></figcaption></figure>

Once the `Material Tab` displays your new material without layers, proceed to assign this Material to the current landscape.

### Enable Runtime Virtual Texturing

For this Material, we will use `Runtime Virtual Texturing`, which is already added to the scene and landscape. However, we will need to enable it within the Material itself, as it is off by default.

Navigate to the `Runtime Virtual Texture` options under the `Material Tab` and enable the `Use Runtime Virtual Texture` toggle. By default, it uses the plugin's `Runtime Virtual Texture Sample`, but you can swap this out for your own project's sample.

<figure><img src="/files/9fmwLRG2nA66QWM2e8Nw" alt=""><figcaption></figcaption></figure>

Before we start adding layers to the Material, we will want to switch over to the `Layers Tab` .

## Creating Layers

### Base Grass Layer

In the `Layers Tab`, go to the sub-toolbar in Layer Reference and create a new blank layer.

<figure><img src="/files/Vys3c9sI9qHaiMXJSorD" alt=""><figcaption></figcaption></figure>

For this layer, save it as `LL_Grass_Base`.

In this tutorial, we'll use the textures included with the plugin, but you're welcome to use your own.

Navigate to `ExampleContent/Textures/Grass`, select `T_GrassBase_basecolor`, and assign it to the `Diffuse` input on the new layer.

<figure><img src="/files/CmwVn14JnnJifhpKoDLg" alt=""><figcaption></figcaption></figure>

Repeat this step for the `_normal` texture by assigning it to the `Normal` slot in the layer.&#x20;

#### Channel Packed Texture Setup

The `_RHA` texture is a channel-packed texture containing `Roughness` (R), `Height` (G), and `Ambient Occlusion` (B) in the respective RGB color channels.

To enable channel packing on the layer:

1. Navigate to the `Detail Parameters`.
2. Find the option related to your channel-packed texture, such as `Roughness`.
3. Click the `Use Channel Packing` toggle.

You will notice that the `Roughness` input has been replaced with a `Channel Packed Texture` input.

<figure><img src="/files/NezdeX9pR47F8kubtn3m" alt=""><figcaption></figcaption></figure>

Assign the `_RHA` texture to this new `Channel Packed Texture` input. By default, it has set `Roughness` to the `Red` color mask channel, which is the correct channel we want.

Repeat this step for the `Height` and `Ambient Occlusion` parameters. You should have something like this:

<figure><img src="/files/IhKjYvwwnUr2hDtL5UZf" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Ensure that the selected color channel mask accurately corresponds to the channel-packed texture.

Explanation and Examples of Channel Packing: <http://wiki.polycount.com/wiki/ChannelPacking>
{% endhint %}

To remove the `Specular` Input, go to the `Inputs` section at the top of the `Layer Settings` and toggle off the `Use Specular` input. Doing this will hide the `Specular` texture input and disable the specular texture input within the layer itself, reducing shader instructions.

<figure><img src="/files/DZntPnM9bvZJHQrSBBOa" alt=""><figcaption></figcaption></figure>

Save the layer from the `Layer Reference` sub-toolbar.&#x20;

Return to the `Material` tab and click the `Add Layer` button. Assign the new layer as `LL_Grass_Base`. From the drop-down menu that initially displays `Standard Weight Blend`, select `Standard Alpha Blend`, as this is the optimal blending method for the base layer of an LMT Material.

<figure><img src="/files/VwC1AjL5DdZ0iiqFDDew" alt=""><figcaption></figcaption></figure>

Click the `Save and Compile` button from the `Master Material` sub-toolbar.

<figure><img src="/files/nP0t6Ur6eq2FI88kHhqt" alt=""><figcaption></figcaption></figure>

### Fixing Black Landscape

Upon compilation, you may observe that the landscape appears black. This is typical, as no layer weights have been assigned to the landscape.

To resolve this issue, go to the `Paint` tab in the standard `Landscape` editor mode, remove any existing `Paint Layers`, and click the `Create Layers From Assigned Materials` button

<figure><img src="/files/q57EILcXZy6gSOD3io79" alt=""><figcaption></figcaption></figure>

After removing any existing layers and selecting the `Create Layers From Assigned Materials` button, you should see a `Grass_Base` layer and a `Wetness_Paint` layer. Next, select the `Create Layer Info` button and choose the `Non Weight-Blended Layer` option.

<figure><img src="/files/692dYPuWKVpxAz3eFCs4" alt=""><figcaption></figcaption></figure>

Save this in your preferred location.

Right click on the `Grass_Base` paint layer and select the `Fill Layer` option.

<figure><img src="/files/A2jiRsAykTXOkSejzW78" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
If your landscape still appears black, please verify that `Runtime Virtual Texturing` is enabled in your project settings.
{% endhint %}

The landscape should now be covered with the `Grass_Base` layer that was recently created and assigned.

<figure><img src="/files/53g5PZzO0MjdkdGYLvfS" alt=""><figcaption></figcaption></figure>

### Editing Layers

Return to the `Layers` tab, and click on the `Additional Layer Actions` dropdown button. Under `Edit Layer In Material`, select the `LL_Grass_Base` layer that we previously created.

{% hint style="info" %}
This is an easy way to switch between layers that are assigned to the Master Landscape Material.
{% endhint %}

<figure><img src="/files/47QPNWLVnJig34Dxk5xc" alt=""><figcaption></figcaption></figure>

#### UV Tiling and Advanced Tiling

Lets start by getting the layer to look the way we want with the UV tiling.&#x20;

Navigate to the `Detail Parameters -> UV` options and set the `UV Tiling` parameter to a value that suits your needs. I chose a value of 0.25. Remember to save to see the updates on the landscape.

{% hint style="info" %}
The Manny Skeletal Mesh serves as an ideal reference for determining scale.
{% endhint %}

<figure><img src="/files/cT0FN3uOzhZlnqNogz5M" alt=""><figcaption></figcaption></figure>

To address the noticeable repetitions in the texture with standard tiling, proceed to the `Advanced Tiling` option located within the `UV` parameters.

Two advanced tiling options are available: `Blotch Tiling` and `Swizzle Tiling`

* **Blotch Tiling**: This technique employs a three-layered, world-aligned mask texture to darken specific areas, effectively disrupting texture tiling
* **Swizzle Tiling**: This approach utilizes a dual-sample system, rotating one sample by 90 degrees and optionally scaling it, then applying it according to a specified mask.

In this example, I will select `Swizzle Tiling`, retaining the default parameters.

<figure><img src="/files/NyX2ToUtwd5lVGbx6nsg" alt=""><figcaption></figcaption></figure>

This looks much better and less repetitive. However, there's one more step we can take to further reduce repetition

#### Global Distance Swap

The `Global Distance Swap` feature is enabled by default and can be found in the `Layer Settings` section at the top of the Details Panel. While you have the option to disable it, this tutorial will demonstrate its utilization.

Navigate to the `Global Parameters` options. You will notice that there are similar parameters here as in the `Detail Parameters` but with some additions.

Set the `UV Tiling` parameter to approximately 0.025. Then, navigate to the `Advanced Tiling` section and enable the `Advanced Tiling: Use Blotch` option.

<figure><img src="/files/Z016uMBFovDHIB8keuy3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Please review and adjust the provided settings as needed before moving forward.
{% endhint %}

### Overlay Sand Layer

With the current `LL_Grass_Base` layer referenced click the `Save As` button in the sub-toolbar which will create a copy of this layer as a new layer. Save this layer as `LL_Sand_Dry` .&#x20;

<figure><img src="/files/MMsUWxvdc1cyGI2YUTWg" alt=""><figcaption></figcaption></figure>

Return to the `Material Tab`, add this layer to the layers list, set the blending mode to `Overlay Blend`, and then save/compile the Material. It should resemble the following:

<figure><img src="/files/q3vYI7BQ3E1lqiQPfckJ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Overlay layers, akin to Photoshop layers, are computed in a sequential manner. This approach facilitates advanced techniques such as world height blending and automatic cliff generation.
{% endhint %}

You will need to repeat the steps [**here**](#base-grass-layer) to set the new textures to the dry sand located: `ExampleContent/Textures/Sand/T_DrySand` .

<figure><img src="/files/7zucYLKQBGf47lt75WNl" alt=""><figcaption></figcaption></figure>

You will then have to repeat the steps [**here**](#fixing-black-landscape). but without removing the existing paint layers and do not fill the paint layer.

<figure><img src="/files/CzTP0pryR3vdYEmiBDYH" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
In the future, if you have pre-existing layers, you can complete this step at the end while creating a new Material.
{% endhint %}

Return to the `Landscape Material Tool` and continue editing the `LL_Sand_Dry` layer.

Navigate to the `Overlay->World Height` parameter category and enable `Use World Height Blend`.

<figure><img src="/files/14xC6lg6Bc0PK5v9hzVx" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
World Height Blend is a technique that can be used to automatically paint down snow or sand based on the World Height Z location.
{% endhint %}

Enable `World Height: Flip Direction` and set the `World Height: Offset` to something like `-3600`.

<figure><img src="/files/jLhzqvw8uuFVyxZa96cO" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
An easy way to figure out what height you need is using an actor in world and taking the Z location from that.
{% endhint %}

By modifying the parameters in this category I came to these results:

<figure><img src="/files/vGQ66tfqDnAl8LYwqooJ" alt=""><figcaption></figcaption></figure>

### Overlay Cliff Layer

Begin by repeating the steps [**here**](#overlay-sand-layer). Name the layer `LL_Cliff` and use the `Cliff` textures located in `ExampleContent/Textures/Cliff`. Do not enable `World Height` for this layer.

Within the `Material Tab` make sure the layer blending is set to `Cliff Blend`.

<figure><img src="/files/T9ERypbR6s7nYOVmGo0J" alt=""><figcaption></figcaption></figure>

Once the layer is assigned and the Material is compiled, you should already have cliffs displaying.

<figure><img src="/files/DyLB7b5zDsFF738gwdOT" alt=""><figcaption></figcaption></figure>

You will find a new parameter category called `Overlay Cliff`. From here you can alter things such as the cliff slope angle and the amount of falloff the cliff has.

These are the parameters I used to get the desired results:

<figure><img src="/files/d0O7I7nxTVWtqiDzzLdA" alt=""><figcaption></figcaption></figure>

#### World Aligned / Triplanar UV's

When dealing with cliffs, we want to ensure that there is no smudging on sharp, vertical faces.

For example:

<figure><img src="/files/mmNJkbBj78sT4HWyvoN5" alt=""><figcaption></figcaption></figure>

To address this, we can use `Triplanar Mapping` or `World Aligned Textures`.

Under your `Detail Parameters->UV` and `Global Parameters->UV` there will be an additional category called `Triplanar` .

Enable `Use Triplanar Mapping` and set the texture size accordingly. I set my `Detail` to `1024` and my `Global` to `4096`.

<figure><img src="/files/NE3Ochlv4kvV6OBo87A3" alt=""><figcaption></figcaption></figure>

This may not fully resolve the issue, but it should suffice for most situations.

{% hint style="info" %}
This plugin works well with adjusting parameters to achieve desired results. For example, try enabling `Use Advanced Triplanar Mapping` and modifying the parameters beneath that to see if it works better for you.
{% endhint %}

You should now have a basic understanding of how to create a `Landscape Material` using the `Landscape Material Tool`.

We recommend viewing the example Materials provided and studying how they are set up, as they go more in-depth with the features provided with this plugin.

You can also explore the rest of the documentation for more details on different features in the Landscape Material Tool 2.0 Update.


# Plugin Content

This documentation is for update 2.0+, applied to 5.4+.

<figure><img src="/files/L9L1nT3F2gTe6Hw8qJxA" alt=""><figcaption></figcaption></figure>

### Base

* Functions: Material Functions used in the default Materials/Layers
* RVT: Default Runtime Virtual Texture data
* Textures: Default textures for new Materials/Layers
* *LL\_Base*: Default Material Function to duplicate when creating a new Layer
* *M\_LandscapeMaterialBase*: Default Material to duplicate when creating a new Material

### Example Content

* {TODO: This needs updating}


# Landscape Material Tool Editor Mode

This documentation is for update 2.0+, applied to 5.4+.

<details>

<summary>Accessing the Landscape Material Tool Editor Mode</summary>

The Landscape Material Tool Editor Mode can be accessed either via the Editor Modes dropdown or the SHADERSOURCE menu.

Editor Modes dropdown:

![](/files/LmIK6H3w2PBxSrcBcela)

SHADERSOURCE menu (Level Editor Toolbar):

![](/files/DHGnk0Ygh5v4tsJelKBL)

SHADERSOURCE menu (Window menu):

![](/files/Vbqc55VpHPff8VmABWsZ)

</details>

<details>

<summary>Landscape Material Tool Editor Mode Header Content</summary>

![](/files/hbypXwxyxyusgFdUGu3s)

1. **SHADERSOURCE Modes Menu**: Finds and creates buttons to easily switch between SHADERSOURCE Editor Modes.
2. **Documentation button**: Opens the tool's documentation page in your default browser.
3. **Store Page button**: Opens the tool's Fab store page in your default browser.
4. **Version number**: Show's the tool's current version number so that it can be compared to the latest version.
5. **Open Texture Tools button**: If the [*SHADERSOURCE: Texture Tools*](/assets-and-plugins/texture-tools) plugin is installed, this button will open the Texture Tools window. If it is not installed, it will open the *SHADERSOURCE: Texture Tools* Fab store page in your default browser.

</details>

<details>

<summary>Selected Landscape</summary>

![](/files/lGVgtahF2cFX7p7XuGXv)

1. When ticked, the Landscape Material Tool will automatically load the Material data from a Landscape or Landscape Streaming Proxy when it is selected in the Viewport.
2. Manually select a Landscape or Landscape Streaming Proxy to load the Material data into the Landscape Material Tool.
3. Pick a Landscape or Landscape Streaming Proxy in the viewport to load the Material data into the Landscape Material Tool.
4. If a Landscape Streaming Proxy is selected, instead select the parent Landscape actor and load its Material data into the Landscape Material Tool.
5. Reload the current level (with a prompt to save changes).

</details>

<details>

<summary>Master Material</summary>

![](/files/ABSWBEOPnnKhsDkBqk31)

1. Load a Material's data into the Landscape Material Tool.\*
2. Load the Material currently selected in the C*ontent Browser* into the Landscape Material Tool.
3. Browse to the currently-selected Material in the *Content Browser*.
4. Create a new Landscape Material using the Landscape Material Tool's default Material.
5. Open the currently-selected Material in the Material Editor.
6. Save and compile the currently-selected Material.
7. Expand or collapse the Master Material selection box.

\*When a Material is selected, the box has four states:

![](/files/PhVNxgn8ppfcMvhCEdsR)![](/files/LvwvkgyyeQNmqsGa2PgB)

![](/files/OGzFXE1IvGEEnXUhmpEQ)![](/files/hrXMrMhurG69kgp7FGBt)

* <mark style="color:red;">Invalid Material</mark>: This Material is not compatible with the Landscape Material Tool.
* <mark style="color:yellow;">Compile to Update!</mark>: This Material has been created in a past version of the Landscape Material Tool; compiling the Material through the Landscape Material Tool will automatically update it.
* <mark style="color:green;">Valid Material</mark>: This Material has been created in this version of the Landscape Material Tool and no further action is needed.
* <mark style="color:blue;">Convertible Material</mark>: The Landscape Material Tool has detected that this Material is a Landscape Material that has *not* been made by the Landscape Material Tool but may be able to be converted into a Valid Material.

</details>

<details>

<summary>UI</summary>

The rest of the Landscape Material Tool is split into three tabs:

* [**Material**](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab): Edit parameters in the selected Material OR convert the selected Material into a Landscape Material Tool-compatible Material.
* [**Instance**](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/instance-tab): Edit the parameters of a Material Instance of a Landscape Material Tool-compatible Material.
* [**Layer**](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/layer-tab): Edit a Landscape Material Tool-compatible Landscape Layer.

</details>


# Material Tab

This documentation is for update 2.0+, applied to 5.4+.

The Material Tab looks different depending on the state of the Master Material selection:

* Invalid Material: The tab will show no parameters, only a message which says, "*Select a valid Landscape Material"*.
* [Valid Material/Compile to Update!](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab/valid-material): Parameters to edit for this Landscape Material.
* [Convertible Material](/assets-and-plugins/landscape-material-tool/how-to-use-5.4+/landscape-material-tool-editor-mode/material-tab/convertible-material): Parameters and actions to convert a Landscape Material into a Landscape Material Tool-compatible Material.


# Valid Material

This documentation is for update 2.0+, applied to 5.4+.

### Layers

<figure><img src="/files/MxwYWQyH9sXEX2DV1b9r" alt=""><figcaption></figcaption></figure>

Layers are laid out like the Layer Palette in Photoshop or similar programs, showing them in order from top to bottom to eaisly visualise the order. Click **Add Layer** to add a new Layer to this Material.

#### Layer Entry

<figure><img src="/files/yt5yZDv99RP7ZeIRQcvY" alt=""><figcaption></figcaption></figure>

1. Select a valid Landscape Layer to add it to this Material.
2. Load the Landscape Layer (Material Function) currently selected in the C*ontent Browser* into this Material.
3. Browse to this Landscape Layer in the *Content Browser*.
4. The Blend Type of this Layer:
   1. **Standard Weight Blend**: Unreal Engine's standard Weight Blend type.
   2. **Standard Height Blend**: Unreal Engine's standard Height Blend type.
   3. **Standard Alpha Blend**: Unreal Engine's standard Alpha Blend type.
   4. **Overlay Blend**: This works similar to how Photoshop Layers work. They will always be on top of Standard Layers and they will stack on top of each other depending on where they are in the hierarchy.
   5. **Cliff Blend**: The same as an Overlay Blend but with additional parameters for cliffs.
5. Layer Actions Menu (see below).

#### Layer Actions Menu

<figure><img src="/files/7Z3Pj0pZpMRXskuomYno" alt=""><figcaption></figcaption></figure>

* MOVEMENT
  * **Shift Layer Up**: Move this layer up one in the hierarchy.
  * **Shift Layer Down**: Move this layer down one in the hierarchy.
* ACTIONS
  * **Edit Layer**: Open this Layer in the Layers tab.
  * **Remove Layer**: Removes this Layer from the Master Material.
  * **Insert Layer**: Insert a new blank Layer here.
  * **Duplicate Layer**: Create a new Layer by duplicating this Layer.
  * **Duplicate & Replace**: Create a new Layer by duplicating this Layer and then replace this Layer with the new duplicated copy.
* PARAMTERS
  * **Noise Layer**: Applies this Layer as a Noise Layer to the Layer underneath it.

### Grass Types

<figure><img src="/files/iQX0kTP6x6CXSguTX9BB" alt=""><figcaption></figcaption></figure>

While Grass Types are laid out like Layers, their order doesn't actually matter as they are applied to Layers through the Layers Dropdown. Click **Add Grass Type** to add a new Grass Type to this Material.

#### Grass Type Entry

<figure><img src="/files/6OAHcG7J6bgWbA1fGeb6" alt=""><figcaption></figcaption></figure>

1. Select a Grass Type to add it to this Material.
2. Load the Grass Type currently selected in the C*ontent Browser* into this Material.
3. Browse to this Grass Type in the *Content Browser*.
4. Layers Dropdown (see below).
5. Delete this Grass Type from this Material.

#### Layers Dropdown

<figure><img src="/files/qLMsnM3cTZTKPbX07QnZ" alt=""><figcaption></figcaption></figure>

* APPLY TO LAYERS: Select which Layers to apply this Grass Type to.
* PARAMETERS:
  * **Noise Mask**: Noise Mask to add to the Grass Type.
  * **Noise Mask Texture Size**: The Texture Size of the Noise Mask.
  * **Noise Mask Contrast**: The Contrast of the Noise Mask.
  * **Noise Channel Mask**: Which Texture Channel to read the Noise Mask from.

### Physical Materials

<figure><img src="/files/Vli322wdzIJefntciBrf" alt=""><figcaption></figcaption></figure>

While Physical Materials are laid out like Layers, their order doesn't actually matter as they are applied to Layers through the Layers Dropdown. Click **Add Physical Material** to add a new Physical Material to this Material.

#### Physical Material Entry

<figure><img src="/files/D81Qnawd8ni4H98JfPGh" alt=""><figcaption></figcaption></figure>

1. Select a Physical Material to add it to this Material.
2. Load the Physical Material currently selected in the C*ontent Browser* into this Material.
3. Browse to this Physical Material in the *Content Browser*.
4. Layers Dropdown (see below).
5. Delete this Physical Material from this Material.

#### Layers Dropdown

<figure><img src="/files/OsliucLMURQ8itaJ5YmY" alt=""><figcaption></figcaption></figure>

* APPLY TO LAYERS: Select which Layers to apply this Physical Material to.

### Material Parameters

* Settings
  * **Use Tangent Space Normals**: Toggle to use tangent space normals for this Landscape Material
  * **Fully Rough Material**: Toggle to force the Material to be completely rough (useful for stylized situations)
* Runtime Virtual Texturing
  * **Use Runtime Virtual Texture**: Toggle to use this Landscape Material with UE's Runtime Virtual Texture System.
  * **Output Tangent Space Normals**: Toggle to output tangent space normals for UE's Runtime Virtual Texture System.
  * **Runtime Virtual Texture Sample**: Runtime Virtual Texture sample for Diffuse, Specular, Roughness.
* Displacement
  * **Global Displacement Texture Power**: Applies to all layers: Texture Brightness Curve.
  * **Global Displacement Texture Intensity**: Applies to all layers: Texture Brightness Multiply.
  * **Global Displacement Height Offset**: Applies to all layers: Overall displacement height offset.
  * Nanite
    * **Nanite Displacement Enable**: Applies to all layers: Enable Nanite displacement on this material. !REQUIRES MATERIAL RECOMPILE!
    * **Nanite Displacement Magnitude**: Applies to all layers: Overall Nanite displacement magnitude. !REQUIRES MATERIAL RECOMPILE!
    * **Nanite Displacement Center**: Applies to all layers: Nanite displacement center. !REQUIRES MATERIAL RECOMPILE!

### Satellite

* Settings
  * **Enable Satellite Overlay**: Enable Satellite Overlay Layer (used for whole Landscape Texture).
  * **Landscape Resolution**: Input the Landscape Resolution to match the Texture to the Landscape.
* Texture Inputs
  * **Diffuse**: Satellite Diffuse Texture Input.
  * **Normal**: Satellite Normal Map Texture Input.
  * **Specular**: Satellite Specular Map Texture Input.
  * **Roughness**: Satellite Roughness Map Texture Input.
  * **Channel Packed Texture**: Satellite Channel Packed Texture Input.
* Specular
  * **Offset**: Specular offset for the Satellite Overlay.
  * **Use Channel Packing**: Specular map for the Satellite Overlay uses channel packing.
  * **Channel Packing Mask**: The channel mask to use for the specular map.
* Roughness
  * **Offset**: Roughness offset for the Satellite Overlay.
  * **Use Channel Packing**: Roughness map for the Satellite Overlay uses channel packing.
  * **Channel Packing Mask**: The channel mask to use for the roughness map.
* Distance Blend
  * **Fade Range**: The fade range to change between the Satellite Overlay and the standard Landscape Material.
  * **Fade Hardness**: The fade sharpness/hardness to change between the Satellite Overlay and the standard Landscape Material.


# Convertible Material

This documentation is for update 2.0+, applied to 5.4+.

{% hint style="info" %}
The Material Converter is Experimental and may not work in all scenarios. We plan on further development of this tool in the future as it gets used and tested more.
{% endhint %}

### Texture Tags

<figure><img src="/files/4nE0hMWy1POFuIiMoJ1w" alt=""><figcaption></figcaption></figure>

The **Texture Tags** are what the tool looks for to determine which Textures to place where in the layers. The tool expects Textures to be named with one of the suffixes in this list and allows you to add more to fit your own naming convention.

### Find Textures

<figure><img src="/files/RQgGRHfcD3XLSe1xOYHx" alt=""><figcaption></figcaption></figure>

**Find Textures** will search through the **Master Material** and gather all of the Textures, sorting them based on the layer that they come from. It will then place them in the *Found Layers* array to allow you to double check that it's all correct before converting.

### Found Layers

<figure><img src="/files/GLJsqT8vNuue8gLm6wBH" alt=""><figcaption></figcaption></figure>

The **Found Layers** array uses the data gathered from **Find Textures** to allow you to modify the Layer Data before converting them into Landscape Layers compatible with the Landscape Material Tool.

### Other Textures

<figure><img src="/files/AIZ5SdKuh0ADpsXi18O8" alt=""><figcaption></figcaption></figure>

The **Other Textures** array holds extra Textures found in the **Master Material** from **Find Textures** that the tool could not identify so that you can manually add them into the new Layers if they are needed.

### Convert To Layers

<figure><img src="/files/XD6I9QQHkUCOK2LZ64mB" alt=""><figcaption></figcaption></figure>

The **Convert to Layers** button uses the data in **Found Layers** to generate Landscape Layer assets that are compatible with the Landscape Material Tool.

<figure><img src="/files/6IHlo8KAjFeh9iFJjFso" alt=""><figcaption></figcaption></figure>

It will first ask for an Output Path for the new generated assets.

<figure><img src="/files/DRVsIVwcrYflEB5CZSSc" alt=""><figcaption></figcaption></figure>

It will then create the Layer Assets in this location ready to be plugged into a Material created by the Landscape Material Tool.

{% hint style="info" %}
See this tutorial to see how to set up a new Material with these Layers: [Create New Landscape Material with Layers from the Material Converter](broken://pages/feHurVmdle432VwJWO3m).
{% endhint %}


# Instance Tab

This documentation is for update 2.0+, applied to 5.4+.

{% hint style="info" %}
The Instance Tab is a helper that shows the Parameters of the selected Material Instance rather than having it open in a separate editor.
{% endhint %}

### Material Instance

<figure><img src="/files/Q1ZoR6GID0rDvAtaerhd" alt=""><figcaption></figcaption></figure>

1. Load a Material Instance's data into the Landscape Material Tool.\*

   *Note: This will also update the Master Material to the Material Instance's Parent Material.*
2. Load the Material Instance currently selected in the C*ontent Browser* into the Landscape Material Tool.

   *Note: This will also update the Master Material to the Material Instance's Parent Material.*
3. Browse to the currently-selected Material Instance in the *Content Browser*.
4. Create a new Material Instance from the selected **Master Material**.

\*When a Material Instance is selected, the box has three states:

![](/files/qjfg0sXBsb3F9lcBfz5U)![](/files/lNjnmnei56FS8y7OHPJW)

![](/files/O5j81YfYrJop6MO0JvUS)

* <mark style="color:red;">Invalid Instance</mark>: This Material Instance (and its Parent Material) is not compatible with the Landscape Material Tool.
* <mark style="color:yellow;">Compile Master to Update!</mark>: This Material Instance's Parent Material has been created in a past version of the Landscape Material Tool; compiling the Master Material through the Landscape Material Tool will automatically update it.
* <mark style="color:green;">Valid Material</mark>: This Material Instance and its Parent Material has been created in this version of the Landscape Material Tool and no further action is needed.

#### Material Instance Toolip

If you hover the Material Instance box while a Valid Material Instance is selected, you will see a tooltip with the Material Instance Details from the Material Instance Editor including stats and errors.

<figure><img src="/files/O98RWFFtOze3ZFrUlUik" alt=""><figcaption></figcaption></figure>

### UI

If a Valid Material is selected, the rest of this tab will show the *Detials Panel* of the Material Instance the same as if it were open in the Material Instance Editor.

<figure><img src="/files/MZYa2ooTRZHJCceOtAOh" alt=""><figcaption></figcaption></figure>


# Layer Tab

This documentation is for update 2.0+, applied to 5.4+.

{% hint style="info" %}
A Landscape Layer is actually a Material Function created to work specifically with the Landscape Material Tool.
{% endhint %}

### Layer Reference

<figure><img src="/files/LAzWvauQB3YJ2ud5wTwT" alt=""><figcaption></figcaption></figure>

1. Load a Landscape Layer's data into the Landscape Material Tool.\*
2. Load the Landscape Layer (Material Function) currently selected in the C*ontent Browser* into the Landscape Material Tool.
3. Browse to the currently-selected Landscape Layer in the *Content Browser*.
4. Create a new Landscape Layer using the Landscape Material Tool's default Landscape Layer.
5. Apply all changes to the current Layer.
6. Create a copy of the current Layer.
7. Further Actions Menu (see below).

\*When a Layer is selected, the box has two states:

<figure><img src="/files/d6CRxuz0RnB4XYvYJqL4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/kGPGJroyH7FzAhwaYc4r" alt=""><figcaption></figcaption></figure>

* <mark style="color:yellow;">Save to Update!</mark>: This Landscape Layer has been created in a past version of the Landscape Material Tool; saving the Landscape Layer through the Landscape Material Tool will automatically update it.
* <mark style="color:green;">Valid Layer</mark>: This Landscape Layer has been created in this version of the Landscape Material Tool and no further action is needed.

{% hint style="info" %}
There is also a hidden third state, <mark style="color:red;">Invalid Layer</mark>, which means this Material Function is not a valid Landscape Layer. However, there are checks when setting this value that should not allow anything invalid to ever be placed here so it should never be seen.
{% endhint %}

#### Further Actions Menu

<figure><img src="/files/KKUU1FuQREtfXSZ4Kafh" alt=""><figcaption></figcaption></figure>

* ACTIONS
  * **Reset To Defaults**: Reset the current Layer's parameters to the global layer defaults (does not reset the texture inputs).
  * **Copy Parameters From Layer**: Copy the parameters from another Layer to this Layer (does not copy the texture inputs).
* EDIT LAYER IN MATERIAL: Shortcut to open a Layer present in the selected Master Material.

#### Layer Reference Toolip

If you hover the Layer Reference box, you will see a tooltip with useful information.

<figure><img src="/files/RYf7j1KKnA1a6usP3ZxF" alt=""><figcaption></figcaption></figure>

* Section 1: The name of the Landscape Layer Material Function.
* Section 2: Type of asset.
* Section 3: A list of ALL Materials that currently reference this Landscape Layer Material Function.
* Section 4: If this Landscape Layer is in the Master Material, it will show the Blend Type and Noise Layer applied to the Layer in the Material.
* Section 5: If this Landscape Layer is in the Master Material, it will show where the Layer is in the Material's Layer Hierarchy.

### Layer Settings

* **Layer Name**: The Landscape Layer Name (also displayed on the paint layer selection).
* Inputs: *Note: Ticking these off will hide some parameters too.*
  * **Use Normal**: Toggle to use a Normal Map and settings for this Layer (turning off will increase performance).
  * **Use Roughness**: Toggle to use a Roughness Map and settings for this Layer (turning off will increase performance).
  * **Use Specular**: Toggle to use a Specular Map and settings for this Layer (turning off will increase performance).
  * **Use Ambient Occlusion**: Toggle to use a Ambient Occlusion Map and settings for this Layer (turning off will increase performance).
  * **Use Height**: Toggle to use a Height Map and settings for this Layer (turning off will increase performance).
* **Use Global Distance Swap**: Enable to have the textures to swap out to a global blend.
* **Use Custom Global Textures**: Whether to use custom global textures or use the detail textures for global swap.
* **Use Custom Global Parameters**: Whether to use custom global parameters or use the detail textures for global swap.

### Detail Texture Inputs

* **Diffuse**: Diffuse Texture Input.
* **Normal**: Normal Map Texture Input.
* **Height**: Height Map Texture Input. *Note: Hidden if Height.ChannelPackedTexture is true.*
* **Specular**: Specular Map Texture Input. *Note: Hidden if Specular.ChannelPackedTexture is true.*
* **Roughness**: Roughness Map Texture Input. *Note: Hidden if Roughness.ChannelPackedTexture is true.*
* **Ambient Occlusion**: Ambient Occlusion Map Texture Input. *Note: Hidden if AmbientOcclusion.ChannelPackedTexture is true.*
* **Channel Packed Texture**: A Channel Packed Texture Input.

### Detail Parameters

* UV
  * **UV Tiling**: Texture UV Tiling Multiply.
  * Triplanar
    * **Use Triplanar Mapping**: Enable for Triplanar Mapping / World Aligned Texture.
    * **Triplanar Mapping Texture Size**: Texture Scale Size for Triplanar Mapping.
    * **Use Advanced Triplanar Mapping**: Enable an Advanced Triplanar Mapping Method.
    * **Advanced Triplanar Mapping: Use Single Sample**: Use Single Texture Samples for Triplanar Mapping.
    * **Advanced Triplanar Mapping: Use Dithering**: Use Dithering for Triplanar Mapping.
    * **Advanced Triplanar Mapping: Projection Smoothness**: Smoothing between Triplanar Mapping Seams.
    * **Advanced Triplanar Mapping: Angle Amount**: Lateral Projection Reduction.
  * Texture Variation
    * **Use Texture Variation**: Enable for Texture Variation (used to reduce tiling of textures). Note: Requires no Triplanar Mapping.
    * **Texture Variation: Offset**: The random offset amount for the texture UV's.
    * **Texture Variation: Scale**: The scale of the variation transitions.
    * **Texture Variation: Levels**: The amount of variation transition levels.
    * **Texture Variation: Height Influence**: How much the heightmap has influence on the texture transition levels.
    * **Texture Variation: Use Dither**: Enabling Dithering for texture variation transitions (helps smooth out transition lines).
    * **Texture Variation: Use Random Rotation and Scale**: Used to randomly rotate and scale the texture variation UV's (can cause problems with normal maps).
* Diffuse
  * **Multiply With AO**: PBR multiply diffuse with AO map.
  * **Brightness**: Diffuse color brightness.
  * **Brightness Curve**: Diffuse color brightness curve.
  * **Saturation**: Diffuse color saturation.
  * **Hue Shift**: Diffuse color Hue Shift.
* Normal
  * **Strength**: Normal map strength offset.
* Height
  * **Use Channel Packing**: Use channel packing for height map.
  * **Channel Packing Mask**: Height Channel used for channel packing texture.
  * **Height Brightness Curve**: Displacement Height curve, Similar to texture brightness curve.
  * **Height Intensity**: Displacement Height intensity, increases the brightness of the texture.
  * **Vertical Height Offset**: Displacement Height offset.
  * **Height: Blur Distance**: Total Distance of Blur in UV space.
  * **Height: Blur Steps**: Number of Steps Along Distance.
* Specular
  * **Offset**: Specular intensity offset.
  * **Use Channel Packing**: Use channel packing for specular map.
  * **Channel Packing Mask**: Specular Channel used for channel packing texture.
* Roughness
  * **Offset**: Roughness intensity offset.
  * **Use Channel Packing**: Use channel packing for roughness map.
  * **Channel Packing Mask**: Roughness Channel used for channel packing texture.
* Ambient Occlusion
  * **Offset**: Ambient Occlusion intensity offset.
  * **Use Channel Packing**: Use channel packing for Ambient Occlusion map.
  * **Channel Packing Mask**: Ambient Occlusion Channel used for channel packing texture.

### Global Parameters

* Distance Blend
  * **Fade Range**: The fade range for the global distance swap.
  * **Fade Hardness**: The fade hardness/sharpness for the global distance swap.
  * **Mip Fade Range**: The Mip fade range for the global distance swap (this is used instead of Distance Fade Range for RVT).
  * **Mip Fade Hardness**: The fade hardness/sharpness for the global distance swap (this is used instead of Distance Fade Hardness for RVT).
* UV
  * **UV Tiling**: Texture UV Tiling Multiply.
  * Triplanar
    * **Use Triplanar Mapping**: Enable for Triplanar Mapping / World Aligned Texture.
    * **Triplanar Mapping Texture Size**: Texture Scale Size for Triplanar Mapping.
    * **Use Advanced Triplanar Mapping**: Enable an Advanced Triplanar Mapping Method.
    * **Advanced Triplanar Mapping: Use Single Sample**: Use Single Texture Samples for Triplanar Mapping.
    * **Advanced Triplanar Mapping: Use Dithering**: Use Dithering for Triplanar Mapping.
    * **Advanced Triplanar Mapping: Projection Smoothness**: Smoothing between Triplanar Mapping Seams.
    * **Advanced Triplanar Mapping: Angle Amount**: Lateral Projection Reduction.
  * Texture Variation
    * **Use Texture Variation**: Enable for Texture Variation (used to reduce tiling of textures). Note: Requires no Triplanar Mapping.
    * **Texture Variation: Offset**: The random offset amount for the texture UV's.
    * **Texture Variation: Scale**: The scale of the variation transitions.
    * **Texture Variation: Levels**: The amount of variation transition levels.
    * **Texture Variation: Height Influence**: How much the heightmap has influence on the texture transition levels.
    * **Texture Variation: Use Dither**: Enabling Dithering for texture variation transitions (helps smooth out transition lines).
    * **Texture Variation: Use Random Rotation and Scale**: Used to randomly rotate and scale the texture variation UV's (can cause problems with normal maps).

### Overlay

*Hidden if not Cliff or Overlay Blend.*

* **Falloff Contrast**: The falloff contrast for the noise texture applied for overlay blending.
* **Falloff Intensity**: The falloff brightness intensity for the noise texture applied for overlay blending.
* **Falloff Use Height Map**: Toggle to use the supplied heightmap instead of the falloff texture.
* **Falloff Texture**: The falloff noise texture input for overlay blending.
* **Falloff Texture UV Scale**: Falloff Texture UV scale, scaled by dividing the UV coordinates.
* **Falloff Texture Channel**: Falloff texture channel mask.
* World Height
  * **Use World Height Blend**: Toggle to use World Height blend (useful for materials such as a top down snow overlay).
  * **World Height: Flip Direction**: Toggle to flip the direction of which the world height alpha blends.
  * **World Height: Offset**: Offset the world position Z for the World height blend.
  * **World Height: Edge Smoothing**: Control how soft the edge gradient is for the world height blend.
  * **World Height: Variation Size**: Control the size of the variation for the edge of the world height blend.
  * **World Height: Variation Depth**: Control the Depth of the variation for the edge of the world height blend.
  * **World Height: Use Normal Influence**: Toggle to use Pixel and Vertex Normal to blend out the World Height Gradient.
  * **World Height: Normal Influence**: Control the Normal Influence for the edge of the world height blend.
  * **World Height: Normal Influence Tessellation**: Control a seperate influence path for tessellation for the Normal Influence (uses Vertex Normals instead of Pixel Normal).
  * **World Height: Use Height Influence**: Toggle to use Displacement Height to blend out the World Height Gradient.
  * **World Height: Height Influence**: Control the Displacement Height Influence for the edge of the world height blend.
  * **World Height: Flip Height Influence**: Toggle to flip the Displacement Height influence.

### Overlay Noise Layer

* **Blend Intensity**: Intensity for the Noise Layer overlay blend.
* **Blend Contrast**: Contrast for the Noise Layer overlay blend.
* **Blend Texture**: Texture Noise for the Noise Layer overlay blend.
* **Blend Texture UV Scale**: Noise Layer overlay blend texture UV scale, scaled by dividing the UV coordinates.
* **Blend Texture Channel**: Texture Channel Mask for the Noise Layer overlay blend.

### Overlay Cliff

*Hidden if not Cliff Blend.*

* **Cliff Slope Angle**: The slope angle used for automatic cliff generation.
* **Cliff Slope Falloff Intensity**: Slope falloff intensity for automatic cliff generation.
* **Cliff Slope Falloff Contrast**: Slope falloff contrast used for automatic cliff generation.


# Landscape Material Tool Project Settings

This documentation is for update 2.0+, applied to 5.4+.

Access the Landscape Material Tool Settings by going to **Project Settings** > **Plugins** > **SHADERSOURCE: Landscape Material Tool Settings**. Here you can edit defaults for new Layers and Materials without having to modify the default Material and Layer in the Plugin's Content Folder.

<figure><img src="/files/fvxUqWp3Bks29hzOYJrf" alt=""><figcaption></figcaption></figure>


# How To Use (Legacy 4.26-5.3)

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

* [Getting Started](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started)
* [Advanced Features](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features)
* [Setting up Runtime Virtual Texture](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/setting-up-runtime-virtual-texture)


# Getting Started

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

* [UI Overview](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started/ui-overview)
* [Setting Up a Landscape Layer](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started/setting-up-a-landscape-layer)
* [Creating a Landscape Material](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started/creating-a-landscape-material)


# UI Overview

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

The UI for the Landscape Material Tools Editor Mode is user friendly and split into three main tabs.

{% tabs %}
{% tab title="Material" %}
![](/files/kSSx440JTOkoi2D05vzX)

{% hint style="info" %}
For Nanite Displacement/Tessellation see here [Setup and Using Nanite Displacement](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/setup-and-using-nanite-displacement)
{% endhint %}

The material tab is used to generate a landscape material, the subtab bar has standard options for generating a new material "New", opening the referenced landscape material "Open", and compiling the referenced landscape material "Compile".

![](/files/y6llQSDEStZL5hbx49KK)

The "Landscape Master Material" asset entry is used to edit the landscape material, it has three different states, as shown below.&#x20;

### <mark style="color:green;">**Valid Material:**</mark>&#x20;

A valid material will display when a verified and current Shadersource landscape material is selected. It should be displayed with a green outline.

This should also enable the "Open" and "Compile" sub tab buttons.

![](/files/v1ut0MdnPHqDCICVQ78U)

### <mark style="color:red;">**Invalid Material:**</mark>&#x20;

An invalid material will display when a none Shadersource verified material is selected, "Open" and "Compile" sub tab buttons will remain disabled.

![](/files/fgVJCRMzM8668GkOEnbJ)

### <mark style="color:orange;">**Deprecated Material:**</mark>

A deprecated material will display when a material made from a previous version of the plugin is selected, compiling the material should update to the latest version whilst keeping all the previous settings.

![](/files/N1Uvo4alNWn8zZ2uBW49)
{% endtab %}

{% tab title="Layers" %}
This tab will be used for creating landscape material layers. It has a similar layout and validation system as the Material tab, shown previously.&#x20;

![](/files/UpV96WfMTXEHr6G3Bl7L)

The layers sub tab bar has five buttons:

* **New** (used to create a new blank layer)
* **Reset** (will reset the current selected layer to the global defaults but does not reset texture parameters)
* **Save** (used to save the current layer)
* **Save As** (this will create a new asset using the settings from the current layer selected)
* **Gather** (gathers parameters from the selected content browser layer asset and applies to the selected reference layer, does not transfer texture parameters)

![](/files/DlyZrPmWDj3qXnElMmKz)

The "Landscape Layer Reference" asset entry is used to select landscape layer material functions, it has a validation system similar to the material reference.

### <mark style="color:green;">**Valid Landscape Layer:**</mark>&#x20;

A valid Landscape Layer will display when a verified and current Shadersource landscape layer is selected, It should be displayed with a green outline.

This should also enable the "Reset", "Save" and "Save As" sub tab buttons.

![](/files/UN7mLkPPfRbgSpHdZtNi)

### <mark style="color:orange;">**Deprecated Layer:**</mark>

A deprecated landscape layer will display when a landscape layer material function made from a previous version of the plugin is selected, saving the landscape layer should update to the latest version whilst keeping all the previous settings.

![](/files/KxkY3rZVscJgifgnOIdu)
{% endtab %}

{% tab title="Tools" %}
The tools tab is used for overall landscape material settings. However its main use is to assist with landscape material creation.

![](/files/stwfGwJSwGOugM23UxOm)

### Reload Level

To make life easier there's a "**Reload Level**" button which will ask to save and then reload the current level.  For example, when applying paint layers in order for them to populate you will need to reload the current level.&#x20;

### Gather Materials

The "**Gather Materials**" button will enable when you have a landscape actor reference selected. It will gather the master material and material instance from the landscape and set them to the references within the editor mode.

![](/files/9prK5gyZUyW6MaZBUQa7)

The "**Material Instance Reference**" will enable once a verified master material is selected under the Material tab.&#x20;

"**Use Material Instance Live Link**" is used together with the "**Material Instance Reference**"&#x20;

To enable quick modifications, when a parameter is changed within the editor mode tool it will populate to the selected material instance. This means if you have a material instance on your landscape you will see the changes happening live. This will also enable gathering parameters from the material instance which have had changes to the landscape layers.
{% endtab %}
{% endtabs %}


# Setting up a Landscape Layer

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

To begin, select the "**New**" button under the "**Layers**" tab.

![](/files/SP2xJOHOsM9w14TQIgmv)

This will bring up an asset dialog to save a new landscape layer asset.

{% hint style="danger" %}
It is recommended to keep the prefix "LL\_" before each layer asset, you may experience issues without this prefix.
{% endhint %}

Once the new asset has been created the **"Layers"** tab will now be populated with that asset. and should look similar to this. The main thing to input at this point is the texture samples which have been highlighted.

![](/files/KfwGPFUepjsHPY1whoBA)

{% hint style="info" %}
It is common place to have your texture samples set to the correct compression settings/sampler type: [Compression Settings](https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/Textures/TextureCompressionSettings/)&#x20;

The plugin will automatically set your sample types to what the compression settings of the source texture is, but this might have undesired results if your source textures have the incorrect compression settings.
{% endhint %}

Each layer can take in a Diffuse, Normal, Height, Specular, Roughness, Ambient Occlusion or a Channel Packed Texture. A good approach to save on texture lookups is to use the Channel Packed Texture for your Height/Roughness/AO, you can use my other plugin [Texture Tools](https://www.unrealengine.com/marketplace/en-US/product/shadersource-texture-tools) to easily pack separated textures into one texture.

{% hint style="info" %}
You can find example textures under the plugins content folder, remember to enable "Show Plugin Content" under your view options of your content browser.
{% endhint %}

![](/files/eKFgi5IBAO0LWlWA9ULX)

Once textures have been put into the correct texture inputs, the layer is now setup as a basic landscape layer. However, if you used a channel packed texture as show in the picture above there are some extra steps.

To enable the channel packed texture support on the landscape layer scroll down to your individual texture parameter categories. In this example its using an A/R/M texture which is Ambient Occlusion, Roughness, and Metallic texture combined.

{% hint style="info" %}
Metallic texture inputs are not used in this plugin as we support RVT/Runtime Virtual Texturing which does not use metallic inputs.
{% endhint %}

![](/files/yvqCI4h4QaTCKXZK5fDr)

This is the correct setup for the A/R/M texture, you will want to make sure you have enabled "**Use Channel Packing**" and then select the correct channel packing mask. In this case Ambient Occlusion uses the <mark style="color:red;">**Red**</mark> channel and Roughness uses the <mark style="color:green;">**Green**</mark> channel. These options are also available under the Height and Specular parameter categories.

At this point this landscape layer is considered ready to use, you should **Save** the layer. There are much more advanced settings and parameters to go over which are covered in the [Advanced Landscape Layers](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features/advanced-landscape-layers).

{% hint style="info" %}
By default each layer has **"Global Distance Swap"** enabled, which will at a distance fade the textures to a less tiled version of the layer, which is useful for distant details and makes the landscape look less repetitive.
{% endhint %}

{% hint style="warning" %}
Layers are automatically saved when you swap out to a different "**Landscape Layer Reference"**, But they are not automatically saved when you switch between tabs or close the editor.
{% endhint %}


# Creating a Landscape Material

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

This will be the process to setup a standard landscape material, notes have been added for RVT setup.

### Setup Initial Layer

Under the Material tab navigate to the **"Landscape Layers"** drop down and add a new element.

![](/files/p1FLMAucursa3zNTgn2P)

Select the "**Landscape Layer**" asset selection and navigate to your first landscape layer. Think of it as the base layer and a layer that would be used most.

{% hint style="danger" %}
This selection will populate with all the material functions visible in your project. make sure to select an appropriately prefixed "LL\_" landscape layer either provided by the plugin or one you have made previously. You might encounter issues or crashes if you do not select the appropriate asset.
{% endhint %}

Next see the "**Layer Blend Type**" drop down. Since this is the first layer in the list it's best to use either the "**Standard Weight Blend**" or "**Standard Alpha Blend**" blend types.

{% hint style="warning" %}
If you are going to be using RVT for your landscape your first layer should be set to Alpha Blend.
{% endhint %}

Leave "**Paint Over Previous Layer**" disabled for the initial layer.

![Initial Layer should look similar to this.](/files/NSFjKJG3ktgC1k9KDIvV)

Once the initial layer has been added, new layers can be added with any setting.

### Adding Overlay/Cliff Layers

If you are using overlay or cliff layer blend, these act similar to how photoshop layers work. They will always be on top of standard layers and they will stack on top of each other depending on where they are in the array. It's also best to custom sort your landscape paint layer list to the same as the landscape layer list here.

![Example of layers sorted with blend modes](/files/npNChOofG3Hat9sAn8vm) ![Custom Sorted layers in the landscape mode to match the Landscape Material](/files/Yz5XtI185XOZCoYQ3d60)

{% hint style="info" %}
Enabling "**Paint Over Previous Layer**" will use the Affect Previous parameters listed in the Advanced Landscape Layers page [here.](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features/advanced-landscape-layers#affect-previous-parameters)
{% endhint %}

### Landscape Grass Types

To add grass types to the landscape material navigate to the "**Landscape Grass Types**" drop down and add a new element to the "**Grass Types**" array.

![](/files/SYxULHcXeJnympGJ8LUw)

Once an element has been added, expand it and input a grass type asset into the "**Grass Type**" asset selector.

To have a grass type apply to a layer, add a new element to the "**Apply to Layers**" array and insert one of the layer names of which was added in the "**Landscape Layers**" drop down.

{% hint style="warning" %}
You do not need to include the prefix "LL\_" for the layer in this string list.
{% endhint %}

A noise mask can also be applied to each grass type for more variation. For example, if you want tall grass or a rocky grass type but to be in scarce patches around another grass type without having additional layers.

![An example of a grass type added with it applied to a single layer and a noise mask.](/files/F4R1DlaMwn4P3btdkUKX) ![Grass Type with noise mask](/files/ZtRxY8E1kyWjJgnqVThE)

### Landscape Physical Materials

This plugin uses the in-material "physical material output" to generate physical materials on any layer, including overlay and cliff layers. No need to use physical materials on the layer info anymore.

To add a physical material navigate to the "**Landscape Physical Materials**" drop down and add an element to the "**Physical Materials**" array.

![](/files/kck4m3LrXCFQWjXwE2Wv)

Input a physical material into the "**Landscape Physical Material**" asset selector.

Applying to a layer is exactly the same as how you apply [grass types to layers](#landscape-grass-types). Add an element to the "**Apply to Layers**" array and insert a layer name.

![Example of a physical material added to a single layer](/files/7T9YH0bR5OHIsTumQz5x)

{% hint style="warning" %}
If physical materials wont apply correctly, a map [reload](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started/ui-overview) is sometimes required.
{% endhint %}

At this point the landscape material is setup in a basic form, you can select "**New**" and it should ask to save the material to a specific location.&#x20;

{% hint style="info" %}
You can "**New**" the material before setting up the layers, grass types and physical materials.
{% endhint %}

After the landscape material has been created and inserted into the "**Landscape Master Material**" with a <mark style="color:green;">Valid</mark> tag, navigate to the tools tab and hit the "**New Material Instance**" button.

Use the newly created material instance for your landscape!

Please see the [Advanced Landscape Material](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features/advanced-landscape-material) page for more information about creating a landscape material!


# Advanced Features

Information about the more advanced features of the Landscape Material Tool plugin. This is for legacy versions of the Landscape Material Tool before the 2.0 update.

* [Advanced Landscape Layers](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features/advanced-landscape-layers)
* [Advanced Landscape Material](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/advanced-features/advanced-landscape-material)


# Advanced Landscape Layers

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

All parameters and settings should have a description when hovering over them on the editor mode. This page will cover more of the advanced parameters and explain how they work.

### Texture Variation

This is the same function that was added in UE4.26 and is a nice way to break up noticeably tiled textures. Currently it is on by default but can be changed in the global defaults.

![](/files/2FWM8p7mCuqo8aL5TqHJ)

By default it will offset each tiled texture sample by the "**Texture Variation Offset**", it uses a noise texture to do this. **Scale** and **Levels** control the noise texture as to how it will break up the samples, tweaking these values will give you desired results depending on the type of texture you have.

![Texture Variation Off](/files/2ZycyMdyFiItwZQkk1zb) ![Texture Variation On](/files/IfGbEywll50dB1luSY8c)

{% hint style="info" %}
Having a Heightmap texture input and increasing the "**Texture Variation Height Influence**" will help break up the seams from the noise texture.
{% endhint %}

{% hint style="warning" %}
Using "**Texture Variation Use Dither**" with RVT can give you visible pixelated seams, this feature is best used without RVT.&#x20;
{% endhint %}

{% hint style="warning" %}
Using "**Texture Variation Use Random Rotation and Scale**" will result in unwanted normal map issues if used with PBR textures, as it rotates all textures and causes the normal map texture to not align correctly. It is best used on stylized textures that don't use normal maps.
{% endhint %}

### Global Distance Swap

As noted on the [Setting Up a Landscape Layer](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/getting-started/setting-up-a-landscape-layer) page, this is on by default and will fade the landscape layer to a less tiled version of the current layer at a distance.

![](/files/WQe476CjTtREtVHHzrm8)

{% hint style="info" %}
Enabling "**Use Custom Global Textures**" will use the texture inputs displayed under the global dropdown, if disabled it will use the same textures as the layer inputs.
{% endhint %}

The "global distance swap" has similar parameters to the standard layer parameters except it does not take in Specular, Roughness, AO or Height input. Roughness and Specular are handled as offset constants and can be edited to suit what is desired.

Under the Distance Blend drop down, the Fade Range and Fade Hardness control the non-RVT versions of the distance blend. MIP Fade Range and Hardness control the RVT distance blend. The reason these are separated is that they take in different kinds of values for what they do, the non-RVT uses a sphere mask to fade between whereas the RVT version uses the texture MIP range from the RVT sample itself.

### Overlay/Cliff Parameters

These parameters are specifically used for the Overlay and Cliff layer blend types when set in the Material tab.

![](/files/ViJnpGocdd5kiEWiDi0i)

The parameters for overlay are broken up into two areas, Falloff and Affect Previous.&#x20;

Falloff is the falloff edge between two layer transitions and can be used to break up the gradient fade, it functions similar to the height blend layer type but has more customizability. Enabling "**Falloff Use Height Map**" will use the layers heightmap input to transition between landscape layers instead of using the falloff texture input.

### Affect Previous Parameters

Affect Previous parameters will only work if your layer is set to "**Overlay**" blend and has the "**Affect Previous**" parameter enabled within the Material tab. The way this works is if you want a noised version of a layer to paint down on top of another layer to give you automatic landscape detail.

![Example of "Affect Previous" Dirt layer randomly placed on top of the Grass layer using a noise texture](/files/pF2dAc8BQ0yWf8AmUJ2a)

{% hint style="info" %}
You can use the Affect Previous blend texture as a whole landscape splat map, just set the "**Blend Texture UV Scale**" to the resolution of the landscape.
{% endhint %}

Cliff parameters are used to generate an auto-cliff style layer, it uses an overlay blend type with additional features for cliff specific. This means the parameters under the "**Overlay**" drop down also work with the "**Cliff**" parameters.

![](/files/ptvQtsG9vOlM6HLCeerj)

The "Cliff Slope Angle" controls the angle at which the cliff is applied to the landscape, an angle with (0,0,1) will apply the cliff to the vertical edges of the landscape only. You can change this i.e snow only falling at a certain angle.

You can also stack multiple cliffs on top of each other.

![Example of a Scree Cliff Layer and a Rocky Cliff Layer](/files/AfFqEXEwHOBKHRFuSkZZ)


# Advanced Landscape Material

This is for legacy versions of the Landscape Material Tool before the 2.0 update.

This page will go into more detail about the landscape material parameters and settings listed in the "**Material**" tab.

### Runtime Virtual Texturing

Please see the page for [Setting Up Runtime Virtual Texture](/assets-and-plugins/landscape-material-tool/how-to-use-legacy-4.26-5.3/setting-up-runtime-virtual-texture) before proceeding on this topic.

RVT is disabled by default, but is a powerful addition to landscape materials. To enable it correctly you will need to activate it within your project settings first.

![Search for "Virtual Texture"](/files/mpD9JK0bn63EB0oVStra)

Once enabled in the project settings and the engine has been restarted, enable **"Use Runtime Virtual Texture"** within the "**Runtime Virtual Texturing**" dropdown under the "**Landscape Material Parameters**" drop down.

![](/files/ziiYjJnaxnDjGuvngzHZ)

By default the "**Runtime Virtual Texture Sample**" has the input of a "**RVT\_Global**" provided by the plugin.

{% hint style="info" %}
If you want displacement on your RVT landscape and do not want to use UE4's Virtual Height Field Mesh, with tessellation enabled you will want to enable "**Displacement Use Mask Sample**"
{% endhint %}

### Tessellation and Virtual Height Field Mesh

{% hint style="warning" %}
Tessellation has now been deprecated in UE4.26+ but is still useable at the moment.
{% endhint %}

{% hint style="info" %}
Recommended: By default the plugin is setup and optimized to use Virtual Height Field Mesh.
{% endhint %}

Navigate to the **"Tessellation"** drop down under the **"Landscape Material Parameters"** drop down and select which tessellation mode to use.

![](/files/QJogzCnGGTFzrZNXuPjl)

With "**Use Adaptive Tessellation**" disabled, tessellation will use a sphere mask around the player camera to determine how tessellated the landscape is. Use the parameters "**Range Radius, Range Hardness, Minimum Levels, Maximum Levels**" to change how the tessellation is calculated.&#x20;

### Satellite Overlay

This functionality is used to overlay a satellite map over the entire landscape which will fade in at a set distance away from the camera, it is basically another global blend but for the entire landscape.

When applying a satellite overlay, the "**Landscape Resolution**" parameter needs to be set to the correct resolution of the landscape. You can do this by viewing the details panel of the landscape actor.&#x20;

![](/files/e8gTHTCJ1hm7PfpoY3Qs)


# Setting up Runtime Virtual Texture

This page will cover the process of getting RVT (Runtime Virtual Texturing) working in your scene. This is for legacy versions of the Landscape Material Tool before the 2.0 update.

### Enabling Virtual Texture Support

Begin by enabling "**Virtual Texture Support**" from your project settings.

![To find it quickly, Search for Virtual Texture](/files/mpD9JK0bn63EB0oVStra)

{% hint style="info" %}
If you are not going to use standard virtual texturing for your texture samples, it's a good idea to set the "**Auto Virtual Texturing Size**" to a high number so when you import textures they are not automatically converted to VT.
{% endhint %}

Next restart the engine, which is required to get virtual texturing enabled.

### Adding RVT Volume

Once restarted, open up your level and search for "**Runtime**" in your place actors tab.

![](/files/bt4zRJP6Zirw2Z5FK18s)

Place the "**Runtime Virtual Texture Volume**" into your scene.

With the newly placed volume selected, go to the details panel and set your virtual texture to RVT\_Global.

![](/files/nArbj2tK5Drz2zXstznN)

{% hint style="warning" %}
If you want to create your own RVT texture, in your content browser right click and under the "**Materials & Textures**" tab select "**Runtime Virtual Texture**"
{% endhint %}

![High quality virtual texture settings, these settings are also used for the LMT plugin.](/files/OGKeYyDY0BI4rF0AMjRS)

### Set RVT Bounds

Next is to set the RVT volume bounds, with the volume still selected navigate back to the details panel.

There are two options you can use, if you have a standard landscape its best to use the "**Bounds Align Actor**".&#x20;

![](/files/hoADIovLzg9GzBNwzTua)

From here just select your landscape and hit the "**Set Bounds**" button, it should automatically set the volume bounds/scale to the size of your selected landscape.

If you have a non-standard landscape it is probably best to manually scale your volume to fit either where the playable area of your landscape is or engulf the whole landscape with the volume.

{% hint style="info" %}
The larger the volume is, the less resolution it will have overall. So keep this in mind when scaling the volume.
{% endhint %}

### Set RVT on landscape actor

Next is to set the runtime virtual texture sample on your landscape actor.

Select your landscape in the scene and navigate back to your details panel, from here find the drop down "**Virtual Texture**" and add a new element to "**Draw in Virtual Textures**". You will then want to add the same virtual texture sample as before, either the "**RVT\_Global**" or the one you created.

![Make sure "Draw in Main Pass" is set to "Always"](/files/zoaqtRQ4F6O4YbPN3RZZ)

At this point you just need to make sure your landscape has your RVT material set and at least one layer painted.

### Optional: World Height

An additional runtime virtual texture volume is required if you wish to use World Height for things like Virtual Height Field Mesh or RVT blending with static meshes.

Place a new "**Runtime Virtual Texture Volume**" or duplicate the one you have in the scene already.

With the volume selected, make sure the bounds are setup the same way as stated earlier. Then set the "**Virtual Texture**" to "**RVT\_GlobalWorldHeight**"

![](/files/rGSgBvM9ngSC9IAmQnsY)

{% hint style="warning" %}
If you want to create your own RVT World Height texture, in your content browser right click and under the "**Materials & Textures**" tab select "**Runtime Virtual Texture**"
{% endhint %}

![If you created your own, use these settings for your RVT World Height](/files/tcV2Sz9JU345T7aOC0bR)

Next select your **Landscape** actor and navigate back to the "**Virtual Texture"** tab, add a new element to "**Draw in Virtual Textures**" and add the "**RVT\_GlobalWorldHeight**" or your own RVT world height texture.

![](/files/dTaX6yHS9iDcfsk1voMx)

You should now have the world height RVT sample applied.


# Setup and Using Nanite Displacement

Documentation on how to use Nanite Displacement with LMT. This is for legacy versions of the Landscape Material Tool before the 2.0 update.

{% hint style="warning" %}
This is only for Plugin Version 1.2 and UE5.3+
{% endhint %}

## Enabling Nanite Displacement/Tessellation

Navigate to and open your "**DefaultEngine.ini**" file within your projects config folder.

Within the "**DefaultEngine.ini**" add these two lines under `[/Script/Engine.RendererSettings]`

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

Save the file and close.

Restart your editor.

## Using Nanite Displacement/Tessellation in LMT

Two new parameters have been added to the "Landscape Material Parameters" drop down show here:

{% hint style="info" %}
In UE5.4+ there has been a Nanite Displacement Enable toggle added.
{% endhint %}

<figure><img src="/files/WwwfvEDanJ2B2MGoRxEK" alt=""><figcaption></figcaption></figure>

These two parameters control the entire nanite displacement system within the landscape material.

* Magnitude: Essentially what it does is control the "Intensity" of the displacement.
* Center: This controls the center point from the heightmap 0-1 value.

## Enabling Nanite on your Landscape

Navigate to and select your landscape actor within the world outliner.

<figure><img src="/files/bM88y6rvbadNFbx46ZxK" alt=""><figcaption></figcaption></figure>

Within the details panel there will be a dropdown called "**Nanite**".

Click the "**Build Data**" button and wait for the process to complete.

Once completed you should see some nice displacement on your landscape material!

<figure><img src="/files/d9iDWvfwuC7TJUVOecPN" alt=""><figcaption></figcaption></figure>


# Level Palette

Documentation for the SHADERSOURCE Level Palette Plugin

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/13d0baa3-0c74-47e0-9ca7-0ba71190b82d)
* Videos:
  * Preview Video: {Coming Soon}
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.2+

### Section Links

* [Changelog](/assets-and-plugins/level-palette/changelog)
* [How to Use](/assets-and-plugins/level-palette/how-to-use)


# Changelog

#### **Hotfix v1.0a (UE5.4) \[28 April 2024]**

* \[Bug Fix]: Save Preset buttons not working in UE5.4

#### **Initial Release V1.0 (UE5.1+) \[11 April 2024]**

* Palette-style UI screen
* Create categories and add asset content
* Save palette presets for other people to use, or for you to use again in the future!
* This tool is essentially a favorites list for your content browser


# How To Use

### Opening the Level Palette

To open the Level Palette, navigate to the SHADERSOURCE dropdown menu in the editor toolbar.

<figure><img src="/files/i4xoHjHjMpWQOWppI6IF" alt=""><figcaption></figcaption></figure>

In this menu, click the **SHADERSOURCE: Level Palette** option.

<figure><img src="/files/rtUfcMnvCIfFa7rfrgBS" alt=""><figcaption></figcaption></figure>

This will open the Level Palette UI in a new window. The Level Palette tab can be docked anywhere within the Unreal interface that the Content Browser can be docked.

<figure><img src="/files/xwoNEejWDTXJnFCQkOiA" alt=""><figcaption><p>Default Level Palette UI</p></figcaption></figure>

{% hint style="info" %}
The Level Palette can also be opened via **Window** -> **SHADERSOURCE** -> **SHADERSOURCE: Level Palette**.
{% endhint %}

### Adding Categories

To add a new category to the Level Palette, simply press the **Add Category** button. This will insert a new empty category.

<figure><img src="/files/yztWRpKNQyy5vAmkzdnB" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
The Level Palette has no limit to the number of categories that can be added, however, increasing the number of categories beyond 6-8 might cause some performance issues, especially if there are a lot of assets in the project.
{% endhint %}

### Renaming Categories

Categories can be renamed by clicking their name.

<figure><img src="/files/rRgOe6nGTju0OzoR4Ckd" alt=""><figcaption></figcaption></figure>

### Category Toolbar

The toolbar below the category name can be used to hide, move, and delete the category.

<figure><img src="/files/ef1RXKMsalKDFH1LlnUr" alt=""><figcaption></figcaption></figure>

### Resizing Categories

Categories can be resized in a similar way to how a Details Panel can be resized. Hover between the categories, click and drag, to resize.

<figure><img src="/files/gaq3TrJGnII5weeJtOBz" alt=""><figcaption></figcaption></figure>

### Adding Assets to a Category

To add an asset to the category simply drag and drop the asset from the Content Browser.

{% hint style="info" %}
You can also drag and drop multiple assets at once.
{% endhint %}

<figure><img src="/files/wl2sY03x9FX4KUO3MOwG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Jpetl7IKnLsvoA6EjInr" alt=""><figcaption><p>Example of a level palette for a scene</p></figcaption></figure>

{% hint style="info" %}
Each category functions similar to the default Content Browser. They contain a search bar and a settings option to change the layout of the category.
{% endhint %}

### Removing an Asset from a Category

To remove an asset from a category, simply right click the asset and select **Remove**.

<figure><img src="/files/tCf86FQrYcOW3LEqOrNr" alt=""><figcaption></figcaption></figure>

Right clicking empty space in a category will also give you the option to **Clear All** assets for the whole category.

<figure><img src="/files/qdNslPOmYagjuwJ3KAJv" alt=""><figcaption></figcaption></figure>

### Saving and Presets

By default, the Level Palette saves the assets added to the categories when closing the tool or the editor so that when the tool is opened next, anything added isn't lost.

**Presets** are a way to save a Level Palette collection for use later or for other people to also use.

To save a new preset, select **Save Preset As**.

To save the current preset, select **Save Preset**.

Enabling **Auto Save Changes** will make it so that the Level Palette automatically saves any changes to the assets and categories added and removed to the Level Palette, in the current saved preset.

### Additional Buttons

* **Clear Palette** clears the entire palette of all assets and clears the saved preset. Note: This does **NOT** affect any assets in the current saved preset, even if **Auto Save Changes** is ticked on.
* **Delete All Categories** removes ALL categories from the palette. Note: If **Auto Save Changes** is ticked on, it WILL remove all the assets in the current saved preset too.


# Poison Toxic Goo

Documentation for the SHADERSOURCE Poison Toxic Goo

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/ff2d857a-532c-445a-ae55-94759cff9eed)
* [Playable Demo](https://drive.google.com/file/d/1QVcLbwOJk--lMlPFhGptyLPfl1aJb768/view?usp=sharing)
* Videos:
  * Preview Video: {Updated Video Coming Soon}
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.0+
  * Versions no longer supported (sold as is): 4.16 - 4.27

### Section Links

* [Changelog](/assets-and-plugins/poison-toxic-goo/changelog)
* [How to Use](/assets-and-plugins/poison-toxic-goo/how-to-use)


# Changelog

\[20 Oct 2023] UE5 Update:

* Particles are now using Niagara
* "Waterline" Post process blueprint added
* Fixes and overall useability updated


# How To Use

{% hint style="warning" %}
Note: This tutorial is for the UE5.0+.
{% endhint %}

{% hint style="info" %}
We advise you to open the **Demonstration** map provided and look over how the asset is used first.

<img src="/files/WAVSdBs7y4E0RpAVcuSN" alt="" data-size="original">
{% endhint %}

## Poison Toxic Goo Lake

Simply drag and drop the **BP\_PoisonToxicGooLake** Blueprint into your scene.

<figure><img src="/files/XnBfriephRR9jakyIuue" alt=""><figcaption></figcaption></figure>

To scale the liquid surface, use **Liquid Mesh Grid Size X/Y** and **Liquid Mesh Scale** parameters within the *Details Panel*, rather than the default scale on the overall Actor.

<figure><img src="/files/iVhOpJNeb1u27gt6jYrr" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The **Liquid Mesh Grid Size X/Y** defines how many water meshes are used for the surface. This will basically define how "tessellated" the surface is for the deformation effects.
{% endhint %}

You can change the color of the surface from the Details Panel under **Liquid Color**.

{% hint style="info" %}
Changing the color here will also translate to the post process "Waterline" effect.
{% endhint %}

Bubbles are enabled by default and the parameters are:

* **Enable Bubbles:** Toggle to enable/disable the bubble effects
* **Spawn Amount:** The amount of bubbles to spawn on the liquid surface. (Bubble spawn amount will increase automatically with the scale parameter.)
* **Lifetime Min/Max:** Controls each bubble particle lifetime minimum and maximum time in seconds.
* **Size Min/Max:** Controls each bubble particles scale minimum and maximum.
* **Z Offset:** Sets the Z axis location offset for the bubble particles. (Used in some cases where the particles need to be offset from the surface.)

## Poison Toxic Goo Spray

Simply drag and drop the **BP\_PoisonToxicGooSpray** Blueprint into your scene.&#x20;

{% hint style="info" %}
This Blueprint is located in the same location as the **BP\_PoisonToxicGooLake** listed [here](/assets-and-plugins/poison-toxic-goo/how-to-use#poison-toxic-goo-lake).
{% endhint %}

The parameters for the Spray Blueprint can be changed directly in the *Details Panel* under the category **Particles**.

These parameters are:

* **Color:** Controls the color of the spray particle and the splash particle.
* **Render Sort Order:** Used to set the translucency sort order of the splash particle (helpful in some use cases where you need to specify how the particles look.)
* **Velocity:** Controls the velocity of the spray particle.
* **Lifetime:** Controls the lifetime of the spray particle.

{% hint style="info" %}
The splash particle is spawned using collision within the Niagara System.
{% endhint %}

## Poison Toxic Goo Post Process

Drag and drop the **BP\_PoisonToxicGoo\_PostProcess** Blueprint into your scene.&#x20;

{% hint style="info" %}
This Blueprint is located in the same location as the **BP\_PoisonToxicGooLake** listed [here](/assets-and-plugins/poison-toxic-goo/how-to-use#poison-toxic-goo-lake).
{% endhint %}

This Blueprint is a simple drag and drop and has no parameters to modify as it's used to just enable the on screen "waterline" effect for the liquid surfaces.

{% hint style="warning" %}
Only one **BP\_PoisonToxicGoo\_PostProcess** is needed per scene.
{% endhint %}

## Additional Information

You can edit and modify each Material used in this asset here.

<figure><img src="/files/VLRUwiDk3X8kGhfiKm07" alt=""><figcaption></figcaption></figure>


# Texture Tools

Documentation for the SHADERSOURCE Texture Tools

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

{% hint style="success" %}
Texture Tools **Update 2.0 is now live!** See more information here:

* [Changelog v2.0](/assets-and-plugins/texture-tools/changelog)
* [How To Use (5.4+)](/assets-and-plugins/texture-tools/how-to-use-5.4+)
  {% endhint %}

### Quick Links

* [Fab Link](https://www.fab.com/listings/8b38f883-0507-4587-8abe-3901cefbd650)
* Videos:
  * **AI Generation Job Preview Video:**

    [**YouTube**](https://www.youtube.com/watch?v=hB7anDODkFw)

    [**Rumble**](https://rumble.com/v6wgqim-texture-tools-ai-generation-preview.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.4+
  * Versions no longer supported (sold as is): 4.16 - 4.27, 5.0 - 5.3

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/texture-tools/changelog)
* [How to Use](/assets-and-plugins/texture-tools/how-to-use-5.4+)
  * [The Texture Tools UI](/assets-and-plugins/texture-tools/how-to-use-5.4+/the-texture-tools-ui)
  * [Navigating the Viewports](/assets-and-plugins/texture-tools/how-to-use-5.4+/navigating-the-viewports)
  * [Content Browser Context Menu](/assets-and-plugins/texture-tools/how-to-use-5.4+/content-browser-integration)
  * [AI Generation Job Overview](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview)
    * [AI Model Recommendations](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/ai-model-recommendations)
    * [PBR Texture Prompting Guide](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/pbr-texture-prompting-guide)
    * [Inpainting with the Draw Mask Canvas](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/inpainting-with-the-draw-mask-canvas)
  * [Quick Tutorials](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials)
    * [Tutorial: Blend Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-blend-texture)
    * [Tutorial: Channel Packer](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-channel-packer)
    * [Tutorial: Insert Alpha Channel](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-insert-alpha-channel)
    * [Tutorial: Modify Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-modify-texture)
    * [Tutorial: Normal From Height](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-normal-from-height)
    * [Tutorial: Texture Filters](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-filters)
    * [Tutorial: Texture Noise](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-noise)


# Changelog

#### **\[16 July 2025] Version 2.0 - UE5.4+ - The AI & Workflow Update**

Version 2.0 is a complete overhaul of the Texture Tools plugin, introducing powerful new generative AI capabilities and a redesigned, non-destructive workflow to dramatically enhance your productivity.

**Major New Features:**

* **New Job: AI Generation (ComfyUI Integration)**
  * Harness the full power of Stable Diffusion directly within the Unreal Editor.
  * Supports Text-to-Image, Image-to-Image, Inpainting, and ControlNet workflows.
  * Automatically manages the ComfyUI backend process.
  * Live progress updates are streamed directly into the UI.
* **Complete UI & Workflow Overhaul**
  * **Job Queue System:** The entire tool is now built around a multi-job processing queue. Add, delete, and reorder jobs to create complex, non-destructive texturing pipelines.
  * **Batch Processing:** Run the entire job queue as a single batch operation.
  * **New Three-Panel Layout:** The UI has been redesigned with dedicated panels for Viewports, the Job List, and a context-sensitive Details panel for a more intuitive workflow.
* **Advanced Viewport & Previewing**
  * **3D PBR Material Viewer:** A new viewport mode allows you to preview your generated materials on standard 3D meshes (Sphere, Cube, etc.) in a fully lit environment.
  * **Interactive Inpainting Canvas:** A new "Draw Mask" view mode provides a full-featured canvas for painting inpainting masks directly onto your input textures, with controls for brush type, size, and feathering.
  * **Enhanced 2D Viewer:** The 2D texture viewer now includes pan/zoom, tiling preview, and individual RGBA channel isolation.
* **Workflow Enhancements**
  * **Preset System:** Save and load entire job configurations, including all AI and procedural settings, as a `UDataAsset`.
  * **Content Browser Integration:** Right-click on any `Texture2D` and use the "Send to Texture Tools" context menu to instantly create a new job with that texture as the input.

**\[10 April 2024] Version 1.1b - UE5.3+**

* Fixed up class names to bring them in line with new SHADERSOURCE naming conventions

**\[10 April 2024]: Version 1.1a - UE5.1-UE5.3**

* Fixed up some SHADERSOURCE branding in the tool
* Moved the Texture Tools button to the new SHADERSOURCE menu

**Hotfix UE5.0**

* Fixed texture output not being directed to selected output path
* Fixed various warning in output log

**V1.1 Update 11/12/2020 -Released!**

* Added ability to export texture to disk with the formats (png, jpg, bmp, exr)
* Fixed Issues with Alpha Channels
* Added ability to select Output Path and Export Path
* Added ability to show toggle the alpha channel in the Output Preview
* Inputting textures now use the asset explorer dialog, but also added ability to "Use Selected Asset from Content Browser" and "Browse to Texture in Content Browser"
* Added dropdown for "Fixed Resolutions" for easy access to common texture resolutions.


# How To Use (5.4+)

This documentation is for update 2.0+, applied to 5.4+.

### Overview

The Texture Tools is split into eight different functions. The purpose of this tool is to create or modify Texture2D assets in Unreal Engine to eliminate the need to use external programs.

### Workflow

The general workflow is set up to be similar to the Movie Render Queue. The user creates a job, which is added to a queue, and then that one job can be executed by itself or the queue can run through one at a time, allowing for batches of texture modification.

***

### Reference

* [The Texture Tools UI](/assets-and-plugins/texture-tools/how-to-use-5.4+/the-texture-tools-ui)
* [Navigating the Viewports](/assets-and-plugins/texture-tools/how-to-use-5.4+/navigating-the-viewports)
* [Content Browser Context Menu](/assets-and-plugins/texture-tools/how-to-use-5.4+/content-browser-integration)

***

### AI Overview

* [AI Generation Job Overview](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview)
  * [AI Model Recommendations](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/ai-model-recommendations)
  * [PBR Texture Prompting Guide](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/pbr-texture-prompting-guide)
  * [Inpainting with the Draw Mask Canvas](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/inpainting-with-the-draw-mask-canvas)

***

### Tutorials

* [Quick Tutorials](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials)
  * [Tutorial: Blend Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-blend-texture)
  * [Tutorial: Channel Packer](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-channel-packer)
  * [Tutorial: Insert Alpha Channel](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-insert-alpha-channel)
  * [Tutorial: Modify Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-modify-texture)
  * [Tutorial: Normal From Height](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-normal-from-height)
  * [Tutorial: Texture Filters](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-filters)
  * [Tutorial: Texture Noise](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-noise)


# The Texture Tools UI

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed overview of the main user interface for the **Texture Tools** plugin. Understanding the layout and the function of each panel is the key to building and managing your texture generation workflows.

## 1. Main Interface Layout

The Texture Tools window is divided into three primary vertical sections, each with a distinct purpose.

<figure><img src="/files/Nwb8rW6vFtLSZnUAs6P9" alt=""><figcaption></figcaption></figure>

1. **Viewports Panel (Left):** This is the largest section, dedicated to visualizing your textures. It's split into an **Input** area on the left and an **Output** area on the right, allowing you to see your source textures and the results of your jobs side-by-side.
2. **Job List Panel (Middle):** This section contains the list of all the texture operations, or "jobs," you have created. You can add, delete, reorder, and select jobs from this list.
3. **Details Panel (Right):** This is a context-sensitive panel that displays all the settings and parameters for the job currently selected in the Job List.

## 2. The Job List Panel

This is the heart of your workflow, where you manage your queue of texture operations.

<figure><img src="/files/qwa4oiWm8xdDT6y59dxw" alt=""><figcaption></figcaption></figure>

### Managing Jobs

* **Add Job:** Opens a pop-up window where you can select a new job type (e.g., Blend Texture, AI Generation) to add to the list.
* **Delete Jobs:** Removes all currently selected jobs from the list.
* **Run Selected Job:** Executes only the job(s) currently highlighted in the list.
* **Run Entire Queue:** Executes all jobs in the list from top to bottom in sequence.

### The Job List Columns

Each row in the list represents a single job and provides key information:

* **Checkbox:** Toggles whether the job is active or selected.
* **Output Name:** The name that will be given to the final output texture asset.
* **Job Type:** The type of operation this job will perform (e.g., "Modify Texture", "Channel Packer").
* **Status:** Shows the current state of the job.
  * **Ready:** The job has all required inputs and is ready to run.
  * **Missing Inputs:** The job is missing a required input texture.
  * **Running:** The job is currently being processed. A progress bar will appear.
  * **Complete:** The job has finished successfully. A magnifying glass icon will appear, which you can click to browse to the output file.
  * **Failed:** The job failed to complete. An error message will be displayed.

## 3. The Details Panel

This panel is your primary workspace for configuring each job.

* **Context-Sensitive Settings:** The contents of this panel change completely based on which job you have selected in the Job List. It will show all the relevant parameters, such as blend modes, filter types, or AI model selectors.
* **Additional Buttons & Boxes:** Some complex jobs, like the **AI Generation** job, will add extra UI elements at the top of the Details Panel for quick access to common actions like starting the ComfyUI backend or managing presets.

<div><figure><img src="/files/7N9ROhmSsQsO8HwWcYp7" alt=""><figcaption><p>Modify Texture Job Details Panel</p></figcaption></figure> <figure><img src="/files/FAcmEFFtGcrGShidkrj2" alt=""><figcaption><p>AI Generation Job Details Panel</p></figcaption></figure></div>

## 4. The Viewports Panel

This panel is where you visualize your work. It's divided into an **Input** section and an **Output** section.

See the ["Navigating the Viewports"](/assets-and-plugins/texture-tools/how-to-use-5.4+/navigating-the-viewports) guide for a full breakdown on how to use the viewports.

## 5. The Generation Process

When you click "Run Selected Job" or "Run Entire Queue", the tool begins processing. For long operations like AI Generation, the main viewport area will be replaced by a progress bar overlay, showing the overall progress of the queue and the progress of the current node being executed by ComfyUI.

<figure><img src="/files/KbVsMg4JtL37xIvc358W" alt=""><figcaption></figcaption></figure>


# Navigating the Viewports

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed overview of the interactive **Input** and **Output** viewports within the Texture Tools plugin. Understanding these UIs is key to efficiently managing your textures, previewing results, and using advanced features like inpainting and 3D material previews.

## 1. The Anatomy of a Texture Viewer

The foundation of the viewport is the **Texture Viewer**, a self-contained panel for displaying a single texture. Both the Input and Output areas are composed of one or more of these viewers.

<figure><img src="/files/0BVjO5hwQV4j5rYotbRN" alt=""><figcaption></figcaption></figure>

### Header Controls

At the top of each viewer, you'll find a set of utility buttons:

* **Add/Use/Find Buttons (Input Only):**
  * **Plus Icon:** Opens a Content Browser window to let you select a texture.
  * **Arrow Icon:** Uses the texture currently selected in the main Content Browser.
  * **Magnifying Glass Icon:** Locates the currently loaded texture in the Content Browser.
* **Tile Preview:** A numeric box that lets you tile the texture preview (e.g., a value of 2 will show the texture tiled 2x2). This is for preview only and does not affect the output.
* **Channel Toggles (R, G, B, A):** These buttons allow you to isolate and view individual color or alpha channels. This is extremely useful for inspecting masks and packed PBR textures.
* **Zoom Control:** Shows the current zoom percentage. Click it for preset zoom levels or use the **Mouse Wheel** over the image to zoom in and out.

### Interacting with the Viewer

* **Zoom:** Use the **Mouse Wheel** while your cursor is over the image.
* **Pan:** Use the scroll bars to the Bottom and Right to pan the image when zoomed in.
* **Remove Texture (Input Only):** **Right-click** on the image to clear the input slot.

## 2. Viewport Display Modes

Above both the Input and Output viewports is a segmented control that lets you switch between different display modes. The available modes change depending on the currently selected job.

<figure><img src="/files/dR6K372sjYxwanleMXt0" alt=""><figcaption><p>The AI Generation Job has the most view mode types</p></figcaption></figure>

### Grid View

This is the default view. It displays all available input or output texture viewers in a grid layout. This mode is excellent for seeing all your textures at a glance, especially when working with jobs that have multiple inputs like the **Channel Packer**.

<figure><img src="/files/VpWfqUrVgrGONqG5eB5f" alt=""><figcaption><p>Channel Packer Grid Input View</p></figcaption></figure>

### Carousel View

This mode displays only one texture viewer at a time, allowing you to focus on a single image.

* **Navigation:** Use the **<** and **>** arrow buttons below the viewer to cycle through the available textures.
* **Breadcrumbs:** The row of dots between the arrows indicates which texture you are currently viewing. You can also click on a dot to jump directly to that texture.

<figure><img src="/files/VVH5h1TvKenRcFeAaI9t" alt=""><figcaption><p>Channel Packer Carousel Input View</p></figcaption></figure>

### 3D Material View (Output Only)

This mode is available for the **Output** viewport when using a job that generates PBR textures, such as the **AI Generation** job. It allows you to preview your generated material on a 3D mesh in a fully lit environment.

* **Camera Controls:**
  * **Orbit:** Hold the **Left Mouse Button** and drag to orbit the camera around the mesh.
  * **Zoom:** Use the **Mouse Wheel** to zoom in and out.
  * **Pan:** Hold the **Middle Mouse Button** and drag to pan the camera.
* **Toolbar Controls:**
  * **Preview Mesh:** Use the radio buttons to switch between a **Sphere**, **Cube**, **Plane**, and **Cylinder**.
  * **Tile Preview:** Adjust the tiling of the material on the preview mesh.

<figure><img src="/files/nOVhtZB75NLaHjGPnI0l" alt=""><figcaption></figcaption></figure>

### Draw Mask View (Input Only)

This special mode is only available for the **Input** viewport when an **AI Generation** job is selected. It is used for inpainting. For a detailed guide on how to use its specific tools, please refer to the ["User Guide: Inpainting with the Draw Mask Canvas".](/assets-and-plugins/texture-tools/how-to-use-5.4+/ai-generation-job-overview/inpainting-with-the-draw-mask-canvas)

<figure><img src="/files/bHeWl9qsZAWDluw6KeAn" alt=""><figcaption></figcaption></figure>


# Content Browser Integration

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed overview of how to use the **Send to Texture Tools** context menu, a powerful feature that deeply integrates the plugin with the Unreal Engine Content Browser. This allows you to kickstart your texturing workflow faster than ever by sending textures directly from the Content Browser into a new, pre-configured job.

## 1. What is the "Send to Texture Tools" Menu?

The "Send to Texture Tools" is a custom menu that appears when you right-click on a `Texture2D` asset in the Content Browser. It provides a list of all available Texture Tool jobs, allowing you to instantly create a new job and assign the selected texture(s) as its input.

This feature streamlines your workflow by eliminating the need to:

1. Open the Texture Tools window manually.
2. Add a new job.
3. Drag and drop your texture into the input slot.

Instead, you can do all of this in a single click.

<figure><img src="/files/uYBi1iVQ5U3TpuCa8sbx" alt=""><figcaption></figcaption></figure>

## 2. How to Use the Context Menu

Using the context menu is simple and intuitive.

### **Step 1: Select Your Texture(s)**

In the Unreal Engine Content Browser, find and select one or more `Texture2D` assets you want to work with.

### **Step 2: Right-Click to Open the Menu**

Right-click on any of the selected textures to open the asset context menu.

### **Step 3: Choose Your Job**

1. Hover over the **SHADERSOURCE: Texture Tools** category to expand it.
2. Hover over the **Send to Texture Tools** sub-menu.
3. A list of all available jobs will appear (e.g., "Send to Job: Blend Texture", "Send to Job: AI Generation", etc.).
4. Click on the job you want to create.

<figure><img src="/files/mazvsSS72dnPvOTtCT6h" alt=""><figcaption></figcaption></figure>

## 3. What Happens Next?

When you select a job from the context menu, the following actions happen automatically:

1. **The Texture Tools window opens:** If the tool is not already open, it will be launched and brought into focus.
2. **A new job is created:** A new job of the type you selected is added to the top of the job queue.
3. **Textures are assigned:** The texture(s) you had selected in the Content Browser are automatically assigned to the input slots of the newly created job.
4. **The new job is selected:** The new job is automatically selected in the job list, and its properties are displayed in the Details panel, ready for you to configure.

For example, if you select one texture and choose "Send to Job: Modify Texture", the tool will open with a new "Modify Texture" job, and your selected texture will already be loaded into the "INPUT TEXTURE" slot.

This powerful integration makes the Texture Tools plugin feel like a native part of the Unreal Editor, allowing for a seamless and efficient texturing workflow.


# AI Generation Job Overview

This documentation is for update 2.0+, applied to 5.4+.

{% hint style="warning" %}
The AI Generation Job Type is currently experimental! It is subject to change in future updates.
{% endhint %}

*Optional: Clicking the 'X' on the Experimental Warning will dismiss it forever.*

<figure><img src="/files/GcAAYMq4QMYyl1SAKkOh" alt=""><figcaption></figcaption></figure>

Welcome to the AI Generation Job, a powerful tool that integrates the ComfyUI image generation pipeline directly into the Unreal Engine editor. This guide will walk you through setting up the tool, understanding its interface, and generating your first textures.

***

## 1. First-Time Setup

Before you can generate images, you need to connect the plugin to your ComfyUI installation. This is a one-time setup process.

### **Step 1: Download and Install ComfyUI**

First, you need a working, standalone installation of ComfyUI.

1. You can download the latest version from the official [ComfyUI GitHub page](https://github.com/comfyanonymous/ComfyUI/releases).
2. Follow the installation instructions provided in the ComfyUI documentation or Readme file to ensure it is set up correctly before proceeding.

### **Step 2: Set the ComfyUI Path**

You must first tell the plugin where your ComfyUI is located.

1. In the job's Details panel, expand the **Settings** category.
2. In the **ComfyUI Path** field, enter or browse to the root directory of your `ComfyUI_windows_portable` installation (e.g., `C:/ComfyUI_windows_portable`).

<figure><img src="/files/9pXWld9xjz4eHGwDVBWe" alt=""><figcaption></figcaption></figure>

### **Step 3: Install Prerequisites**

ComfyUI requires several third-party custom nodes to work with the included workflows. The plugin can install these for you automatically.

1. Click the **Get Prerequisites** button.
2. A progress bar will appear as the plugin downloads and installs the required custom nodes and Python packages into your ComfyUI directory. This may take a few minutes.

<figure><img src="/files/NUo6OADmv7EKzapnTuSj" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/l23KQOYCB5oRUfrRIzks" alt=""><figcaption></figcaption></figure>

### **Step 4: Start ComfyUI**

The plugin needs to run the ComfyUI backend process.

1. Click the **Link/Start ComfyUI** button.
2. The **ComfyUI Status** text will change. You should see it go from `Stopped` -> `Disconnected` -> `Connected`.
   * **Stopped:** The ComfyUI process is not running.
   * **Disconnected:** The process is running, but the Unreal editor is not yet communicating with it via the WebSocket. It should connect automatically.
   * **Connected:** Everything is ready to go!

You only need to do this once per editor session. The plugin will remember the running process.

<figure><img src="/files/2kFnwbPoMvVzitPp3vec" alt=""><figcaption></figcaption></figure>

***

## 2. The AI Generation Panel

The main interface is located in the Details panel of the AI Generation Job. It's broken down into several sections.

<figure><img src="/files/NTofKaLzrM4j8QMMhh12" alt=""><figcaption></figcaption></figure>

### Main Controls & Status

* **ComfyUI Status:** Shows the current connection state.
* **Save/Load Settings:** The button at the top-right allows you to save your entire configuration as a Data Asset preset and load it later. This is great for saving your favorite settings.
* **Interrupt Generation:** If a generation is taking too long or you want to cancel it, this button will stop the current job in ComfyUI.
* **Send To IMG2IMG:** After a generation is complete, this button will appear. Clicking it sends your last generated "diffuse" texture to the Img2Img input slot, allowing for fast iteration.
* **Stop ComfyUI:** Shuts down the ComfyUI background process.

<figure><img src="/files/XI23ECBYwFBvIpCIj1kU" alt=""><figcaption></figcaption></figure>

### Core Generation Settings

* **Positive & Negative Prompts:** Large text boxes where you enter your desired concepts (e.g., "masterpiece, best quality, brick wall texture") and things to avoid (e.g., "worst quality, blurry, text, watermark").
* **Workflow:** This dropdown is crucial. It lets you select the ComfyUI graph to use (e.g., `TXT2IMG.json`, `IMG2IMG_ControlNet_Upscale.json`). The settings available below will change dynamically based on the nodes present in the selected workflow.
* **AI Models:**
  * **Main Model:** Your primary checkpoint file (e.g., `.safetensors`).
  * **Custom VAE:** (Optional) Use a specific VAE instead of the one baked into the main model.
  * **Upscale Model:** The model to use for upscaling nodes.
  * **ControlNet Model:** The model to use for a ControlNet pass.
* **Settings (Advanced):**
  * **Output Path:** The Content Browser folder where your generated textures will be saved.
  * **Delete Output After Gen:** If checked, the temporary `.png` files in your `ComfyUI/output` folder will be deleted after being imported into Unreal.
  * **Delete Previous Gen:** If checked, textures from the previous run will be deleted from the Content Browser when you start a new one.

<figure><img src="/files/MrQy5Mu7n8FdCbRZAUgt" alt=""><figcaption></figcaption></figure>

***

## 3. Workflow-Specific Settings

The real power of the tool is its dynamic interface. Depending on the **Workflow** you select, different categories of settings will appear.

* **Sampler:** Appears in all generative workflows. Here you control the core generation parameters:
  * **Seed:** The random seed for the generation. Check "Randomize Seed" for a new result every time.
  * **Step Count:** The number of sampling steps. Higher is generally better but slower (e.g., 20-30).
  * **cfg:** How strongly the AI should adhere to your prompt (e.g., 7-10).
  * **Sampler/Scheduler:** The specific sampling algorithm to use (e.g., `euler`, `dpm++_2m_sde`, `karras`).
  * **Image Width/Height:** The dimensions of the generated image.
* **IMG2IMG:** Appears in workflows that start with `IMG2IMG`.
  * **Enable Inpaint:** Toggles inpainting mode. You will need to provide a mask in the `InputMaskTexture` slot.
  * **KSampler\_Denoise:** How much the AI should change the input image. 0.0 means no change, 1.0 is a completely new image.
* **ControlNet:** Appears in workflows with `_ControlNet` in their name.
  * **ControlNet\_Strength:** The influence of the ControlNet on the final image.
* **SD Upscale:** Appears in workflows with `_Upscale` in their name.
  * **UpscaleBy:** The factor to multiply the resolution by (e.g., 2.0 for 2x).
  * **Upscale\_Denoise:** How much detail the upscaler can add or change. Low values (0.1-0.3) are recommended.
* **LORAs:** Appears in workflows that support LoRA. You can add them here, specifying the file and its model/text strength.
* **PBR:** Appears in workflows that can output PBR maps. This is a group of categories for fine-tuning the post-processing effects that generate the Normal, Roughness, and AO maps.

<figure><img src="/files/cV21OnOA0QntG4Uug5SG" alt=""><figcaption></figcaption></figure>

***

## 4. Generating Textures

1. **Select a Workflow:** Choose the appropriate workflow for your task (e.g., `TXT2IMG.json` for a simple text-to-image, or `IMG2PBR.json` for a PBR conversion).
2. **Set Your Prompts & Settings:** Fill in the prompts and adjust the Sampler, Model, and other settings as desired.
3. **(Optional) Provide Input Textures:** If using an `IMG2IMG` or `ControlNet` workflow, drag and drop textures from the Content Browser into the `InputTextureImg2Img` or `InputTextureControlNet` slots in the **TextureInputs** category.
4. **Click Generate:** Press the main "Generate" button at the top of the Texture Tools window.
5. **Monitor Progress:** A progress bar will appear at the bottom of the job panel, showing the overall progress and the title of the specific ComfyUI node currently being executed.
6. **Find Your Texture:** Once complete, the generated texture(s) will appear in the **Output Path** you specified in the Content Browser.

<figure><img src="/files/QS3cwIT1tBTQYVABfSLi" alt=""><figcaption></figcaption></figure>

***

## 5. Saving and Loading Presets

You can save a complete set of configurations to a Data Asset to reuse later.

* **Save As:** Click the Save/Load button and choose "Save Settings As". This will prompt you to create a new `AIGenSettings` Data Asset in your Content Browser.
* **Save:** If you have already saved or loaded a preset, this option will overwrite that asset with your current settings. An asterisk `*` next to the preset name indicates you have unsaved changes.
* **Load:** To load a preset, click the Save/Load button. The bottom section of the menu is an asset picker. Simply find and click on a previously saved `AIGenSettings` asset to apply all its settings to your current job instantly.


# AI Model Recommendations

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a list of recommended AI models, VAEs, ControlNets, and LoRAs specifically for generating high-quality, realistic PBR textures with the AI Generation Job. The right combination of these assets can significantly improve the detail, realism, and consistency of your materials.

**Note:** Workflows and models are generally not cross-compatible between Stable Diffusion 1.5 (SD 1.5) and SDXL. Ensure the models you choose match the base model of your selected workflow.

## 1. Main Models (Checkpoints)

The Main Model is the foundation of your generation. For PBR textures, you want a model that excels at photorealism and fine detail.

<figure><img src="/files/9Z2FL2hFKTxXlh6nDpdj" alt=""><figcaption><p><strong>Juggernaut XL</strong></p></figcaption></figure>

<table data-full-width="false"><thead><tr><th>Model Name</th><th>Model Type</th><th>Why it's Recommended for PBR</th><th>Where to Find It</th></tr></thead><tbody><tr><td><strong>Realistic Vision v6.0</strong></td><td>SD 1.5</td><td>Excellent photorealism and fine details.</td><td><a href="https://civitai.com/models/4201/realistic-vision-v60-b1">Civitai</a></td></tr><tr><td><strong>DreamShaper</strong></td><td>SD 1.5</td><td>Versatile, great for complex prompts.</td><td><a href="https://civitai.com/models/4384/dreamshaper">Civitai</a></td></tr><tr><td><strong>Juggernaut XL</strong></td><td>SDXL</td><td>Top-tier SDXL model for detail.</td><td><a href="https://civitai.com/models/133005/juggernaut-xl">Civitai</a></td></tr><tr><td><strong>RealVisXL</strong></td><td>SDXL</td><td>Maximum realism for photorealistic textures.</td><td><a href="https://civitai.com/models/139562/realvisxl-v40">Civitai</a></td></tr></tbody></table>

### 1.1 Notable Mentions for Stylized Textures

While the models above focus on realism, the following checkpoints are excellent for creating stylized, hand-painted, or non-photorealistic (NPR) textures suitable for games like Valorant, Fortnite, or Genshin Impact.

<div><figure><img src="/files/ZA6IogAcmdyPrMiVVjei" alt=""><figcaption><p>Stylized</p></figcaption></figure> <figure><img src="/files/sD7Lk38ddYzMnlfzVK58" alt=""><figcaption><p>Realistic</p></figcaption></figure></div>

<table data-full-width="false"><thead><tr><th>Model Name</th><th>Model Type</th><th>Why it's Recommended for Stylized Textures</th><th>Where to Find It</th></tr></thead><tbody><tr><td><strong>Rev Animated</strong></td><td>SD 1.5</td><td>Clean, vibrant, illustrative style.</td><td><a href="https://civitai.com/models/7371/rev-animated">Civitai</a></td></tr><tr><td><strong>ToonYou</strong></td><td>SD 1.5 / SDXL</td><td>Cartoonish or Ghibli-esque style.</td><td><a href="https://civitai.com/models/30240/toonyou">Civitai</a></td></tr><tr><td><strong>Animagine XL</strong></td><td>SDXL</td><td>High-quality, polished anime style.</td><td><a href="https://huggingface.co/cagliostrolab/animagine-xl-3.0">Hugging Face</a></td></tr></tbody></table>

## 2. Custom VAEs

A VAE (Variational Autoencoder) translates the AI's internal "latent" image into the final pixel image. A good VAE prevents washed-out colors and enhances fine details.

<table data-full-width="false"><thead><tr><th>VAE Name</th><th>Model Type</th><th>Why it's Recommended</th><th>Where to Find It</th></tr></thead><tbody><tr><td><strong>vae-ft-mse-840000-ema-pruned</strong></td><td>SD 1.5</td><td>Industry standard; prevents washed-out colors.</td><td><a href="https://huggingface.co/stabilityai/sd-vae-ft-mse-original/tree/main">Hugging Face</a></td></tr><tr><td><strong>sdxl_vae.safetensors</strong></td><td>SDXL</td><td>Official VAE for best SDXL results.</td><td><a href="https://huggingface.co/stabilityai/sdxl-vae/tree/main">Hugging Face</a></td></tr></tbody></table>

## 3. Upscale Models

An upscaler increases the resolution of your generated image. These models are generally compatible with both SD 1.5 and SDXL outputs.

<div><figure><img src="/files/sD7Lk38ddYzMnlfzVK58" alt=""><figcaption><p>1024x1024</p></figcaption></figure> <figure><img src="/files/UvQ1NOmXukIlNJurt38e" alt=""><figcaption><p>2048x2048</p></figcaption></figure></div>

<table data-full-width="false"><thead><tr><th>Upscaler Name</th><th>Model Type</th><th>Why it's Recommended</th><th>Where to Find It</th></tr></thead><tbody><tr><td><strong>4x-UltraSharp</strong></td><td>Universal</td><td>Adds significant sharpness and detail.</td><td><a href="https://civitai.com/models/116225/4x-ultrasharp">Civitai</a></td></tr><tr><td><strong>4x_NMKD-Siax_200k</strong></td><td>Universal</td><td>Popular, high-quality, clean results.</td><td><a href="https://openmodeldb.info/models/4x_NMKD-Siax_200k">OpenModelDB</a></td></tr><tr><td><strong>SwinIR_4x</strong></td><td>Universal</td><td>Natural detail restoration for organics.</td><td><a href="https://openmodeldb.info/models/SwinIR">OpenModelDB</a></td></tr></tbody></table>

## 4. ControlNet Models

ControlNet models are essential for guiding the generation process to create specific structures. **You must use ControlNet models that match your base model version (SD 1.5 or SDXL).**

<figure><img src="/files/p93mravRCfqYu0mCtaLc" alt=""><figcaption><p>SDXL Depth Control Net</p></figcaption></figure>

**ControlNet Models (for SD 1.5)**

<table data-full-width="false"><thead><tr><th>ControlNet Model</th><th>Use Case for PBR</th></tr></thead><tbody><tr><td><strong>control_v11p_sd15_normalbae</strong></td><td>Essential for 3D shape/depth.</td></tr><tr><td><strong>control_v11f1p_sd15_depth</strong></td><td>Controls height differences (walls, tiles).</td></tr><tr><td><strong>control_v11p_sd15_canny</strong></td><td>Defines hard outlines (grout, planks).</td></tr><tr><td><strong>control_v11p_sd15_softedge</strong></td><td>Defines soft shapes (fabric, grain).</td></tr><tr><td><em>You can find the official SD 1.5 ControlNet 1.1 models on</em> <a href="https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main"><em>Hugging Face</em></a><em>.</em></td><td><br></td></tr></tbody></table>

**ControlNet Models (for SDXL)**

<table data-full-width="false"><thead><tr><th>ControlNet Model</th><th>Use Case for PBR</th></tr></thead><tbody><tr><td><strong>control-lora-depth-rank256</strong></td><td>Controls height and structure.</td></tr><tr><td><strong>control-lora-canny-rank256</strong></td><td>Enforces strong structural lines.</td></tr><tr><td><strong>control-lora-recolor-rank256</strong></td><td>Guides color for patterned textures.</td></tr><tr><td><em>You can find these and other official SDXL ControlNet LoRAs on</em> <a href="https://huggingface.co/stabilityai/control-lora/tree/main"><em>Hugging Face</em></a><em>.</em></td><td><br></td></tr></tbody></table>

## 5. LoRAs for PBR Texturing

LoRAs (Low-Rank Adaptations) are small files that inject a specific style or concept. They are not cross-compatible; a LoRA made for SD 1.5 will not work with an SDXL model, and vice-versa.

<table data-full-width="false"><thead><tr><th>LoRA Name</th><th>Model Type</th><th>Why it's Recommended</th><th>Where to Find It</th></tr></thead><tbody><tr><td><strong>Add More Details</strong></td><td>SD 1.5</td><td>Enhances micro-details and sharpness.</td><td><a href="https://civitai.com/models/58390/add-more-details-detail-enhancer-tweaker-lora">Civitai</a></td></tr><tr><td><strong>epiCRealism Helper</strong></td><td>SD 1.5</td><td>Guides models towards photorealism.</td><td><a href="https://civitai.com/models/132538/epicrealism-helper">Civitai</a></td></tr><tr><td><strong>SDXL Detail Tweaker</strong></td><td>SDXL</td><td>SDXL version of "Add More Details".</td><td><a href="https://civitai.com/models/122359/detail-tweaker-lora-sdxl">Civitai</a></td></tr><tr><td><strong>Texture-Specific LoRAs</strong></td><td>Both</td><td>Improves results for specific materials.</td><td></td></tr></tbody></table>

*You can find these and many more LoRAs on websites like* [*Civitai*](https://civitai.com/)*. Remember to check which base model (SD 1.5 or SDXL) they were trained on.*


# PBR Texture Prompting Guide

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a comprehensive overview of how to write effective prompts for generating high-quality PBR textures. A well-structured prompt is the key to unlocking the full potential of the AI models.

## 1. The Anatomy of a Great PBR Prompt

A good prompt is more than just a simple description. It's a structured set of instructions that tells the AI not only *what* to create, but also *how* to create it in terms of quality, detail, and style. A great PBR prompt generally consists of these five parts:

1. **Quality Terms:** Words that push the AI towards its best possible output.
2. **Subject Definition:** Clearly states that you are creating a texture or material.
3. **Primary Material:** The core material you want to generate (e.g., wood, metal, stone).
4. **Detail & Descriptor Keywords:** Specific words that describe the look, feel, and condition of the material.
5. **Style & Lighting:** Words that define the overall aesthetic (e.g., photorealistic, stylized) and the lighting environment.

## 2. The "Magic" Starter Prompts

Instead of starting from scratch every time, use these robust starter prompts as a foundation and build upon them.

### Universal Positive Prompt Starter

This prompt includes essential quality and texture-related keywords. Copy this into the **Positive Prompt** box and then add your specific material description.

```
(masterpiece, best quality, high resolution, photorealistic, PBR texture, 8k), (game texture, material definition, surface detail),

```

### Universal Negative Prompt Starter

This prompt is designed to eliminate common visual artifacts, unwanted objects, and styles that are not suitable for a clean texture. Copy this into the **Negative Prompt** box.

```
(worst quality, low quality, normal quality, blurry, jpeg artifacts, signature, watermark, text, username), (human, person, character, man, woman), (3d, cgi, render, scene, diorama), painting, drawing, cartoon, anime

```

## 3. Crafting Specific Material Prompts

Now, let's combine the starter prompts with specific material descriptions.

### Example 1: Old Oak Wood Planks

<figure><img src="/files/uirVfkgGUf1CbhsI6xJM" alt=""><figcaption></figcaption></figure>

**Positive Prompt:**&#x20;

```
(masterpiece, best quality, high resolution, photorealistic, PBR texture, 8k), (game texture, material definition, surface detail), old oak wood planks, weathered, deep grain, splintered, knots, aged, rustic, detailed wood texture
```

**Breakdown:**

* **Quality & Subject:** Covered by the starter prompt.
* **Primary Material:** `old oak wood planks`
* **Details & Descriptors:** `weathered`, `deep grain`, `splintered`, `knots`, `aged`, `rustic`
* **Style & Lighting:** `photorealistic`, `detailed wood texture`

### Example 2: Rocky Cliff Face

<figure><img src="/files/NIxfqopMcUSeiHCyLDLZ" alt=""><figcaption></figcaption></figure>

**Positive Prompt:**&#x20;

```
(masterpiece, best quality, high resolution, photorealistic, PBR texture, 8k), (game texture, material definition, surface detail), rocky cliff face, sheer rock, layered strata, sharp edges, craggy, granite, sediment, high frequency detail
```

**Breakdown:**

* **Quality & Subject:** Covered by the starter prompt.
* **Primary Material:** `rocky cliff face`
* **Details & Descriptors:** `sheer rock`, `layered strata`, `sharp edges`, `craggy`, `granite`, `sediment`
* **Style & Lighting:** `photorealistic`, `high frequency detail`

### Example 3: Ruined Castle Wall

<figure><img src="/files/Tl1n69REaxWFHykWZQUh" alt=""><figcaption></figcaption></figure>

**Positive Prompt:**&#x20;

```
(masterpiece, best quality, 4k, sharp focus), fantasy style, game texture, ruined castle wall, weathered stone bricks, crumbling mortar, ancient, medieval, damp
```

**Breakdown:**

* **Quality & Subject:** `masterpiece`, `best quality`, `game texture`
* **Primary Material:** `ruined castle wall`
* **Details & Descriptors:** `weathered stone bricks`, `crumbling mortar`, `overgrown with moss and vines`, `ancient`, `medieval`, `damp`
* **Style & Lighting:** `fantasy style`

### Example 4: Stylized Ruined Castle Wall

<figure><img src="/files/9Wjad2JJ9cWav8zVTcv3" alt=""><figcaption></figcaption></figure>

**Positive Prompt:**&#x20;

```
(masterpiece, best quality, 4k, sharp focus), stylized, hand-painted game texture, World of Warcraft style, ruined castle wall, chunky stone bricks, exaggerated cracks, vibrant green moss, bold outlines, painterly
```

**Negative Prompt:**&#x20;

```
photorealistic, realistic, photo, dull colors, blurry, soft focus, intricate detail
```

**Breakdown:**

* **Quality & Subject:** `masterpiece`, `best quality`, `4k`, `sharp focus`, `game texture`
* **Primary Material:** `ruined castle wall`
* **Details & Descriptors:** `chunky stone bricks`, `exaggerated cracks`, `vibrant green moss`
* **Style & Lighting:** `stylized`, `hand-painted`, `World of Warcraft style`, `bold outlines`, `painterly`

## 4. PBR Keyword Cheatsheet

Use these keywords to enhance your prompts. Mix and match them to achieve your desired look.

<table><thead><tr><th width="374">Category</th><th>Keywords</th></tr></thead><tbody><tr><td><strong>Surface Quality</strong></td><td><code>detailed</code>, <code>intricate detail</code>, <code>high frequency detail</code>, <code>micro-surface</code>, <code>sharp focus</code>, <code>crisp</code></td></tr><tr><td><strong>Lighting</strong></td><td><code>flat lighting</code>, <code>even lighting</code>, <code>studio lighting</code>, <code>neutral lighting</code>, <code>no shadows</code>, <code>ambient light</code></td></tr><tr><td><strong>Wood</strong></td><td><code>wood grain</code>, <code>knots</code>, <code>splintered</code>, <code>aged wood</code>, <code>weathered</code>, <code>planks</code>, <code>bark</code>, <code>polished wood</code></td></tr><tr><td><strong>Metal</strong></td><td><code>scratched</code>, <code>dented</code>, <code>corroded</code>, <code>pitted</code>, <code>brushed metal</code>, <code>polished</code>, <code>anodized</code>, <code>welded seams</code></td></tr><tr><td><strong>Stone &#x26; Rock</strong></td><td><code>cracked</code>, <code>chipped</code>, <code>eroded</code>, <code>porous</code>, <code>layered rock</code>, <code>granite</code>, <code>marble</code>, <code>slate</code>, <code>pebbles</code></td></tr><tr><td><strong>Fabric</strong></td><td><code>woven</code>, <code>stitching</code>, <code>frayed</code>, <code>loose threads</code>, <code>denim</code>, <code>leather</code>, <code>burlap</code>, <code>silk</code>, <code>wool</code></td></tr><tr><td><strong>Condition</strong></td><td><code>clean</code>, <code>pristine</code>, <code>new</code>, <code>worn</code>, <code>damaged</code>, <code>dirty</code>, <code>grimy</code>, <code>mossy</code>, <code>dusty</code>, <code>wet</code></td></tr><tr><td><strong>Stylized</strong></td><td><code>hand-painted</code>, <code>stylized</code>, <code>illustrative</code>, <code>cel-shaded</code>, <code>anime style</code>, <code>painterly</code>, <code>graphic novel</code></td></tr></tbody></table>

## 5. Advanced Prompting Tips

* **Prompt Weighting:** You can increase or decrease the importance of a word or phrase by using parentheses and a colon. `(word:1.2)` increases its weight by 20%, while `(word:0.8)` decreases it. This is great for fine-tuning.
* **Iterate, Don't Overwrite:** If a prompt isn't working, don't delete it. Instead, add or remove keywords one at a time. This helps you understand what is influencing the result.
* **Be Specific, Then Broad:** Start with a very specific prompt (e.g., `cracked gray slate tile`). If the AI struggles, make it broader (e.g., `stone tile floor`).


# Inpainting with the Draw Mask Canvas

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the powerful inpainting features of the AI Generation Job. Inpainting allows you to regenerate a *specific part* of an image, which is perfect for fixing small errors, adding new details, or completely changing an object within a texture. This is all done using the `IMG2IMG` workflow and the integrated **Draw Mask** view.

## 1. Understanding the Inpainting View

The inpainting process is handled within the **Input** viewport. It combines a standard texture input with a special drawing canvas.

#### **Switching to Draw Mask View**

1. First, select an `IMG2IMG` workflow (e.g., `IMG2IMG.json`).
2. In the **TextureInputs** category, provide a texture to the **Img2Img INPUT** slot. This will be the image you draw on.
3. Above the input viewport, you will see a segmented control for the view mode. Click on **"Draw Mask"** to enter the interactive canvas.

<figure><img src="/files/aS1maDDzx8k0TPShyuCP" alt=""><figcaption></figcaption></figure>

In this view, the Img2Img input texture is used as the background. You can now draw directly on it to create your inpainting mask. The masked area will be shown with a semi-transparent red overlay.

## 2. The Brush Options Toolbar

When you are in the Draw Mask view, a toolbar appears at the top of the canvas, giving you full control over your brush.

<figure><img src="/files/Akicmzxuc8eDGcm3RJO4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/35rLKkLvU5oQ7QLU0XXe" alt=""><figcaption></figcaption></figure>

* **Type:** Choose your brush style.
  * **Regular:** A standard, circular brush.
  * **Spray:** A spray-paint effect that places multiple dots within the brush radius.
* **Size:** Controls the overall radius of your brush.
  * **Shortcut:** Use the **Mouse Wheel** to change the brush size.
* **Feather:** Controls the softness of the brush edge. A higher value creates a smoother blend.
  * **Shortcut:** Hold **Shift + Mouse Wheel** to change the feather amount.
* **Density (Spray Only):** Controls how many dots are placed with each application of the spray brush.
* **Splatter (Spray Only):** Controls the size of the individual dots within the spray.
* **Clear Mask:** A button that instantly erases the entire mask, filling it with black.

#### **Drawing and Erasing**

* **Draw (Add to Mask):** Hold the **Left Mouse Button** to draw on the canvas. This will paint white into the mask, which appears as a red overlay. The AI will only regenerate these areas.
* **Erase (Remove from Mask):** Hold the **Right Mouse Button** to erase parts of your mask. This paints black into the mask, removing the red overlay.

## 3. Step-by-Step Inpainting Guide

Let's walk through a complete example: adding ivy on top of a brick wall texture.

1. **Select Workflow and Input:**
   * Choose the `IMG2IMG.json` workflow.
   * Drag your brick wall texture into the **Img2Img INPUT** slot.
2. **Enter Draw Mask View:**
   * Click the **"Draw Mask"** button in the input viewport's mode selector.
3. **Draw Your Mask:**
   * Use the brush tools to draw a path where you want the ivy to grow. Use the **Left Mouse Button** to paint the area. Don't worry about being perfect; an organic shape is often better.
4. **Enable Inpainting and Set Prompt:**
   * In the **IMG2IMG** category in the Details panel, check the box for **Enable Inpaint**.
   * In the **Positive Prompt**, describe what should appear *inside the masked area*. For example: `(masterpiece, best quality), lush green ivy climbing the wall, detailed leaves, overgrown`.
5. **Adjust Denoise:**
   * For inpainting, a higher **KSampler\_Denoise** value (e.g., `0.7` to `1.0`) is often best, as it gives the AI more freedom to create the new object from scratch.
6. **Generate:**
   * Click the main "Generate" button. The AI will process the image, replacing only the area you masked with ivy that matches your prompt.

<figure><img src="/files/2rOeQVqgdmy8vTO3DYGr" alt=""><figcaption></figcaption></figure>


# Quick Tutorials

This documentation is for update 2.0+, applied to 5.4+.

### Tutorials

* [Quick Tutorials](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials)
  * [Tutorial: Blend Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-blend-texture)
  * [Tutorial: Channel Packer](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-channel-packer)
  * [Tutorial: Insert Alpha Channel](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-insert-alpha-channel)
  * [Tutorial: Modify Texture](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-modify-texture)
  * [Tutorial: Normal From Height](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-normal-from-height)
  * [Tutorial: Texture Filters](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-filters)
  * [Tutorial: Texture Noise](/assets-and-plugins/texture-tools/how-to-use-5.4+/quick-tutorials/tutorial-texture-noise)


# Tutorial: Modify Texture

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Modify Texture** job. This is a powerful utility job that allows you to perform a wide range of adjustments to a single texture, including transformations, color corrections, and making textures seamlessly tileable.

## 1. Setting Up the Modify Texture Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Modify Texture**.
3. A new "Modify Texture" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/0X3vnCyGTxiqqropCZlv" alt=""><figcaption></figcaption></figure>

## 2. Providing the Input Texture

The Modify Texture job operates on a single input texture.

* In the **Input** viewport on the left, drag and drop the texture you wish to modify from the Content Browser into the **INPUT TEXTURE** slot.

<figure><img src="/files/oxkJpE6B4B9gSU4boSB7" alt=""><figcaption></figcaption></figure>

## 3. Configuring the Modifications

All the settings for this job are located in the **Input Settings** category in the Details panel. They are grouped into several sub-categories.

### Seamless Tiling

This section allows you to make a non-tiling texture seamlessly repeatable.

* **Enable Seamless Tiling:** Check this box to activate the seamless tiling algorithm.
* **Blend Width:** Controls the softness of the blend at the texture's edges. Higher values create a smoother, more gradual transition.
* **Height Lerp Amount:** Uses the brightness of the texture to influence the blend, which can help hide seams on textures with clear height differences.

<figure><img src="/files/CfUH98i3wk5UjBBujAWm" alt=""><figcaption><p>Tile a non-tiled texture seamlessly</p></figcaption></figure>

### Transform

This section contains all the tools for rotating, scaling, and positioning your texture.

* **Correct Normal Map Rotation:** **IMPORTANT!** If you are rotating a normal map, you **must** check this box. It correctly inverts the green channel to ensure the lighting information remains accurate after rotation. This will disable the "Seamless Tiling" option.
* **Tile Amount:** Repeats the texture within the frame. A value of `2` will tile the texture twice horizontally and vertically.
* **Rotation (Degrees):** Rotates the texture clockwise by the specified amount.
* **Scale (X/Y):** Stretches or squashes the texture. `X=1, Y=1` is the original scale.
* **Flip Horizontally / Vertically:** Flips the texture along the corresponding axis.
* **Shift (U/V):** Moves the texture's position. A value of `0.5` in X will shift the texture halfway across the frame.

<figure><img src="/files/Y7IXnHma2l3hVgBM5Z2Q" alt=""><figcaption><p>Correctly rotate a normal map texture</p></figcaption></figure>

### Color Adjustments

Use these settings to alter the look and feel of your texture's colors.

* **Contrast:** Increases or decreases the difference between light and dark areas.
* **Preserve Color on Contrast:** Prevents colors from shifting hue when adjusting contrast.
* **Invert Color:** Inverts all colors in the texture.
* **Hue Shift (Degrees):** Rotates the colors around the color wheel.
* **Color Overlay:** Tints the entire texture with the selected color. The alpha value of the color swatch controls the intensity of the overlay.

<figure><img src="/files/Hs8RzGQtmVBCMsmKyR9i" alt=""><figcaption><p>Apply a sepia tone to a texture using the Color Overlay.</p></figcaption></figure>

### Opacity

These settings modify the texture's alpha (transparency) channel.

* **Opacity Power:** Adjusts the curve of the alpha channel. Values greater than 1 make the alpha more opaque, while values less than 1 make it more transparent.
* **Opacity Multiply:** Multiplies the overall alpha value, making it brighter or darker.
* **Floor Opacity:** Clamps all alpha values to either 0 (fully transparent) or 1 (fully opaque), creating a hard-edged mask.

## 4. Generating the Modified Texture

1. Once you have configured your input and settings, ensure the **Modify Texture** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will process your texture with all the selected modifications. The new texture asset will be saved to the path specified in the **Generate Settings** category.


# Tutorial: Texture Filters

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Texture Filters** job. This is a versatile utility job that allows you to apply a wide variety of common post-processing effects and artistic filters to your textures, such as blurs, sharpening, edge detection, and painterly effects.

## 1. Setting Up the Texture Filters Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Texture Filters**.
3. A new "Texture Filters" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/QlqlJMTTFjE0EtafjYJQ" alt=""><figcaption></figcaption></figure>

## 2. Providing the Input Texture

The Texture Filters job operates on a single input texture.

* In the **Input** viewport on the left, drag and drop the texture you wish to modify from the Content Browser into the **INPUT TEXTURE** slot.

## 3. Configuring the Filter

All the settings for this job are located in the **Input Settings** category in the Details panel.

### Selecting a Filter

The most important setting is the **Texture Filter Type** dropdown. This determines which effect will be applied to your image. When you select a filter, its specific parameters will appear below the dropdown, allowing you to fine-tune the effect.

### Filter Types and Parameters

Here is a breakdown of each available filter and its unique settings.

#### **Simple Blur**

Applies a basic, uniform blur to the image.

* **Blur Distance:** Controls the radius or "spread" of the blur effect.
* **Blur Steps:** The number of samples used to create the blur. Higher values result in a smoother, higher-quality blur but are more performance-intensive.

<figure><img src="/files/OVQQqHnlNLoEiTTsQvbq" alt=""><figcaption></figcaption></figure>

#### **Spiral Blur**

Creates a blur effect that twists in a spiral pattern from the center of the image.

* **Blur Distance & Steps:** Controls the base amount of blur.
* **Radial Blur Steps:** The number of steps taken along the spiral path.
* **Radial Blur Offset:** Controls the tightness of the spiral.
* **Radial Blur Kernal Power:** Adjusts the intensity of the blur along the spiral.

<figure><img src="/files/FUBgANk16oM8oHg4sTAa" alt=""><figcaption></figcaption></figure>

#### **Motion Blur / Motion Blur With Chromatic Shift**

Applies a directional blur to simulate movement. The "Chromatic Shift" version adds a color fringe effect for a more stylistic look.

* **Blur Distance & Steps:** Controls the length and quality of the blur streaks.
* **Motion Blur Vector:** An X/Y value that sets the direction of the blur. For example, `(X=1, Y=0)` creates a horizontal blur to the right.

<figure><img src="/files/k3uuq7VHuepon7VxQzoF" alt=""><figcaption></figcaption></figure>

#### **Sharpen**

Enhances the details and edges in the texture, making it appear crisper.

* **Sharpen Amount:** The intensity of the sharpening effect.
* **Sample Offset:** The distance (in pixels) used to compare pixels for the sharpening calculation.

<figure><img src="/files/MaEuTGp0pyCiCCiGFiG4" alt=""><figcaption></figcaption></figure>

#### **Pixelate**

Reduces the texture to a grid of large, solid-colored blocks for a retro, pixel-art look.

* **Pixel Resolution:** The number of "pixels" along the width of the texture. A lower value results in larger, chunkier pixels.

<figure><img src="/files/ixoonBqFIClIesPN7DA9" alt=""><figcaption></figcaption></figure>

#### **Edge Detection**

Creates a line-art version of the texture by detecting the edges between light and dark areas.

* **Edge Transition:** Controls the softness or hardness of the detected edges.
* **Shader Resolution:** The internal resolution used for the edge detection calculation.
* **Luminance:** A color value used to weigh the importance of the R, G, and B channels when detecting edges.
* **Background Color:** The color of the non-edge areas.
* **Line Color:** The color of the detected edge lines.

<figure><img src="/files/DOzoQg85CVSGRBNgIlAj" alt=""><figcaption></figcaption></figure>

#### **Toon**

Reduces the number of colors in the image to create a cel-shaded or "toon" look.

* **Toon Amount:** Controls the number of color bands or "steps" in the final image.

<figure><img src="/files/ETzV9plB85C98JYAAQAr" alt=""><figcaption></figcaption></figure>

#### **Kuwahara (Painterly)**

A non-linear filter that smooths the image while preserving edges, creating a stylized, painterly, or watercolor-like effect.

* **Kuwahara Radius:** The size of the sampling area. Larger values create a more abstract, painterly look but are more computationally expensive.
* **Kuwahara Blur Blend:** Blends a slight blur into the final result to soften the effect. `0` is no blur, `1` is full blur.

<figure><img src="/files/80IHebmf54da8LjboOcs" alt=""><figcaption></figcaption></figure>

## 4. Generating the Filtered Texture

1. Once you have selected your filter and configured its parameters, ensure the **Texture Filters** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will apply the filter to your input texture. The new texture asset will be saved to the path specified in the **Generate Settings** category with the `_Filter` suffix.


# Tutorial: Channel Packer

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Channel Packer** job. This is a powerful utility for optimizing texture memory in your game projects. It allows you to combine up to four separate grayscale textures into the individual Red, Green, Blue, and Alpha channels of a single output texture.

## 1. What is Channel Packing?

In game development, textures are a major consumer of memory. Often, you have multiple textures that only store grayscale information (like Roughness, Metallic, Ambient Occlusion, or masks). Instead of saving each of these as a separate file, you can "pack" them into the R, G, B, and A channels of a single texture. This allows the game engine to load one texture instead of three or four, significantly reducing memory usage and improving performance. A common example is packing Roughness into the Red channel, Height into the Green, and Ambient Occlusion into the Blue (an "RHA" map).

## 2. Setting Up the Channel Packer Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Channel Packer**.
3. A new "Channel Packer" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/daFNP3C1mRq0jIXWCnUR" alt=""><figcaption></figcaption></figure>

## 3. Providing Input Textures

The Channel Packer job can take up to four input textures. The input viewers are arranged in a 2x2 grid and are labeled to correspond with the output channels they will primarily contribute to.

* **TEXTURE A (R):** The texture that will contribute to the **Red** channel of the final image.
* **TEXTURE B (G):** The texture that will contribute to the **Green** channel.
* **TEXTURE C (B):** The texture that will contribute to the **Blue** channel.
* **TEXTURE D (A):** The texture that will contribute to the **Alpha** channel.

Drag and drop your grayscale textures from the Content Browser into the appropriate slots. For example, if creating a Roughness/Height/AO map:

* Drag your Roughness map into the **TEXTURE A (R)** slot.
* Drag your Height map into the **TEXTURE B (G)** slot.
* Drag your Ambient Occlusion map into the **TEXTURE C (B)** slot.
* (Optional) Drag your Opacity map into the **TEXTURE D (A)** slot.

<figure><img src="/files/FRwu955mmhSm4SHcRreH" alt=""><figcaption><p>This will make a RHAO mask texture (Roughness, Height, AO, Opacity)</p></figcaption></figure>

## 4. Configuring the Pack

The settings for this job are located in the **Input Settings** category in the Details panel. For each of the four output channels (A, B, C, D), you have a dropdown menu that lets you select which channel from the corresponding input texture to use.

* **Channel Slot A:** Selects the source channel from **Texture A** to be placed in the final **Red** channel.
* **Channel Slot B:** Selects the source channel from **Texture B** to be placed in the final **Green** channel.
* **Channel Slot C:** Selects the source channel from **Texture C** to be placed in the final **Blue** channel.
* **Channel Slot D:** Selects the source channel from **Texture D** to be placed in the final **Alpha** channel.

Since you are typically packing grayscale textures, the source channel (R, G, or B) usually doesn't matter as they are all the same. The default settings are generally correct, taking the Red channel from Texture A, the Green from Texture B, and so on.

<figure><img src="/files/VDTwCAk0ayPOofh7Z19T" alt=""><figcaption></figcaption></figure>

## 5. Generating the Packed Texture

1. Once you have provided your input textures and configured the channel slots, ensure the **Channel Packer** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will combine the selected channels from your input textures into a single new texture. The new texture asset will be saved to the path specified in the **Generate Settings** category.


# Tutorial: Blend Texture

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Blend Texture** job. This powerful utility allows you to combine two separate textures using a wide variety of professional blending modes, similar to layer blending in applications like Photoshop. It's perfect for adding grime to a wall, blending two different ground textures, or combining masks.

## 1. Setting Up the Blend Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Blend Texture**.
3. A new "Blend Texture" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/MekkTsggVnwUOIPNZD63" alt=""><figcaption></figcaption></figure>

## 2. Providing Input Textures

The Blend Texture job requires two inputs, which you can provide in the **Input** viewport on the left side of the tool.

* **INPUT BASE TEXTURE:** This is the primary, bottom-layer texture.
* **INPUT BLEND TEXTURE:** This is the secondary texture that will be blended on top of the base.

Drag and drop your textures from the Content Browser into these two slots.

<figure><img src="/files/f2qtZYTZwFPrB1cb6rF1" alt=""><figcaption><p>Blending Diffuse with AO with Multiply</p></figcaption></figure>

## 3. Configuring the Blend

All the settings for this job are located in the **InputSettings** category in the Details panel.

### Blend Settings

This section controls the core blending operation.

* **Blend Mode:** This dropdown determines the mathematical formula used to combine the two textures. See the ["All Blend Modes Explained"](#id-4.-all-blend-modes-explained) section below for a detailed list.
* **Opacity Blend Mode:** This controls how the alpha channels (transparency) of the two textures are combined in the final output.
  * **None (Use Base Alpha):** Ignores the blend texture's alpha and just uses the alpha from the base texture.
  * **Add / Multiply:** Adds or multiplies the alpha channels, similar to the color blend modes.

<figure><img src="/files/yR58Cq6CNzs2UCp4Usmh" alt=""><figcaption></figcaption></figure>

### Base Texture & Blend Texture Settings

These two sections give you individual control over each texture before they are blended.

* **Channel:** Allows you to use the full RGB color or isolate a single channel (Red, Green, or Blue) from the texture for the blend operation. For example, you could blend only the red channel of a noise texture onto your base.
* **Tiling:** Sets a tiling factor for the texture. A value of `2.0` will make the texture tile twice within the same space.
* **Weight:** Controls the contribution or intensity of the texture in the final blend. A value of `1.0` is full strength, while `0.0` removes it completely.

## 4. All Blend Modes Explained

Here is a list of all available blend modes and a brief explanation of what they do.

| Blend Mode                        | Explanation                                                                       |
| --------------------------------- | --------------------------------------------------------------------------------- |
| **Add**                           | Adds the pixel values of both layers. Results in a brighter image.                |
| **Multiply**                      | Multiplies the pixel values. The result is always a darker image.                 |
| **Divide**                        | Divides the base layer by the blend layer. Can create strong brightening effects. |
| **Overlay**                       | A mix of Multiply and Screen. Darkens dark areas and lightens light areas.        |
| **Color Burn**                    | Darkens the base layer, increasing contrast between the two.                      |
| **Color Dodge**                   | Brightens the base layer, decreasing contrast between the two.                    |
| **Darken**                        | Compares the pixels in both layers and keeps the darker of the two.               |
| **Difference**                    | Subtracts the blend color from the base color. Black shows no change.             |
| **Exclusion**                     | Similar to Difference but with lower contrast.                                    |
| **Hard Light**                    | A combination of Multiply and Screen. A harsh, high-contrast light effect.        |
| **Lighten**                       | Compares the pixels in both layers and keeps the lighter of the two.              |
| **Linear Burn**                   | Darkens the base layer by decreasing its brightness.                              |
| **Linear Dodge**                  | Brightens the base layer by increasing its brightness.                            |
| **Linear Light**                  | A combination of Linear Burn and Linear Dodge.                                    |
| **Pin Light**                     | Replaces colors depending on the blend color. A very harsh effect.                |
| **Screen**                        | Multiplies the inverse of the pixel values. Results in a brighter image.          |
| **Soft Light**                    | A softer version of Hard Light. A more subtle, diffused light effect.             |
| **Blend Angle Corrected Normals** | A special mode specifically for correctly blending two normal maps together.      |

## 5. Generating the Blended Texture

1. Once you have configured your inputs and settings, ensure the **Blend Texture** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will process the blend, The new texture asset will be saved to the path specified in the **GenerateSettings** category.


# Tutorial: Normal From Height

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Normal From Height** job. This is an essential utility for any PBR texturing workflow, allowing you to create a detailed normal map from a simple grayscale height map.

## 1. What is a Normal Map?

A normal map is a special type of texture that tells the game engine how to simulate lighting on the surface of a 3D model. It adds the illusion of complex surface detail, like bumps, cracks, and crevices, without adding any extra polygons. Generating a normal map from a height map (a texture where white is high and black is low) is a standard technique for creating this data.

## 2. Setting Up the Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Normal From Height**.
3. A new "Normal From Height" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/K2giJH0EvJTlCjTdhecc" alt=""><figcaption></figcaption></figure>

## 3. Providing the Input Height Map

The Normal From Height job operates on a single input texture.

* In the **Input** viewport on the left, drag and drop your grayscale height map from the Content Browser into the **INPUT HEIGHTMAP** slot.

## 4. Configuring the Normal Map Generation

All the settings for this job are located in the **Input Settings** category in the Details panel.

### Main Settings

* **Heightmap Channel:** This dropdown lets you select which channel from your input texture contains the height information. If you are using a standard grayscale texture, you can leave this on `Red`, `Green`, or `Blue`. If your height data is packed into the Alpha channel of another texture, select `Alpha`.
* **Use Derivative:** This checkbox switches between two methods for calculating the normal map. The "Derivative" method is often faster and produces good results, while the standard method (when unchecked) gives you more manual control via the `Offset` parameter.
* **Offset:** (Only available when `Use Derivative` is unchecked). Controls the distance used to sample the height map when calculating the surface angle.
* **Normal Intensity:** This is a crucial setting that controls the "depth" or strength of the resulting normal map. Higher values will create the illusion of deeper bumps and crevices.

<figure><img src="/files/DxtEJBq4CkPC4rdsUNLo" alt=""><figcaption><p>No blur applied</p></figcaption></figure>

### Blur Settings

This job includes an optional blur pass that can be used to soften the final normal map, which is useful for reducing harsh, noisy details.

* **Use Blur:** Check this box to enable the blur pass.
* **Blur Distance:** Controls the radius or "spread" of the blur effect.
* **Blur Distance Steps:** The number of samples used for the main blur. Higher values create a smoother result.
* **Blur Radial Steps:** The number of samples used for the rotational part of the blur.
* **Blur Radial Offset:** Controls the tightness of the blur's spiral pattern.
* **Blur Kernal Power:** Adjusts the intensity of the blur.

<figure><img src="/files/IBdCMSgF0sWJGGc2hbFm" alt=""><figcaption><p>Blur applied to soften the harsh noise</p></figcaption></figure>

## 5. Generating the Normal Map

1. Once you have provided your height map and configured the generation settings, ensure the **Normal From Height** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will process your height map and generate a new normal map. The new texture asset will be saved to the path specified in the **Generate Settings** category with the `_N` suffix. The tool will automatically set the correct `CompressionSettings` for the new normal map asset.


# Tutorial: Insert Alpha Channel

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Insert Alpha Channel** job. This is a simple but essential utility that allows you to take the color information from one texture and combine it with the transparency information from another, creating a single texture with a new alpha channel.

## 1. What is an Alpha Channel?

An alpha channel is an extra channel in an image (in addition to Red, Green, and Blue) that stores transparency information. It's used for effects like cutouts, decals, and translucency. This tool is perfect for when you have your main color texture (RGB) and a separate grayscale mask (like an opacity mask) and you want to combine them into a single RGBA texture file.

## 2. Setting Up the Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Insert Alpha Channel**.
3. A new "Insert Alpha Channel" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/Xg18hDct0m8aDAK5Gjar" alt=""><figcaption></figcaption></figure>

## 3. Providing Input Textures

The Insert Alpha Channel job requires two inputs, which you can provide in the **Input** viewport on the left side of the tool.

* **INPUT BASE TEXTURE:** This is the texture that provides the Red, Green, and Blue color channels for the final output.
* **INPUT ALPHA MASK:** This is the texture that provides the transparency information. It is typically a grayscale mask where white is fully opaque and black is fully transparent.

Drag and drop your textures from the Content Browser into these two slots.

## 4. Configuring the Alpha Insertion

All the settings for this job are located in the **Input Settings** category in the Details panel.

* **Mask Channel:** This dropdown lets you select which channel from the **Input Alpha Mask** to use as the source for the new alpha channel.
  * **R, G, B:** If your mask is a standard grayscale image, you can select any of these, as all three channels will contain the same information.
  * **A (Alpha):** If your mask texture *already* has an alpha channel you want to use, select this option.

<figure><img src="/files/hq1pElLlKUzf9oBLY12z" alt=""><figcaption><p>Add the separate Opacity Texture into the Diffuse Texture to combine</p></figcaption></figure>

## 5. Generating the Final Texture

1. Once you have provided your base texture and alpha mask, ensure the **Insert Alpha Channel** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will combine the RGB channels from the base texture with the selected channel from the alpha mask. The new texture asset will be saved to the path specified in the **Generate Settings** category with the `_Alpha` suffix.


# Tutorial: Texture Noise

This documentation is for update 2.0+, applied to 5.4+.

This guide provides a detailed walkthrough for using the **Texture Noise** job. This is a powerful procedural generator that can create a wide variety of noise patterns, which are fundamental for building complex materials, masks, and effects. Unlike other jobs, this one does not require any input textures; it generates noise from scratch based on your settings.

## 1. What is Procedural Noise?

Procedural noise is an algorithmically generated pattern that appears random but is actually deterministic. This means you can always get the same result if you use the same settings. In texturing, noise is used for everything: creating organic patterns like clouds and wood grain, adding surface imperfections, breaking up repetitive tiling, or creating complex masks for blending other textures.

## 2. Setting Up the Job

1. In the main **Texture Tools** window, click the **Add Job** button.
2. From the dropdown menu, select **Job: Texture Noise**.
3. A new "Texture Noise" job will be added to the job queue. Select it to see its properties in the Details panel.

<figure><img src="/files/JN4tPxJNeUqBmzeqe4cH" alt=""><figcaption></figcaption></figure>

## 3. Configuring the Noise

All the settings for this job are located in the **Input Settings** category in the Details panel.

### Noise Type

This is the most important setting, as it determines the fundamental algorithm and look of the generated pattern.

* **Simplex:** A high-quality, organic-looking noise, similar to Perlin noise but with fewer directional artifacts. Great for clouds, fire, and natural patterns.
* **Gradient Texture:** A fast and efficient noise based on a pre-calculated gradient texture.
* **Fast Gradient Texture:** A more optimized version of the Gradient Texture noise.
* **Gradient Computational:** A gradient noise that is calculated on-the-fly.
* **Value:** A simpler, blockier type of noise.
* **Voronoi:** Creates a cellular pattern, resembling cracked mud, stone cells, or crystal formations.

<div><figure><img src="/files/DooLO7kQdPcZWBu1clLq" alt=""><figcaption><p>Simplex</p></figcaption></figure> <figure><img src="/files/TuOiWzZu9FHo1p7cKkf6" alt=""><figcaption><p>Gradient Texture</p></figcaption></figure> <figure><img src="/files/yrxSNIMfnvU6j5yAZQfa" alt=""><figcaption><p>Fast Gradient Texture</p></figcaption></figure> <figure><img src="/files/ZPweC85DhaQORiYolq41" alt=""><figcaption><p>Gradient Computational</p></figcaption></figure> <figure><img src="/files/2hkfKBFkED9gZf3c7nei" alt=""><figcaption><p>Value</p></figcaption></figure> <figure><img src="/files/SZfFTxJXLrbqRGMStHvr" alt=""><figcaption><p>Voronoi</p></figcaption></figure></div>

### General Noise Parameters

These settings apply to most or all of the noise types.

* **Scale:** Controls the "zoom" level of the noise. Higher values result in smaller, more frequent details (tiling the noise more), while lower values create larger, broader patterns.
* **Z-Offset:** Think of this as a "seed" for the noise. Changing this value will shift the noise pattern, allowing you to generate different variations of the same noise type and scale.
* **Filter Width:** Helps to reduce aliasing and artifacts in the noise, especially at higher scales.
* **Noise Output Min / Max:** These values remap the brightness range of the noise. By default, the noise is generated from 0 (black) to 1 (white). You can use these to clamp the range, for example, from `0.2` to `0.8`, to create a lower-contrast noise.
* **Levels:** Controls the number of "octaves" or layers of noise that are combined. Higher values add more fine detail to the base noise pattern, creating a more complex result.

### Voronoi-Specific Parameters

When you select `Voronoi` as the **Noise Type**, an additional parameter becomes available.

* **Voronoi Quality:** Controls the intensity and definition of the cellular pattern.

<figure><img src="/files/RE2f0511Pkq1ZJCVW9bN" alt=""><figcaption><p>Voronoi Noise with full Quality level 4</p></figcaption></figure>

## 4. Generating the Noise Texture

1. Once you have selected a noise type and configured its parameters, ensure the **Texture Noise** job is selected in the job queue.
2. Click the main **Run Selected Job** button.
3. The tool will generate the procedural noise texture. The new texture asset will be saved to the path specified in the **Generate Settings** category.


# Tropical Ocean Tool

Documentation for the SHADERSOURCE Tropical Ocean Tool

**\*\*\*Monthly Unreal Engine Sponsored Content product for April 2020\*\*\***

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/5c388cfc-3a40-492a-87dd-88bcb0bd0682)
* [Playable Demo](https://drive.google.com/file/d/1zfQQ2qYu9Z4QUkTHeKJJOjjZo4qxMwy2/view?usp=sharing)
* Videos:
  * Preview Video: {Updated Video Coming Soon}
  * Quick-Guide: [YouTube](https://youtu.be/MV7HlAKCDpI?si=do0HYZ7pc9XGC_MJ) | [Rumble](https://rumble.com/v459l8l-tropical-ocean-tool-quick-guide.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 4.26+
  * Versions no longer supported (sold as is): 4.16 - 4.25

### Section Links

* [Changelog](/assets-and-plugins/tropical-ocean-tool/changelog)
* [How to Use](/assets-and-plugins/tropical-ocean-tool/how-to-use)


# Changelog

\[25 Apr 2024]: Version 2.4 - Versions UE5.4+

* Fixed missing collision mesh for ocean (Needed for Fluid Interaction Tool implementation)
* Replaced landscape height texture in favor of Runtime Virtual Texture Height for shoreline foam (Can be used instead of Distance Fields)
* Shoreline foam now defaults to Distance Fields option
* Moved asset into \_SHADERSOURCE folder

\[22 Mar 2022]: Version 2.3 - Versions 4.26+

* Added waterline support for underwater effect
* Distance fields are no longer required and defaulted off in favor for landscape height texture (can still use distance field solution)
* Height lerp added to foam for more realistic transitions
* Tessellation removed completely in favor for new system that uses LODs
* Works on Unreal Engine 5
* Distance swap on textures with close to camera for better scaling of water
* Slight overhaul of ocean shader

\[19 Aug 2021] Version 2.2 - Versions 4.24+

* Added new shading support
* Fixed Water Mesh Collision

\[15 Mar 2020] Version 2.1 - Versions 4.23+

* Added Fluid Interaction Tool Support
* Added manual spawner back
* Hotfixes

\[November 2019] Version 2.0 - Versions 4.23+

* Big overhaul of shader and systems
* Added underwater effects

\[20 Mar 2018] Version 1.3 - Versions 4.16+

* Hotfixes


# How To Use

{% hint style="info" %}
Note: Engine versions 4.23-4.27 contain tutorial Blueprints under **Tropical Ocean Tool > Blueprints > Tutorials**
{% endhint %}

{% hint style="warning" %}
NOTE: Enable "Generate Mesh Distance Fields" under Lighting within your Project Settings -> Render Settings. Otherwise the water shader will not display correctly.
{% endhint %}

* Quick-Guide: <https://www.youtube.com/watch?v=MV7HlAKCDpI>

### Legacy Videos

* Placing the Ocean Tool: <https://www.youtube.com/watch?v=UDuAtGD3gSQ>
* Shoreline Wetness Function: <https://www.youtube.com/watch?v=-jhX1tAPfxA>
* Remove Water From Interiors: <https://www.youtube.com/watch?v=NGzkJiB2Jvs>


# Waterfall Tool

Documentation for the SHADERSOURCE Waterfall Tool

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/e42888e7-8dea-4893-874c-f3533ddf49f3)
* [Playable Demo](https://drive.google.com/file/d/1pPshfdTmuUMxQLKXe2TiwuEw8NHuhOIL/view?usp=sharing)
* Videos:
  * Preview Video: {Updated Video Coming Soon}
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.0+
  * Versions no longer supported (sold as is): 4.17 - 4.27

### Section Links

* [Changelog](/assets-and-plugins/waterfall-tool/changelog)&#x20;
* [How to Use](/assets-and-plugins/waterfall-tool/how-to-use)


# Changelog

\[27 Apr 2022] UE5 Update:

* Particles are now using Niagara
* Additional waterfall cascades removed in favor of additional blueprints instead
* Particles visible in editor
* More parameter options added


# How to Use

{% hint style="info" %}
To view an example of the tool in use, see the **Demonstration** map located in WaterfallTool > Maps.
{% endhint %}

Drag and drop the Blueprint **BP\_WaterfallTool** into the viewport (located in WaterfallTool > Blueprints).

<figure><img src="/files/rRVlJIDtifahss5HWgwN" alt=""><figcaption></figcaption></figure>

Use the spline points to adjust the height and angle of the waterfall.

{% hint style="info" %}
The bottom spline point will be automatically locked to the ground if **Ground Check** is ticked on.
{% endhint %}

<figure><img src="/files/w64xwnwIPv5Xih6bcM30" alt=""><figcaption></figcaption></figure>

Change settings in the *Details Panel* as desired:

* Waterfall Settings
  * **Ground Check**: Toggle if the waterfall should automatically stay on the ground
  * **Easy Scale**: Scales the width of the waterfall
  * **Water Color**: Change the colour of the water here
  * **Foam Brightness**: How bright the foam should be in the waterfall
  * **Opacity**: Changes the opacity of the water
  * **Opacity Edge Fade**: Depth Fade on the opacity (when the water is near other objects)
  * **Flow Speed**: How fast the water flows
  * **Start Fade**: The strength of the opacity fade at the start of the waterfall
  * **End Fade**: The strength of the opacity fade at the end of the waterfall
  * **Edge Fade**: The strength of the opacity fade on the edges of the waterfall
  * **Object Detection**: Toggle to enable object detection on material
  * **Object Detection Size**: The distance to the nearest surface to check for object detection
  * **Object Detection Strength**: An overall strength multiplier for the object detection checks
  * **Object Detection Smoothness**: The gradient for the fade when colliding with objects
  * **Actors to Ignore**: The waterfall will ignore any actors defined here for any of its collision checks
* Particles:
  * **Water Particle Color**: Change the colour of all the particle effects here
  * **Enable Top Splash**: Toggles the splash particle at the top of the waterfall on and off
  * **Top Splash Lifetime**: The lifetime of the splash particle at the top of the waterfall
  * **Enable Mist**: Enable and disable the mist particle
  * **Mist Lifetime**: The lifetime of the mist particle
  * **Enable Ground Splash**:  Toggles the splash particle at the bottom of the waterfall on and off
  * **Ground Splash Scale Offset**: Scales the splash particle at the bottom of the waterfall
  * **Ground Splash X Location Offset**: Offsets the location of the splash particle at the bottom of the waterfall

{% hint style="warning" %}
In versions 4.27 and prior, the particles use Cascade rather than Niagara and are only visible when simulating/playing in editor
{% endhint %}


# Waterfall Tool 2

Documentation for the SHADERSOURCE Waterfall Tool 2 Plugin

\*\*\***Unreal Engine Marketplace Showcase Content for September 2024**\*\*\*

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/f44cd11c-4202-4e63-b74d-be09b1749b6e)
* Videos:
  * Preview Video: [YouTube](https://youtu.be/0ClwLqKqPPw?si=el-Mmu07f7VcG3qL) | [Rumble](https://rumble.com/v5cf1w3-waterfall-tool-2-preview.html)
* [Support Discord](https://docs.shadersource.io/support)

### General Information

* UE Versions
  * Supported versions: 5.2+

### Section Links

* [Changelog](/assets-and-plugins/waterfall-tool-2/changelog)
* [How to Use](/assets-and-plugins/waterfall-tool-2/how-to-use)
  * [Quick Tutorial](/assets-and-plugins/waterfall-tool-2/how-to-use/quick-tutorial-simple-mode)
  * [Waterfall 2 Actor](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-2-actor)
  * [Plugin Content](/assets-and-plugins/waterfall-tool-2/how-to-use/plugin-content)
  * [Waterfall Tool 2 Editor Mode](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode)
  * [Materials Reference](/assets-and-plugins/waterfall-tool-2/how-to-use/materials-reference)
* [Technical Information](/assets-and-plugins/waterfall-tool-2/technical-information)


# Changelog

### Hotfix 1.0c \[Pending Review]

* Updated Copyright Notice
* Bug Fix: "StructProperty FSH\_VfxPointData::Position is not initialized properly even though its struct probably has a custom default constructor."
* Bug Fix: \[5.2 and 5.3]: Moving a spline point on a generated path can cause the editor to crash.

### Hotfix / Content Update 1.0b \[17 Sep 2024]

* Added Translucency Material and Particle Options
* Added Large Waterfall Material Instance Alternatives
* Revised Master Materials
* Updated Example Map with Translucent and Large Waterfall Examples
* Updated Textures to 4k

### Hotfix 1.0a \[29 August 2024]

Fixed some minor bugs identified at launch:

* Fixed crash on running in standalone game and rendering in new process.
* Fixed cancel button in Simple Mode mesh generation so that it actually cancels properly.
* 5.4 Only: Fixed bug where the baked mesh's materials went wonky.
* Fixed documentation link in the plugin's description.
* Fixed minor issue with material slot names when baking to a Static Mesh.

### Initial Release \[26 August 2024]

v1.0 Released.


# How To Use

The SHADERSOURCE Waterfall Tool 2 adds an Editor Mode to UE5 that handles creation of waterfall assets for a level.

### Overview

The Waterfall Tool 2 Editor Mode is split up into several tabs:

* Simple: A simplified version of the tool with less options to generate a waterfall quickly.
* Advanced: A more complex version of the tool with many more options to tweak minor parts of a waterfall.
* Debug: A handful of functions to show debugging data.

### Workflow

The general workflow of creating a waterfall through the Waterfall Tool 2 is:

1. Drag and drop a waterfall actor into the level.
2. Generate some paths for the waterfall.
3. Generate the meshes (and material data) for the waterfall.
4. Generate/tweak waterfall FX.
5. (Optional) Bake the meshes down into a single static mesh for optimisation.

### Tutorials

* [Quick Tutorial (Simple Mode)](/assets-and-plugins/waterfall-tool-2/how-to-use/quick-tutorial-simple-mode)

### Technical Information/Descriptions of Variables, Functions, Actions

* [Waterfall 2 Actor](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-2-actor)
* [Plugin Content](/assets-and-plugins/waterfall-tool-2/how-to-use/plugin-content)
* [Waterfall 2 Editor Mode](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode)
  * [Simple Tab](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/simple-tab)
  * [Advanced Tab](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab)
    * [Paths](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/paths)
    * [Meshes](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/meshes)
    * [Materials](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/materials)
    * [FX](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/fx)
    * [Bake](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/bake)
  * [Debug Tab](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/debug-tab)
* [Materials Reference](/assets-and-plugins/waterfall-tool-2/how-to-use/materials-reference)


# Quick Tutorial (Simple Mode)

On this page we will cover how to use the Waterfall Tool 2: Simple Mode

## Example Level

{% hint style="info" %}
For this tutorial we will use the provided **Map\_Example**.
{% endhint %}

<figure><img src="/files/NQcfYPOzpluzXIoPTGXK" alt=""><figcaption></figcaption></figure>

### V1.0b Example Level Update

Added Large and Translucent Waterfall Examples

<figure><img src="/files/SaqzfGXH27M3ejUyaIpz" alt=""><figcaption></figcaption></figure>

## Placing the Waterfall

Start by deleting the already pre-generated waterfall on this rock formation.

<figure><img src="/files/LyE3cK1sWmdk5yVQCbZE" alt=""><figcaption></figcaption></figure>

Once deleted, open up the Waterfall Tool 2 Editor Mode.

<figure><img src="/files/f6nvUTUdG5B9Z0tb1YFu" alt=""><figcaption></figcaption></figure>

You should then have a screen similar to this:

<figure><img src="/files/rxXjPCdBCXJ1BfyImRkT" alt=""><figcaption></figcaption></figure>

Drag and drop a new Waterfall Tool 2 Actor on the rock formation.

<figure><img src="/files/fNdNaWT42WWiwDeToQfA" alt=""><figcaption></figcaption></figure>

You should have something similar to this:

<figure><img src="/files/Zwnkx5KskVhV4jFRvM2h" alt=""><figcaption></figcaption></figure>

This will now show the editor for the selected waterfall.

## Editor Mode

{% hint style="info" %}
To select a different waterfall or create a new one quickly you can use the tab at the top just under the editor mode banner.
{% endhint %}

<figure><img src="/files/th1PzhsAnwmkQETiDn1r" alt=""><figcaption></figcaption></figure>

Under the *Path Settings* tab, set the **Kill Plane Location Z** to the height of the floor.

{% hint style="info" %}
This is where the waterfall path simulation will end.

*Note: The X, Y values here won't actually do anything, these values are automatically calculated when the Top Spline is changed.*
{% endhint %}

<figure><img src="/files/b9iCtexvI3Cykbk1RzQC" alt=""><figcaption></figcaption></figure>

Next we will set the **Top Spline** to the desired shape of the start of the waterfall we want to create.

{% hint style="info" %}
The **Top Spline** has the same controls as a normal spline component, you can add/remove/form the spline how you like and the waterfall will follow.
{% endhint %}

<figure><img src="/files/oJMfIqtHM1tEAx8eTw6t" alt=""><figcaption><p>For this example i made a very basic C shape</p></figcaption></figure>

Next set the **Num Paths** to 15 and then press the **Generate Paths** button.

<figure><img src="/files/PmPgkbWjGREmBAZyxcNA" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
This is a trial and error process, you might want to reposition the **Top Spline** or change the **Num Paths** to get the desired path generation result.&#x20;
{% endhint %}

Once you have the paths you are happy with press the **Generate Meshes** button.

<figure><img src="/files/Ynq96xhkpPx0fjycvstG" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can set the material for each generated mesh and tick meshes on and off under the *Mesh Generation Settings*.
{% endhint %}

<figure><img src="/files/xGwMKAUnNO6PuNf8rN8A" alt=""><figcaption></figcaption></figure>

Next press the **Generate VFX** button.

<figure><img src="/files/Jh4Y5uFtr3CW1fKP5mUh" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
You can add SFX and change or disable VFX from the *SFX* and *VFX Settings*.
{% endhint %}

<figure><img src="/files/0MTKVL8JZs35KaPF5WLV" alt=""><figcaption></figcaption></figure>

**You should now have a fully generated waterfall!**

As a final optional step you can press the **Bake to Static Mesh** button to bake out the waterfall mesh as a single static mesh for optimisation.

<figure><img src="/files/1fFdkbfL9FJVNIypmz7N" alt=""><figcaption></figcaption></figure>

There is a tickbox on the *Waterfall Tool 2 Actor* to toggle whether to see the Dynamic Meshes or Baked Static Mesh at runtime.

<figure><img src="/files/R4PcFkOJo35WGCOH2p7e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
For more details on proprties or the Advanced Tab, see the documentation [here](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode).
{% endhint %}


# Waterfall 2 Actor

The Waterfall 2 actor (SHADERSOURCE Waterfall 2) is the main actor used by the Waterfall 2 Editor Mode.

<details>

<summary>Creating a Waterfall 2 Actor</summary>

The Waterfall 2 actor can be created by dragging and dropping from the Place Actors tab, the Place Actors menu, or through the Waterfall 2 Editor Mode.

Place Actors Tab:

<img src="/files/tgKKghlxplDsKKRcCjE0" alt="Place Actors Tab" data-size="original">

Place Actors Menu:

<img src="/files/ApWo38Trc4T93v5HDs1E" alt="Place Actors Menu" data-size="original">

Waterfall Tool 2 Editor Mode (with no waterfall selected)

<img src="/files/lKp7fj2viYCPhrCwOnVI" alt="Waterfall Tool 2 Editor Mode (with no waterfalls selected)" data-size="original">

Waterfall Tool 2 Editor Mode (with a waterfall selected)

<img src="/files/zsOR014awA1AeGLAsjYU" alt="Waterfall Tool 2 Editor Mode (with a waterfall selected)" data-size="original">

</details>

<details>

<summary>Waterfall 2 Actor Components</summary>

(<mark style="color:red;">Red components</mark> are hidden in editor - accessible only through C++ or Blueprints)

* **RootComp (Root Comp)**: The root component of the actor.
  * **FxAttachPoint**: The component to act as the origin/attach all the VFX and SFX components to.&#x20;
    * **VFX\_Top (Top)**: A niagara component for global top VFX (default top splash).
    * **VFX\_Middle (Middle)**: A niagara component for global middle VFX (default mist).
    * **VFX\_Bottom (Bottom)**: A niagara component for global bottom VFX (default bottom splash).
    * **SFX\_Top (SFX Top)**: An audio component for global top SFX.
    * **SFX\_Middle (SFX Mid)**: An audio component for global middle SFX.
    * **SFX\_Bottom (SFX Bottom)**: An audio component for global bottom SFX.
    * **VFXComponent {#}**: A niagara component for FX added through the FX tab.
    * **SFXComponent {#}**: An audio component for SFX added through the FX tab.
  * **BakedMeshComp (Mesh Comp)**: A static mesh component for the final optimised baked static mesh.
  * **TopSpline (Top Spline)**: A spline component that's used to draw the top of the waterfall.
    * **SH\_WaterfallPathComponent\_{#}**: Spline components generated by the Editor Mode to use as guides for creating vertices and material data.
  * **KillPlaneVisualiser (Kill Plane)**: A visualiser for the kill plane which acts as the end-point for the path component generation. (Note: The plane is actually infinite, the visualiser is just a general guide to help with placement.)
  * **MeshComp\_Singular**: A dynamic mesh component for the mesh created that covers the entire waterfall.
  * **MeshComp\_PerPath**: A dynamic mesh component for the mesh created that runs along each individual path.
  * **MeshComp\_Cross**: A dynamic mesh component for the mesh created that runs along each individual path and is a flat plane.
  * **MeshComp\_Splash**: A dynamic mesh component for the meshes generated at the bottom of each path for the splash effect.
* <mark style="color:red;">**WaterfallSettingsComp**</mark><mark style="color:red;">: A custom actor component that stores all of the variables used in the Editor Mode, allowing them all to be saved per-waterfall.</mark>

</details>

<details>

<summary>Waterfall 2 Actor Editable Variables</summary>

* Waterfall Settings
  * **Show Dynamic Meshes in Game**: If this is true, the dynamic meshes will be visible in game, if false the static mesh will be visible in game.

</details>

<details>

<summary>Waterfall 2 Actor C++ Reference</summary>

```
Cpp Class Name: ASH_Waterfall2
Module: Shadersource_Waterfall2Runtime
Header: /Shadersource_WaterfallTool2/Source/Shadersource_Waterfall2Runtime/Public/Actors/SH_Waterfall2.h
Include: #include "Actors/SH_Waterfall2.h"
```

</details>


# Plugin Content

<figure><img src="/files/CpWGwH33Z9q6pTusHCgy" alt=""><figcaption></figcaption></figure>

### Base

* Curves: Default curves for a new waterfall
* Materials
  * Base: Parent Materials for the default Material Instances
  * Data: Kill Plane materials
  * Functions: Material Functions for the default materials
  * Instances: Default Material Instances for a new waterfall
* Particles: Default Niagara Systems for a new waterfall
* Textures: Textures for the default Materials

### Example

* Map\_Example: Example content to see the Waterfall Tool 2 in use
* Meshes: Meshes and materials for the example map


# Waterfall Tool 2 Editor Mode

The **SHADERSOURCE: Waterfall Tool 2 Mode** is a custom editor mode used to create and modify waterfall data for SHADERSOURCE Waterfall 2 actors in a level.

<details>

<summary>Accessing the Waterfall Tool 2 Editor Mode</summary>

The Waterfall Tool 2 Editor Mode can be accessed either via the Editor Modes dropdown or the SHADERSOURCE menu.

Editor Modes dropdown:

<img src="/files/n9qA7mNAzo02iNKd4A56" alt="" data-size="original">

SHADERSOURCE menu (Level Editor Toolbar):

![](/files/jrJHU801GFecNFRCybXb)

SHADERSOURCE menu (Window menu):

![](/files/lG3mIiJUMvm32GdEXQTr)

</details>

<details>

<summary>Waterfall Tool 2 Editor Mode Header Content</summary>

![](/files/xwg2DLxWpPkT5xwafU5J)

1. **SHADERSOURCE Modes Menu**: Finds and creates buttons to easily switch between SHADERSOURCE Editor Modes.
2. **Documentation button**: Opens the tool's documentation page in your default browser.
3. **Store Page button**: Opens the tool's Fab store page in your default browser.
4. **Version number**: Show's the tool's current version number so that it can be compared to the latest version.

</details>

<details>

<summary>UI (without a waterfall selected)</summary>

![](/files/5dAY1r2Fqi78BzppkEwO)

1. A search bar to easily search for waterfalls or settings.
2. Drag and drop to create a new SHADERSOURCE Waterfall 2 actor.
3. **Auto Focus Waterfall**: If ticked on, when selecting a waterfall either here or in the menu in the waterfall selected UI, the editor will automatically focus the newly selected waterfall (like pressing 'F' in the viewport).
4. A list of all the waterfall actors in the level. Click on one of them to create or edit waterfall data for the actor.

</details>

<details>

<summary>UI (with a waterfall selected)</summary>

**Creating or Editing a Waterfall**

With a waterfall selected, the Waterfall Tool 2 Editor Mode is split into three tabs:

* [Simple](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/simple-tab): A simplified version of the tool with less options to generate a waterfall quickly.
* [Advanced](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab): A more complex version of the tool with many more options to tweak minor parts of a waterfall.
* [Debug](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/debug-tab): A handful of functions to show debugging data.

<img src="/files/87k43uAXxhsJZEzGPdsM" alt="" data-size="original">

**Waterfall Selection**

There is also a dropdown menu as a quick way to select other waterfall actors in the open level, or to create a new waterfall actor.

![](/files/MvieHnH4Owi6dagiHqCS)

</details>


# Simple Tab

The Simple Tab is a simplified version of the tool with less options to generate a waterfall quickly.

### Buttons

* **Generate Paths**: Simulate particle paths to act as a guide or generating the waterfall meshes.
* **Clear Paths**: Delete all of the simulated paths. *Note: This also resets the dynamic meshes and FX.*
* **Generate Meshes**: Generate the dynamic mesh and material data for the waterfall.
* **Clear Meshes**: Clear all of the dynamic mesh and material data.
* **Generate VFX**: Create the global Niagara Systems and add the waterfall data to the particles.
* **Bake to Static Mesh**: Generate a Static Mesh asset from the dynamic meshes and assign it to the Static Mesh component of the waterall.

### Properties

* Path Settings
  * **Select Top Spline Points**: Select spline points in Top Spline. *Note: This is hidden in 5.4 because spline selection is broken in 5.4.*
  * **Num Paths**: The number of paths to generate along the spline.
  * **Spawn Jitter Range**: Affects the initial direction of the path by adding a randomised jitter to the yaw in this range.
  * **Path Spawn Range**: If more than one path is required to spawn, this will confine the spawning to a range from the end. Eg, If the spline distance is 100 and the PathSpawnRange is set to (0.2, 0.8), then the paths will only spawn between distances 20-80 and none will spawn on the distance < 20 or > 80.
  * **Gravity**: Particle simulation gravity.
  * **Num Spline Points**: If on, after the path is generated, it will resample the path to exactly this many spline points.
  * **Kill Plane Location**: The X-Y values are purely cosmetic. The Z value affects where the waterfall paths will end.
  * **Seed**: Random seed for the generation of the waterfall.
  * **Ignore Actors**: Actors to ignore for collision detection and physics.
* Mesh Generation Settings
  * **Single**: Should the Single mesh be generated?
  * **Paths**: Should the Per Path meshes be generated?
  * **Splash**: Should the Splash mesh be generated?
  * **Planes**: Should the Plane meshes be generated?
* SFX
  * **Top SFX**: The audio asset to be played at the top of the waterfall.
  * **Middle SFX**: The audio asset to be played at the middle of the waterfall.
  * **Bottom SFX**: The audio asset to be played at the bottom of the waterfall.
* VFX Settings
  * **Top VFX**: Should the top VFX be generated?
  * **Middle VFX**: Should the middle VFX be generated?
  * **Bottom VFX**: Should the bottom VFX be generated?


# Advanced Tab

The Advanced Tab is a more complex version of the tool with many more options to tweak minor parts of a waterfall.

It's split up into five dierent tabs:

* [**Paths**](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/paths): Advanced settings for generating the Waterfall Paths.
* [**Meshes**](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/meshes): Advanced settings for generating the Waterfall Meshes.
* [**Materials**](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/materials): Easily manage the materials applied to the dynamic and static meshes.
* [**FX**](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/fx): Generate and manage particle FX and sound FX for the waterfall.
* [**Bake**](/assets-and-plugins/waterfall-tool-2/how-to-use/waterfall-tool-2-editor-mode/advanced-tab/bake): Bake the generated dynamic meshes to a static mesh asset.


# Paths

Advanced settings for generating the Waterfall Paths.

### Buttons

* **Generate Paths**: Simulate particle paths to act as a guide or generating the waterfall meshes.
* **Clear Paths**: Delete all of the simulated paths. *Note: This also resets the dynamic meshes and FX.*

### Properties

* Top Spline
  * **Select Top Spline Points**: Select spline points in Top Spline. *Note: This is hidden in 5.4 because spline selection is broken in 5.4.*
* Initial Spawn
  * **Num Paths**: The number of paths to generate along the spline.
  * **Single Path Position**: If only one path is required to spawn, this will be the 0-1 offset on the spline.
  * **Path Spawn Range**: If more than one path is required to spawn, this will confine the spawning to a range from the end. Eg, If the spline distance is 100 and the PathSpawnRange is set to (0.2, 0.8), then the paths will only spawn between distances 20-80 and none will spawn on the distance < 20 or > 80.
  * **Spawn Jitter Range**: Affects the initial direction of the path by adding a randomised jitter to the yaw in this range.
  * Advanced
    * **Point Grouping**: The closer to 0, the more points are going to spawn, the further away from 0, the less points are going to spawn. This is taken into account BEFORE any resampling.
    * **Spawn Trace Distance**: {No Description}
    * **Spawn Trace Offset**: {No Description}
    * **Spawn Trace Alpha**: {No Description}
* Simulation
  * **Num Spline Points**: If on, after the path is generated, it will resample the path to exactly this many spline points.
  * **Substeps**: Number of iterations per frame for the simulation.
  * **Simulation Trace Channel**: Which channel should the simulation run traces on (1 is visibility).
  * **Ignore Actors**: Actors to ignore for collision detection and physics.
* Random
  * **Seed**: Random seed for the generation of the waterfall.
* Kill
  * **Kill Plane Location**: The X-Y values are purely cosmetic. The Z value affects where the waterfall paths will end.
  * **Additional Kill Actors**: Additional actors that terminate path simulations other than the kill plane.
* Speed
  * **Speed**: Simulation speed of the particle for the path generation.
  * **Max Speed**: Maximum simulation speed of the particle for the path generation.
  * **Speed Random**: Additional random speed of the particle for the path generation.
  * **Kill Speed**: If the particle moves slower than this speed in the simulation, the path will terminate even if it's not touching a kill actor/kill plane.
* Direction
  * **Flip Spline Direction**: Changes the velocity to work in the opposite direction on the spline.
* Physics
  * **Gravity**: Particle simulation gravity.
  * **Drag**: Particle simulation drag.
  * **Friction**: Particle simulation friction.
  * **Bounce**: Particle simulation bounce.
  * **Lifetime**: Particle simulation lifetime.
* Avoidance
  * **Obstacle Avoidance Weight**: Particle simulation obstacle avoidance.
  * **Obstacle Avoidance Distance**: Particle simulation avoidance distance.
  * **Obstacle Avoidance Falloff**: Particle simulation avoidance falloff.
  * **Obstacle Repulsion Weight**: Particle simulation obstacle repulsion.
  * **Obstacle Repulsion Distance**: Particle simulation obstacle repulsion distance.
  * **Obstacle Repulsion Falloff**: Particle simulation obstacle repulsion falloff.


# Meshes

Advanced settings for generating the Waterfall Meshes.

### Buttons

* **Generate Meshes**: Generate the dynamic mesh and material data for the waterfall.
* **Clear Selected Mesh**: Clear the dynamic mesh and material data for the selected mesh only.
* **Clear Meshes**: Clear all of the dynamic mesh and material data.

### Properties

* Mesh Selection
  * **Selected Mesh**: The mesh to generate/modify.
* Generation Settings
  * **Caching Substeps**: Maximum number of caching operations on a path per tick to spread the work out across multiple ticks.
  * Advanced
    * **Generate Mesh for Paths in Range**: Limit the mesh generation to specific paths only.
    * **Path Range**: Limit the mesh generation to specific paths only.
    * **Force Include Hits**: {No Description}
    * **Force Include Hits Threshold**: {No Description}
* Mesh Settings
  * **Segment Length**: How long each segment on the path should be.
  * **Max Segments**: The maximum number of segments each path should have.
  * **Sample Path**: Limit the spline sample between distance 0:1.
* Singular Mesh Settings
  * **EXPERIMENTAL: Sort Points**: Whether to try sorting points in the singular mesh so that overlapping paths don't generate weird geo. *Note: This feature is not perfect yet and doesn't always work in 100% of test cases.*
  * **Subdivide**: Whether to subdivide the singular mesh or just use the path data for vertex generation.
  * **Subdivisions**: The number of subdivisions applied to the singular mesh for vertex generation.
  * **Subdivision Spline Interpolation**: How points are interpolated between two paths.
  * Advanced
    * **Additional Geo**: Applies additional geometry to each side of the waterfall past the start and end of the Top Spline.
    * **Additional Geo Curve**: Applies additional geometry to each side of the waterfall past the start and end of the Top Spline.
    * **Additional Geo Spread Curve**: Applies additional geometry to each side of the waterfall past the start and end of the Top Spline.
* Per Path Settings
  * **Width**: Width of an individual path's mesh.
  * **Subdivisions**: The subdivisions to use for the individual path meshes.
  * Advanced
    * **Width Curve**: Width of an individual path's mesh.
    * **Spline Roll**: How much the first two vertices can roll to match the Top Spline's slope (otherwise flattened in the Z-axis).
* Plane Mesh Settings
  * **Width**: Width of an individual path's mesh.
  * **Subdivisions**: The subdivisions to use for the individual path meshes.
  * **Offset**: -1:1 Offset applied to the vertices along the path's normal.
  * **Align Normal**: Forces the Cross mesh's normals to point towards the path's normal (overrides both OverrideNormal and CylinderNormal).
  * Advanced
    * **Width Curve**: Width of an individual path's mesh.
    * **Offset Curve**: -1:1 Offset applied to the vertices along the path's normal.
    * **Spline Roll**: How much the first two vertices can roll to match the Top Spline's slope (otherwise flattened in the Z-axis).
* Splash Mesh Settings
  * **Subdivisions**: The subdivisions to use for the individual splash meshes.
  * **Front Radius**: The radius of the front part of the generated splash mesh.
  * **Back Radius**: The radius of the back part of the generated splash mesh.
  * **Radius Subdivision**: The subdivisions to use for the generated splash path (circumferance).
  * **Scale**: Simple scale of the generated splash meshes.
  * **Segments**: How many segments to make between the last point of the path and the outer circumference of the splash mesh.
  * Advanced
    * **Distance Falloff**: Distribution of vertices along the distance.
    * **UV Falloff**: How UV0 is distributed between the path point and the circumference.
* Positions
  * **Smoothing Iterations**: Number of times the post-processing smoothing will be applied to cached waterfall positions.
  * **Position Smoothing Per Axis**: How much smoothing to apply in each iteration.
  * Mesh Trace
    * **Mesh Trace Alpha**: 0:1 for how much the mesh should be projected.
    * **Mesh Trace Distance**: Maximum distance for a vertex to trace for nearby obstacle checks.
    * **Mesh Trace Offset**: How far a vertex is offset from a surface if the trace returns true (uses hit normal).
    * **Mesh Trace Projection**: Whether the vertices should be placed at the end of the obstacle traces regardless of whether it hit ot not.
    * **Mesh Trace Mode**: {No Description}
* Normals
  * **Auto Compute Normals**: The geometry scripting can auto compute the normals, discarding all the normals that were computed manually. Note: normals will still be calculated for tangent and position calculations, they'll just be discarded at the very end when the actual mesh is generated.
  * **Flip Normals**: Whether to flip the normals on the generated dynamic meshes.
  * **Mesh Normal Offset**: Offset to add to the generated dynamic mesh normals.
  * **Smooth Normals Iteration**: How many smoothing iterations should be performed on the dynamic mesh normals.
  * **Smooth Normals Alpha**: Percentage of smoothed normals to apply to the normals of the dynamic meshes.
  * **Cylinder Normal**: Treat the normals in a curve like a cylinder.
  * Advanced
    * **Mesh Normal Offset Curve**: Offset to add to the generated dynamic mesh normals.
    * **Cylinder Normal Curve**: Treat the normals in a curve like a cylinder.
    * **Override Normal**: The alpha for how much the Override Normal Direction should be applied.
    * **Override Normal Direction**: The direction of the overwritten normals.
    * **Force Water Normal Dist Z**: The alpha of how much to force the normals towards (0, 0, 1).
* Tangents
  * **Smooth Tangents Iteration**: How many smoothing iterations should be performed on the dynamic mesh tangents.
  * **Smooth Tangents Alpha**: Percentage of smoothed tangents to apply to the tangents of the dynamic meshes.
* UVs
  * **Base UVs Scale**: The scale of the UVs of the generated dynamic meshes.
* Turbulence
  * **Turbulence Includes Splash**: Include the kill (splash) impact in the turbulance calculation for the last points in the paths.
  * **Turbulence Range**: Remaps the hit force to a 0:1 range in order to then convert it to turbulence.
  * **Turbulence Obstacle Weight**: How much obstacle collision calculations affect turbulence.
  * **Turbulence Flow Weight**: How much flow calculations affect turbulence.
  * **Turbulence Spread Up Stream**: ow far turbulence is added upstream.
  * **Turbulence Spread Down Stream**: How far turbulence is added downstream.
  * **Turbulence Falloff**: How far turbulence is added downstream.
* Bulge
  * **Bulge**: Additional bulge to add to the dynamic mesh. Bulge is used for Per Path, Plane, and Splash Meshes.
  * **Flatten First Row Bulge**: If Bulge Curve == nullptr, whether to apply the bulge to the first row of vertices or to flatten them to conform with the top spline.
  * Advanced
    * **Bulge Curve**: Additional bulge to add to the dynamic mesh.
    * **Bulge Profile Curve**: Additional bulge to add to the dynamic mesh.


# Materials

Easily manage the materials applied to the dynamic and static meshes.

### Properties

* **Update Materials in Baked Mesh Too**: If the static mesh has been baked and set, update the material for the slot too. *Note: This will ignore any combined slots. Note: This only sets them in the level, not in the Static Mesh asset.*
* **Singular Mesh Material**: The material for the generated singular mesh.
* **Per Path Mesh Material**: The material to apply to the PerPath meshes.
* **Plane Mesh Material**: The material for the Plane meshes.
* **Splash Mesh Material**: The material used for the generated Splash meshes.


# FX

Generate and manage particle FX and sound FX for the waterfall.

### Buttons

* **Generate VFX**: Assign the particle systems to the global VFX components and update the parameters from the waterfall data.

### Properties

* SFX Settings
  * **Top SFX**: The audio asset to be played at the top of the waterfall.
  * **Middle SFX**: The audio asset to be played at the middle of the waterfall.
  * **Bottom SFX**: The audio asset to be played at the bottom of the waterfall.
* Top VFX Settings
  * **Top VFX**: Should the top VFX be generated?
  * **Focus Component**: Focus this VFX component in the Level Editor.
* Middle VFX Settings
  * **Middle VFX**: Should the middle VFX be generated?
  * **Middle Uses Distance**: Whether the Middle VFX uses a Z-Distance to calculate where the VFX points on the waterfall are, or whether it uses spline points.
  * **Point Range**: The spline point range for all paths on the waterfall to use for the Middle VFX points.
  * **Distance Range**: The world-space z-translation range to add the Middle FX from highest z-point to lowest z-point. Eg, if DistanceRange is 0.3 to 0.8, and the highest point is 100, the lowest 0, then it will find where each path crosses 30 and 80 in world space z and use this as the range to generate the points for the Middle VFX.
  * **Remap Points**: The number of points to map on each path between DistanceRange (inclusive). This defaults to 2 if the number is < 2. Eg, if RemapPoints is 5, Point\[0] will be DistanceRange.Max and Point\[4] will be DistanceRange.Min, with the other three points distributed evenly along the spline path.
  * **Focus Component**: Focus this VFX component in the Level Editor.
* Bottom VFX Settings
  * **Bottom VFX**: Should the bottom VFX be generated?
  * **Focus Component**: Focus this VFX component in the Level Editor.

#### FX (Individual Points)

This UI is used to easily add extra VFX or SFX components to the waterfall at one of its spline points.

<figure><img src="/files/WpgXLhmlJFdBHQGhoICG" alt=""><figcaption></figcaption></figure>

The number at the top shows the spline path that is currently focused. It can be manually set or changed using one of the two arrows.

* The colour on each button will be <mark style="color:red;">red</mark> if there are no additonal FX components added to the point.
* The colour on each button will be <mark style="color:yellow;">yellow</mark> if the spline point is currently selected.
* The colour on each button will be <mark style="color:green;">green</mark> if there are additonal FX components added to the point.

When a button is clicked, it will show the FX window.

<figure><img src="/files/eGJvOvwFgLLuP3PBS3Xe" alt=""><figcaption></figcaption></figure>

Click **Add VFX** or **Add SFX** to add an additional FX component to this point.

When there are additional FX components added, it will show their Details in the window.

<figure><img src="/files/JA0f7o0h8NPsVbs9Et5W" alt=""><figcaption></figcaption></figure>

Change components by using the two arrow keys.

* **Delete FX** will delete the focused FX component.
* **Shift FX Up** will shift all of the FX up one spline point.
* **Shift FX Down** will shift all of the FX down one spline point.

You can also access this menu by right clicking a spline point in the Level Editor Viewport:

<figure><img src="/files/53FFUGxaKcA0aB79gc6l" alt=""><figcaption></figcaption></figure>


# Bake

Bake the generated dynamic meshes to a static mesh asset.

### Buttons

* **Bake to Static Mesh**: Bake the generated dynamic meshes to a static mesh asset and assign it to the waterfall's static mesh component.

### Properties

* Waterfall Settings
  * **Show Dynamic Meshes in Game**: If this is true, the dynamic meshes will be visible in game, if false the static mesh will be visible in game.
* Bake Settings
  * **Combine Same Materials**: Whether to combine the same materials into one material slot or keep them separate per original mesh.
* Runtime Mesh
  * **Current Runtime Mesh**: The current static mesh assigned to this waterfall's static mesh component.


# Debug Tab

The Debug Tab has a handful of functions to show debugging data.

### Buttons

* **Debug: Show Vertices**: Visualise the generated vertices as points for the generated meshes.
* **Debug: Show Triangles**: Visualise the generated triangles for the generated meshes.
* **Debug: Show Directions**: Visualise the generated directions for the generated paths.
* **Debug: Print Remapped Points**: This prints a debug txt file of points for remapping when generating the single mesh. (Used for internal debugging.)

### Properties

* Debug
  * **Debug Points Duration**: How long to show the debug lines/points for.
  * **Debug Points Show Only These Points**: Limit the points shown when using the debug buttons. *Note: This is counting 0 to n for all points generated in order for the meshes.*


# Materials Reference

### UVs

UVs are calculated during the mesh generation action and added to the dynamic meshes. They are also baked into the static mesh when performing a static mesh bake.

* UV0: 0:1 UVs
* UV1: In centimetres
* UV2: X = Speed, Y = Flow
* UV3: X = Random Seed, Y = Local Position


# Technical Information

Behind the scenes technical information to help understand how the plugin actually works.


# Understanding How the Plugin's Code Works

{Coming Soon After Release}


# Procedural Water Foliage

Documentation for the SHADERSOURCE Procedural Water Foliage

{% hint style="info" %}
Note: The SHADERSOURCE Procedural Water Foliage Tool is no longer in development support and its final engine version is 4.27. This tool is sold as is and is untested in UE5.0+.
{% endhint %}

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/c0911a1d-acf7-40c1-bd15-86218e3d7fe5)

### General Information

* UE Versions
  * Versions no longer supported (sold as is): 4.19 - 4.27

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/procedural-water-foliage/changelog)
* [How to Use](https://docs.shadersource.io/assets-and-plugins/procedural-water-foliage/how-to-use)


# Changelog

Update \[April 2024]: The SHADERSOURCE Procedural Water Foliage Tool has reached the end of its development support and will remain at UE4.27 as its final engine version, sold as is. The upgrade to 5.0+ was unsuccessful, leading us to discontinue support.


# How To Use

{Documentation being updated}


# Procedural FX Spawner

Documentation for the SHADERSOURCE Procedural FX Spawner

{% hint style="info" %}
Note: The SHADERSOURCE Procedural FX Spawner is no longer in development support and its final engine version is 5.1. This tool is sold as is and is untested in UE5.2+.
{% endhint %}

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/7a36b125-1ba5-4639-8c24-eb9f56b0d97b)

### General Information

* UE Versions
  * Versions no longer supported (sold as is): 4.19 - 4.27, 5.0 - 5.1

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/procedural-fx-spawner/changelog)
* [How to Use](https://docs.shadersource.io/assets-and-plugins/procedural-fx-spawner/how-to-use)


# Changelog

{Changelog coming soon}


# How to Use

{Documentation being updated}


# River Buoyancy Tool

Documentation for the SHADERSOURCE River Buoyancy Tool

{% hint style="info" %}
Note: The SHADERSOURCE River Buoyancy Tool is no longer in development support and its final engine version is 4.27. This tool is sold as is and is untested in UE5.0+.
{% endhint %}

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/682b8592-3159-443a-87b3-9c843a910095)
* [Playable Demo](https://drive.google.com/file/d/1S0soWnFdFXjOJ4gfVjst8UKSYFnlhQfs/view?usp=sharing)

### General Information

* UE Versions
  * Versions no longer supported (sold as is): 4.16 - 4.27

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/river-buoyancy-tool/changelog)
* [How to Use](https://docs.shadersource.io/assets-and-plugins/river-buoyancy-tool/how-to-use)


# Changelog

**UPDATE V2.0a (Released) 03/15/2020**

* Added Fluid Interaction Tool Support<br>

**v2.0 Update 9/12/2019 (ONLY UNREAL ENGINE 4.23+!) Released!**

* Complete overhaul of the material and material instances with correct naming and descriptions
* Fixed buoyancy to be a lot more optimized and not kill FPS
* Added Tutorial Blueprints


# How To Use

1. Place the BP\_RiverWater in the world and duplicate out the splines to the shape of the river you require.
2. Change the scale of each spline point to scale the river.
3. Enable Buoyancy to see physical objects flow down river. (Make sure your meshes have Simulated Physics enabled and Mesh Overlaps is also enabled)
4. Change settings in the material instance for different color's calm or rapid rivers and object distortion.


# Weather Tool

Documentation for the SHADERSOURCE Weather Tool

{% hint style="info" %}
Note: The SHADERSOURCE Weather Tool is no longer in development support and its final engine version is 4.27. This tool is sold as is and is untested in UE5.0+.
{% endhint %}

[Fab](https://www.fab.com/sellers/SHADERSOURCE) | [YouTube](https://www.youtube.com/@ShaderSource) | [Rumble](https://rumble.com/c/c-5568086) | [Instagram](https://www.instagram.com/shadersource) | [Twitter](https://x.com/shadersourceio) | [LinkedIn](https://www.linkedin.com/company/shadersource) | [Artstation](https://www.artstation.com/shadersource)

### Quick Links

* [Fab Link](https://www.fab.com/listings/ffadc9d7-9648-416c-a595-10ca3eaa771a)

### General Information

* UE Versions
  * Versions no longer supported (sold as is): 4.16 - 4.27

### Section Links

* [Changelog](https://docs.shadersource.io/assets-and-plugins/weather-tool/changelog)
* [How to Use](https://docs.shadersource.io/assets-and-plugins/weather-tool/how-to-use)




---

[Next Page](/llms-full.txt/1)

