<p>It would be too expensive (both performance and memory wise) to evaluate BRDF first for each material layer and then blend the layers. Thus the material layer parameters &amp; textures are rather first blended together and then written to the G-buffer for a single BRDF evaluation. This is feasible as long as all the layers use the same BRDF. This doesn't generate identical results to evaluating BRDF before blending, but the results are quite often acceptable.</p>

<p>The BRDF parameter blending can be done as an offline process that generates unique textures based on blending maps. This is efficient at run-time but of course consumes more memory since for every blend map you need to generate all the source textures. You can also blend the materials at run-time with the expense of performance, but with smaller memory budget in general.</p>

CC BY-SA 3.0
2016-10-22T12:54:27.683Z
How would you blend material parameters like `Metalness`, `Roughness`?
Arjan Singh
CC BY-SA 3.0
2016-10-22T13:05:31.997Z
You could just linearly blend them. Also one option is to use height threshold to just "switch" between material layers, e.g. if you want things like sand between rocks because linear blend would look unnatural
JarkkoL
CC BY-SA 3.0
2016-10-22T04:24:38.820Z
2016-10-22T04:24:38.820Z
JarkkoL
<p>So after reading this Unreal Engine 4 Documentation page: <a href="https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/LayeredMaterials/" rel="nofollow noreferrer">https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/LayeredMaterials/</a> 
(Which describes how to use material layering in UE4)</p>

<p>I wanted to know how material layering is implemented. (Notice how the 'unreal engine' part of the rocket has different material and aswell as the scratches on the rocket?) Is it done by adding together the 2 final variables that contain the color's for each respective material after being processed by a BRDF?</p>

<p><a href="https://i.sstatic.net/VEjgH.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/VEjgH.jpg" alt="enter image description here"></a></p>

<opengl><c++><physically-based><material>
Material Layering
Arjan Singh
# Material Layering

(Asked by: username_0 on 2016-10-21)

So after reading this Unreal Engine 4 Documentation page: <https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/LayeredMaterials/>
(Which describes how to use material layering in UE4)

I wanted to know how material layering is implemented. (Notice how the 'unreal engine' part of the rocket has different material and aswell as the scratches on the rocket?) Is it done by adding together the 2 final variables that contain the color's for each respective material after being processed by a BRDF?

[![enter image description here](https://i.sstatic.net/VEjgH.jpg)](https://i.sstatic.net/VEjgH.jpg)

**Tags:** opengl, c++, physically-based, material


---

## 1 answers

### Answer by username_1 on 2016-10-22. Score: 2 | Accepted answer

It would be too expensive (both performance and memory wise) to evaluate BRDF first for each material layer and then blend the layers. Thus the material layer parameters & textures are rather first blended together and then written to the G-buffer for a single BRDF evaluation. This is feasible as long as all the layers use the same BRDF. This doesn't generate identical results to evaluating BRDF before blending, but the results are quite often acceptable.

The BRDF parameter blending can be done as an offline process that generates unique textures based on blending maps. This is efficient at run-time but of course consumes more memory since for every blend map you need to generate all the source textures. You can also blend the materials at run-time with the expense of performance, but with smaller memory budget in general.

> **Comments:**
> **username_0**: How would you blend material parameters like `Metalness`, `Roughness`?  
> **username_1**: You could just linearly blend them. Also one option is to use height threshold to just "switch" between material layers, e.g. if you want things like sand between rocks because linear blend would look unnatural  

---

