Substrate - Feedback Thread

Because this is experimental and will change in the future we do not provide substrate specific support for that material layer workflow for now.

Subsurface profile is not deprecated, Substrate supports it 100%. The per pixel diffusion is simply using the slab MFP + DiffuseAlbedo per pixel to drive the subsurface effects per pixel (on screen diffusion, transmittance, etc.), instead of uniform on an entire surface without much variation. I hope this clarify the situation.

Hello,

Thanks for reporting. This is fixed in 5.7 non preview.

Note: I noticed this morning a crash due to something else substrate + megalight + r.Substrate.ProjectGBufferFormat=1, so that will be patched in 5.7.1.

2 Likes

Hm, that doesn´t really help me right now…
Maybe you can at least clarify if legacy materials would still work the same in the material layers gui, as they did before, when enabling substrate?

Because then we could still move our master materials to a material layers gui workflow and just create substrate materials for use without the material layers gui, until that feature isn´t in experimental status anymore.

If these do not work, we will have to hold off on substrate, even though it in itself is production ready.

Maybe that information could be added then, so its more clear for other people relying on the material Layer gui.

The question was more about wether I could then just stop using the subsurface profile for substrate materials and have all its features represented by stuff like MFP, which I would very much prefer, so the thickness for example isn´t relying on different subsurface profiles, but could be set in any material instance via a MFP parameter instead.

Maybe you can at least clarify if legacy materials would still work the same in the material layers gui, as they did before, when enabling substrate?

The Material Layers GUI works the same as it did before when you enable Substrate. You can use the MaterialAttributesLayers material expression to blend MaterialAttributes together, which you can then feed into a Substrate Slab like in this image below:

For performance reasons the existing Material Layers GUI can only be used to mix parameters (the inputs to Substrate Slabs), and not used to mix Slabs themselves.

We still need to make some improvements which are on our roadmap:

  1. Let users extend MaterialAttributes so they can blend Substrate specific properties (like Fuzz).
  2. Currently only a single MaterialAttributeLayers can be used in a Material. We need to decide if we want to support more than one so you can feed multiple slabs.

where it says you check “Substrate enable material layer support (Experimental)”.

We’ve removed support for this experimental feature. This feature allowed users to add Slabs through the Material Layer GUI, and this was bad for performance.

You can stop using SSSProfile if you want to. But not all parameters (especially the non physically based parameters) from profiles are present on the slab (and it will remain like that).

Been getting some major differences in material specular visuals in the latest preview:

Also the Anisotropy seems quite stronger (in both material instances it is set 0 but in 5.7 preview it seems to be there regardless and no value will weaken the effect)

UE5.7 Preview (Left) UE5.1 (Right)


This is the overall material structure (pretty simple but I’m mainly testing the specular responses):

It would appear that adding color to the specular highlights no longer works like before.
At the moment if F0 color value (brightness) is increased the material the whole material changes color entirely, which wasn’t the case before:

UE5.7 (Left) UE5.1 (Right)

Have there been changes that require the use of new or different helper nodes to work like before

1 Like

Hello,

UE5.1 was such a long time ago. At that time Substrate was experimental and early and I do not remember what it was doing exactly in details :slight_smile: . Things have changed and 5.7 is an official release no longer beta nor experimental.

So unless something is broken, 5.7 is latest. I can say the difference in conductor spec color is due to the difference in specular to diffuse energy conservation evaluation (grey scale LUT lookup for performance). I have not been able to reproduce the anisotropy bug: When 0, no anisotropy is visible and haziness seems to behave correctly.

Was just checking up on this, and looks like you accidently pinged a different user instead of me :stuck_out_tongue:
Happy to know this has been resolved now though, thank you for the fix!!

1 Like

Hi!

Manged to figure it out! The UE5.7 screenshots were taken with the project using SM5, enabling SM6 gave the same results as UE5.1 :partying_face:
Great work but maybe add a small notification that you need to enable SM6 for Substrate to really shine :wink:

1 Like

Thanks!
So it was the automatic simplification then trying to do its best with less space for parameters. We have a round of documentation update and this should be mentioned there. I’ll make sure it is.

2 Likes

@SebHillaire How does it works with Layered materials? I have a nice set up, which basically does many things in a very similar fashion as substrate does natively, and it looks for me like it could be a best way to use substrate and make it usable for most users, but when I tried it last time it was seems not feasible option. Are there any plans to update layered materials to support Substrate ( and as well fix and finish what is quite frankly is broken with that system? -)) Or replace with new substrate driven layered UI ?

Thanks

Are you talking about the material layer ui system?
There is always some confusion when trying to find information on that, because you can also just setup layer materials within the material node view.

If you are talking about the Material Layer UI system:
Yes please, I strongly second that.

Having the substrate material fully work with the material layer gui would make for a killer material system, that would be a lot easier to use, especially for all of us not coming from game dev, but rather with cinematic or other uses of Unreal Engine like virtual production.

But Just FYI: The Material Layer GUI system is another team, from what I´ve heard, so not directly related to this substrate specific thread…:slight_smile:

As mentioned this feature was experimental and got canned but we still want something like that. For the sake of performance, the usual material layer UI should be used to blend material parameter and feed a slab at the end, that should work. Still in dev and TBD so we will see where it evolves. We want it to be cheap to layer things as compared to what we can do right now with material attributes for instance (e.g. leverage dynamic branching, only evaluated what needs to be based on mask).

So right now it is orthogonal to Substrate at its core since we only want it to provide a set of parameters at the end. Not N slabs for now (because multiple slabs is then more expensive for advanced look).

Stay tune for more details when the time comes.

1 Like

So I was playing with substance in a new dummy 5.7 test project. I was making a frosted glass material, like in the documentation. and it seems that the rough refraction on my transparent mat is not working at all.

I recreated the mat in the content examples project also set to 5.7 and is working as expected there. Double checking the project setting the rough refraction setting is enabled on both. Any other setting I should look out for?

Edit: deleting and remaking the dummy project does not work.

Hi, you need to set subsurface type to “Simple Volume” on the slab.
(this is undocumented and I found the solution in another post)

Unfortunately, It is set to simple volume.

You also need to select a refraction method. No refraction => no rough refraction. Hopefully that is it (that shot is with latest 5.7)

May I ask how substrate glint works? I couldn’t find anything about it, following the docs by enabing r.Substrate.Glints=1 doesn’t do the trick.

Also is it still necessary to set Slabs to Simple Volume when they are used as top layer? Cause i don’t see a difference when doing so.

I am on UE 5.6.1

Best regards