The future of Substrate Material Layer

Hi,

We noticed that in the 5.7 preview, Substrate Material Layer had a new UI panel and several feature updates. However, after the official 5.7 release came out, it seems that these features were removed.

[Image Removed]

We would like to know what the future plans are for the Substrate Material Layer system.

We noticed that many Substrate Material Layer related code paths have been removed in recent Git commits, so we are concerned about whether this system might be deprecated.

Our project makes extensive use of the Material Layer workflow, and since Substrate is now enabled by default in 5.7, we want to understand whether Material Layers will have official Substrate support in the future before we upgrade. Or does Epic have another plan for this system?

This is very important for us, because it will determine whether we adopt Substrate. Our artists are already very familiar with the Material Layer workflow. If Substrate does not support it, they would prefer to stay with the legacy material system to retain Material Layer support.

Hi! We removed the experimental Substrate Material Layer UI controlled by r.Substrate.EnableLayerSupport (off by default) in favor of a new material layer system that has been under development for some time. The material layer workflow is very important to us and if you have feedback about how we can improve upon the system or workflows please let us know.

Hello,

Apologies for the delay. The new material layer system is not available yet. I’ve reached out to my colleagues who are more familiar with the interaction of the two systems to see if we have any best practices or samples. I believe that while you can use the [current Material Layer system with Substrate [Content removed] it likely has performance and complexity implications that make it not a good fit until the new material layer system is available. I should be able to provide additional details soon.

Hi,

After checking with my colleagues, we don’t have examples of using Substrate with the current material layer system because the performance cost can quickly become very high and there may be incompatible parameters. But mainly, multiple visible slabs on a single pixel won’t be performant on current gen consoles.

Some additional information that may also be helpful about the differences between the two systems and our plans:

TLDR; On the surface, Substrate and material layers may appear to do similar things, but Substrate does them better with significantly improved visual fidelity, but without the same range of instance overrides

Material Layers, implements what we call “horizontal blending” only, where 2 material function outputs can be given a mask/weighting to blend them together to create a merged visual output. The layering can be overridden/reordered from instances but at the cost of creating a lot more shader permutation.

Substrate allows for more blend types and building the blending into the BSDF (slab) output itself, giving more variation and depth to the visual output than simple masking/weighting, and is more efficient and healthy for runtime visuals. Blending in Substrate is only really built into the base material for now and manipulated by override parameters, but the layering itself can’t be rearranged or altered from the instance, it’s a per-material thing. This means it provides much better visuals with a huge range of behaviors from the instances, but doesn’t support the current material layer system`s flexibility of changing layer order etc.

We are working on a more flexible material layer system that allows reordering of layer functions and is compatible with Substrate without the shader permutation explosion. . The new material layer system will be using Substrate, just feeding its compatible parameters into a Substrate slab at the end for instance.

I hope that helps, let me know if you have additional questions.

Understood! Thank you very much for the explanation. I’d like to know how we’re supposed to enable the new material layer system.

In 5.7, it appears to behave the same as the previous material layer system, and we’re still unable to use Substrate with it.

Regarding suggestions, I think it would already be quite helpful if Substrate slabs could be used within the material layer system.

Additionally, it would be even better if the material layer blend could access information from a specific layer, rather than being limited to only the top and bottom layers.

Alright, I look forward to the additional information you can provide.:grin:

Got it, thank you very much for the information. Until the new material layer system is released, we will continue using the old material system in version 5.7 to ensure our existing material layer workflow remains functional. Once the new system is fully developed, we will consider moving to Substrate.