Hey there! Just wanted to add that in my case, when I try to render a Substrate SSS Material using the Path Tracing renderer, the Subsurface Scattering effect just stops working.
In the following screenshots (sorry - just follow the letters - I had to combine all the screenshots in a single image, because I am not allowed to post more than one), I have the same exact assets (same material and static mesh), when I switch the viewport to Lit mode - it renders SSS: screenshotB
Once I switch the viewport to render using Path Tracer, the effect is gone: screenshotA
Also did a quick test, and if I turn Substrate Materials OFF for this same project/same asset, and created a new PBR Material from scratch, that uses the SSSProfile shader model, the SSS effect works in both Lit and Path Tracer: screenshotC
@SebHillaire
Is this a bug:
My Substrate material is being simplified in 5.7 automatically, and I also can’t increase “Substrate Closure Per Pixel “.
When I change the Closure Per Pixel in project settings and restart the project, and then check it again in project settings, it resets to the default value of 1. And my layered material stays in its simplified form.
Note: I am not sure if by increasing the closure per pixel, i will be able to get rid of the message in material and avoid auto-simplification. Is this the right thing to do? Does closure per pixel mean the number of vertical layers allowed in a single material?
In short yes, basically the math is not the same so if you use it this way. You would have to do the energy conservation, clear coat absorption, etc. math yourself. You might as well use the SimpleClearCoat node.
2. Having a static Enum would be great with multiple options and labels so instead of integer-based switch value i can use an enum with labels to make material more artist-friendly, which I could also expose as a parameter. It will make the materials more artist-friendly. especially if I am selling a material-based product.
If this is not possible, then for the time being please give us the option to set the current multi-switch node static with the check box, just like we have an option on a static switch node to make it non-static.
3. Right now there are 4 different input types in material function like float, Vector2, Vector3 and Vector4. It would also be great to have a input node in function for dynamic vector, in case my function is general (like cm to km conversion). It save me trouble of creating multiple functions for same thing and also It will make the material function input similar to what we have in material expressions. for example we i can attach float, V2 or V3 or v4 in node like “multiple” or “Add“ without causing error.
4. Is it possible to have for loop node in case someone don’t want to use a custom node? Because I read that anything I write in a custom node won’t go through the engine constant folding process.
@SebHillaire
I have a question: I read on forum where it was mentioned that I should avoid “if” nodes as much as possible and rely on nodes like step.
Is “If“ node rally slow? and if yes then does step node have same level of accuracy in unreal engine compared to if?
Constants on input of substrate nodes: we have a task for that I think already but I will check and add if needed.
Those other requests are not linked to substrate core itself. So please post those in separated threads. We already have all those in the list somewhere as general material editor improvements but I’ll forward still to the team. Sorry but this thread is not for general material editor support.
Short answer for dynamic if and for loops: they are not supported yet in graph but there is some WIP on that. For loops in custom nodes are fine.
I checked your project on our latest 5.7, and the issue with transmission leak are independent of Substrate. I can reproduce them by turning off Substrate. These are due to SSS transmission handling with Virtual Shadow Map. Maybe this is something we can improve, but that’s not the focus at the moment for Substrate (i.e. parity and perf).
The ‘opt-in’ nature of many of the features is great if working directly on the Slab, but trying to parameterize or wrap it in a material function (like in the included Substrate Standard Surface node) forces the most expensive connected shading path to be taken, with seemingly no way to override that.
I don’t know enough about the backend to suggest comprehensive solutions, but maybe a Substrate NoOp node we could put in a Switch/Branch? Concept attached.