Substrate - Feedback Thread

@SebHillaire&@Charles happy new year!

Are there any plans to give Anisotropy / Anisotropic rendering some (much needed) love?

The current state (Nanite/Substrate, UE5.7):

  • Sort of works with Point/Spot/Directional Lights but disables any Source Radius / Soft Source Radius settings of that light. Instead it seems to take some pre-defined values
  • Instead of stretching the reflection in a line, it stretches to a weird sinus curve with Point/Spot Lights, while with Directional lights it stretches properly into a line (this is with ‘simple’ linear anisotropy)
  • Heavily blurs Skylight / HDRI but doesn’t seem to apply actual Anisotropy. Not really sure what it does
  • Needs a minimum Roughness of around 0.1 (?) on the material to show effect
  • Doesn’t do anything at all with RectLight

In UE5.6 much of the functionality was broken. Fortunately, in 5.7 most of the issues were fixed, but functionality is (back) to the level of 5.4.

So my question is: is this on the agenda at all? I understand it’s a complicated subject, but for many applications it’s quite important functionality to get the materials a proper realistic look.

Cheers

W

My primary feedback point - can we please ensure a very high degree of attention for projects that do not want to interact with substrate / leaving it disabled?

Keeping up with the progress on substrate; looks cool, great job for high fidelity projects. But the primary public criticism of Unreal in a realtime setting is overall performance. It is a serious challenge for every development team to try to stay ontop of.

To my understanding, substrate is an additive feature set with no performance benefits.

My primary worry at this time is that substrate will be enabled by default and that will be the default testing mode for unreal going forwards, leaving the current material rendering pipeline to decay and accumulate bugs.

I also want to share my experience with Substrate - Last week, I have upgraded my projects and materials, and they are all in UE 5.7 now.

The first thing to notice is performance drop (around ~1ms, from 100 fps to 90 fps). In Substrate, SSS and Anisotropy are much heavier than before. Plugging a single value into SSS MFP will take 500+ instructions (the slab goes from “simple” to “single”).

Fortunately, the solution is simple for me. Just plug them off or use a static switch when there’s no need for SSS and anisotropy. As I make animations, I used to create several universal materials with lots of params. It was convenient, but most of the time I don’t need those advanced shaders.

Substrate is powerful for cinematics and PBR rendering. I enjoy the new features and would like to see more improvement in performance. Also looking forward to its integration with Motion Design!

Hello and happy new year everyone.

Trying to answer a few of the questions:

  • Task added to investigate baked lighting ignoring environment color and clear coat regression. Thanks for reporting!
  • Hair shading model information needs to be at the same place as other shading model for lighting so unlikely we will separate them in the short term.
  • Anisotropy: something we would like to improve. Finding good real time approximation to that is hard however (see paper for area light + anisotropy for instance, not that many) and this is not our focus right now. Anisotropy with Substrate should work the same way as with legacy however. That is all right now on that front.
  • Existing projects do not have to switch to Substrate right now. Only new projects have it enabled by default. Our focus right now is Substrate + Performance. Only once our games will have shipped with substrate enabled on performance and quality targets we are satisfied with, and confidence is high, we will delete the legacy code path and force a conversion to Substrate for everything. It is hard enough to have to maintain two code path so one will have to go…
  • Using Substrate new MFP based SSS as well as anisotropy cost. We have not measured such big difference however but performance might vary. Those features should also automatically be disabled when MFP=0 or anisotropy=0 per pixel, resulting in faster lighting. The substrate pixel inspector tool should show that. We are still working on performance improvement also.
  • Toon shading: yes this will be an official implementation. It will be an implementation since there are so many styles possible with NPR. It will try to cover a large range of possibilities and incorporate our needs as well as needs gathered from studios using UE we chat with. Currently this node is experimental since we are iterating on it. Already available from our main public branch and will be in 5.8. Substrate must be enabled to use it.
8 Likes

@SebHillaire

Thank you for the clarifications, it helps a lot to understand what to expect going forward.

Thanks For the update, If you are open to feedfack for toon bsdf then it would be great to have built in outline featue based on surface shape and surface normals. specially outline should be on the surface, not outside of the surface, and should scale based on screen distance. and there should be options to change outline color, thickness, and opacity.

Thanks for the bug report on two-sided foliage. We indeed found a bug that snuck in for the substrate implementation which will be corrected in 5.7.3.

As far as glass vs. thin-glass, which one to use is determined by how the geometry is modelled. If the glass panel is a single polygon, you should use thin-glass. The reason the solid case is going dark is that we still apply a small amount of absorption (Beer’s law) and if there is no back-facing polygon for the rays to “exit” through, the rays going through glass keep applying this absorption all the way to the distant background, making it appear too dark.

Hope this helps!

I like the idea to have outlines within one material. Currently, most toon shaders rely on extra overlay material or post-process material.

I think the underlying problem is, we can’t access GBuffer in opaque materials. If this issue is solved by the upcoming NPR implementation, then many stylized effects can be done easily.

Let’s wait for good news in UE 5.8.

1 Like

For anyone curious, this is the Toon shader from Github Main Branch so far:

if you set the roughness to 0, then will this material show proper reflections as well?

No. I’m not sure if it is compatible with Lumen HWRT. The following video shows some problems, such as self-shadow, round highlight of rect light, and translucency.

Also I can’t blend it with other slabs. Looks like an early prototype.

Toon shading is early prototype. Lots of ways to implemented toon shading / NPR components: it might or might not be what you expect in the end. So do not assume anything.

It won’t blend with any slabs. Might work with the select node at some point. slab and toon cannot be simplified so not allowed to vertical/horizontal compose them for instance for now.

1 Like

@SebHillaire
Understood, but it would be great to have reflections and built-in outlines.

Hello !

In 5.6.1, using a forwardshading translucent material on two objects in front of another, there is a visible pop between 0 weight and a very low value when F0 is > default. The greater F0 the most visible it is.

Here we have two cubes, farthest one has F0=1 so it’s very visible.
Translucent colored transmittance, surface forward shading, high quality translucency reflections.
Material has a subtrate slab connected to a coverage weight node.

In the second picture, right object has a weight of 0 for reference.
Third picture, weight is 0.001, but “high quality translucency reflections” is Off

Hello,

That is due to Lumen not Substrate.

Lumen high quality reflection only works for the frontmost translucent surface (whatever its coverage is, if not 0 it has to be accounted for) Lumen Global Illumination and Reflections in Unreal Engine | Unreal Engine 5.7 Documentation | Epic Developer Community

1 Like

Ah that makes sense ! Thanks for the answer :slight_smile:

Hi,

I know the Toon BSDF is very tentative, with that BSDF coming
Is there plans or is it possible to create our own BSDF Nodes in HLSL or in Engine Source?

Or an easier way to author custom Shading Models?

1 Like

Hi,

See Substrate - Feedback Thread - #16 by SebHillaire .
So yes one of the goal at some point is to be able to add a BSDF easily (from code). But no ETA as of today.

1 Like

any plans on being able to (unrealistically) turn up the diffuse brightness of a slab?
im currently having to use the BSDF add node which does cost some perf so im wondering if theres a cheaper way to do this in substrate

or would you just do that via the toon shader BSDF?