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

up vote 2 down vote accepted

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.

  • How would you blend material parameters like Metalness, Roughness? – Arjan Singh Oct 22 '16 at 12:54
  • 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 Oct 22 '16 at 13:05

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.