@SebHillaire
I am seeing few Issues in Unreal Engine 5.6.
Subsurface Profile Shading model is causing extreme SSS. I just converted the default metahuman material using the convert feature of substrate.
In Scene Texture Node Base Color Id for Grooms become worst compare to legacy material. I was loosing only some information in legacy material but I lost completely in substrate. now I can’t manipulate the groom in substrate.
I also have few Questions:
moving forward what will happen to Scene Texture Id’s related to shading model. If i am not using single shading model node will these still work with all the layering system of substrate? or these ID’s will become useless in future as people start to relay more on Slab node.
in legacy material I wasn’t able to manipulate the Translucent shader in post process materials. Will i be able to do this with substrate if yes then which “Blendable location“ do I need to affect translucent material from post process material? the goal is to affect translucency along with other object.
Feature Request:
It would be great to have a following scene texture IDs in the scene texture node in addition to the existing one:
Masked Volumetrics Color + Alpha: to mask out all the volumetrics like Niagara, VDB, Clouds in sky, and fog in the scene
Masked Groom Color + Alpha: to get only groom assets in the scene because there seems to be a limitation which causes the groom data to be lost in the base color ID
Only HDR Emissive color: to get all the emissive color in the scene
Translucency Color + Alpha: There are IDs in the scene texture, but they don’t work properly
World Normal Without Texture-based Normal Data
Mask for Sky Atmosphere: So, I can change the color only of the atmosphere using the process volume without affecting fog or clouds.
Additional Feature: Overscan in scene texture if possible
These features can be great improvements to post-process materials.
Thanks in advance, looking forward to hearing your thoughts on these
| Subsurface Profile Shading model is causing extreme SSS + Scene Texture Node Base Color Id
We will check but in 5.7 this should be a match.
| what will happen to Scene Texture Id’s related to shading model
The only thing that is sure is that all legacy material will still work with this one: one shading model per pixel matching 1-to-1. With substrate new materials It will be an approximation as shading model id cannot be exactly derived from Substrate many slabs or even single slab. We might have other possibilities to drive such workflow such as custom per pixel data in the long term.
Post process and Blendable locations should remain unchanged with substrate. If something is broken for substrate as compared to legacy (not a new feature!) please report with a repro and we will fix.
Scene texture IDs feature requests: having those is different mask would likely incur a large memory and composition cost, would only be available at some point in the frame, etc. so I do not think that will happen anytime soon for real time. We do have a task in the backlog to implement more scene channel for advanced composition related to that (similar to Arbitrary Output Variables). A long term task.
Second roughness and rough refraction: only the first roughness is linked to rough scene refraction. That is a choice today. We could account for both, but it would just be the mean of both anyway for efficiency. Just swap first and second roughness if needed right now.
In the long term at some point, will there be a scene texture ID for lighting data as well, or is it not possible based on current technology?
Does the second roughness work if I use it for metal or other opaque surfaces? If so, and it’s only not working for refraction, then even if it’s intentional for performance, it still feels like a bug.
It loses consistency, which is crucial for material behavior and workflow.
If users want to optimize, they can stick to the base roughness, but for those using Unreal Engine for cinematics who don’t care about performance as much, it would be great to have consistent behavior for all Slab inputs. It would be a quality-of-life improvement if we could use the second roughness for refractions, just like we can for other material types.
Everything is possible but it is more expenssive to separate and recompose. And it would complexify the code. So this would be part of the AOV work.
Second roughness works everywhere yes. So far it has been done this way but we could have it affect rough refraction yes. I’ll add a task for later to discuss and check here with the team.
Hi, I’m glad to hear that Substrate will be production ready in UE5.7. After playing with rough refraction for a while, I find some problems when two translucent materials overlay with each other:
The sphere has a simple rough refraction material copied from Unreal documentation. The two water surfaces are legacy translucent materials, converted to Translucent Grey Transmittance.
They all look bad behind the sphere. Is this expected? (Other opaque single layer water doesn’t have such problem.)
Btw, I also find a new node. Its source code says something related to Substrate, but I can not get it working.
I can see many reasons why complicated translucent material stacks would fail, but I’m also not sure how realistic a use case this is. UE’s SingleLayerWater material is composited separately from other translucency and tends to cooperate better with other translucency sorting and shading. Furthermore, translucent colored transmittance is the full-fat translucent shading model that best supports these features (at a considerable expense).
Basically, I just don’t think multiple rough translucent materials shading and compositing correctly is a bug, just a limitation of Substrate’s raster path.
As for the material cache, I have no idea what that is or what you’d use it for, but it feels more like a TA node than a material art thing.
Thanks for reply. I’ve learned that translucent materials have sorting problems, so I never intentionally stack them together. While sometimes, particles, or glass windows, will overlap with each other. I hope they won’t be overblurred or never blurred.
More tests: common translucent materials like sprite particles look good behind a rough glass.
Use translucent colored transmittance doesn’t help with the water.
Turn on ray-traced translucency can fix this. Probably you are right, it’s related to the limitation of Substrate’s raster path.
For the “Material Cache Value” node, it sounds like a render target. If we can store and sample an intermediate stage in the material, we may achieve many cool effects and optimize the performance.
As an additional thing, the blurring is computed (AFAIK) as a combination of the material roughness and the scene depth behind the material (IE, things closer to the surface will be blurred less than things further away). I don’t totally know how the implementation works, but if you have objects that aren’t being written to the depth buffer (forward shaded surfaces and particles), then the rough refraction might just not know how to affect it bc that information isnt there to begin with.
Now, they give manual translucency sorting options for when you have specific scenes, but that’s obviously a huge hassle to set up and your performance could be crap.
Just out of curiosity: are you primarily game, archvis, or offline? RT translucency probably shouldn’t even be considered for games, it’s a ton of perf for minimum benefits.
I am a Minecraft animator using Blender for 6 years and Unreal for 3 Years. It used to be offline, but now I prefer real-time rendering with Lumen or Megalights.
IIRC rough refraction has been supported by RT translucency with the legacy material system. Turning it on will also change the reflection and color, and sometimes flip the scene “upside down” under a high IOR. I want simple blur effect, so Substrate just meets my taste.
I notice that you have discussed colored shadows before, and I want this feature too! Making another wish here
Other than these issues, I have a question. Is it possible to affect translucent objects along with other objects while applying post-process material? based on my test seems like it’s not possible. Let me know if I am missing something.
@SebHillaire
I am trying to test the reflections in the substrate. Looks better compared to legacy material, but less visible compared to path tracer. Right now, I am increasing F0 to match the reflection intensity to the path tracer.
Ray Tracing is enabled; Light Mode is set to Hit-Lighting, and reflection max bounces are also high.
Is this the limitation of the current system?
@SebHillaire
Trying to understand diffuse and 2nd roughness:
I am testing the Slab node’s diffuse and 2nd Roughness values if I set both values to the same and use the mask for weight, both have the same roughness. I thought the 2nd roughness adds on top of diffuse roughness and it’s for imperfections, but it doesn’t seem to be the case.
Please correct me if I am wrong, based on what I understood by testing it and looking into the clear coat building block function.
Suppose if i want to create a clear coat surface:
For a Cheap Approximation of a clear coat, I can use a single slab with 2nd roughness.
For a physically accurate, clear coat, I can use 2 slab nodes with a vertical layer node.
If this is correct, then instead of using the 2nd roughness for imperfections like dust particles and fingerprints, should I use lerp with diffuse roughness only?
The groom strands not writting their data should be fixed on latest 5.7.
I believe the SSS issue on MH should also now be fixed. I will do similar test.
I locally reverted a fix that could cause such an issue, but I can’t repro your issue. Would you mind shading some kind of repro? Either sharing a project, the value you used (SSS profile value, simple material with a single slab, light setup, …)
We are constantly working toward bridging the gap between the different rendering tech. But it also look like the path tracer renders very differently overall in that shot. HArd to tell.
2nd roughness is not added to the 1st roughness.
There is a first specular lobe using the first roughness with weight (1- SecondRoughnessWeight).
And there is a second specular lobe using the second roughness with weight SecondRoughnessWeight.
So if RoughnessA=RoughnessB, it is like having a single lob with a single Roughness=RoughnessA=RoughnessB.
Imperfection can be controled by increasing the weight or the second lobe beind rougher. For instance where there are scratches or local bruise.
For a Cheap Approximation of a clear coat, I can use a single slab with 2nd roughness.
=> yes, I actually create a material function that can do that. You need to be carefull with energy conservation. Otherwise yes you have the simple clear coat node or two slabs (higher quality, more expenssive).
If I think about the steps to reproduce it, here what i did with my projects where i am seeing the issue:
Create a Unreal Engine project in the 5.6.1 version
Add meta humans to the scene
Enable substrate Materials and convert the meta-Human Materials
issue should appear if not try restarting.
After issue appears, it will stay even if you upgrade the project to 5.7
Workaround:
Create a brand new project using version 5.7
Enabled Substrate
Migrate the level from problematic project to the brand new project
when you open scene into new project issue will disappear
BUT NOT COMPLETELY;
after moving meta human to new project it looks fine when the camera is close, and extreme SSS issue appears when I move my camera.
As I move my camera far issue becomes more visible as camera distance increases.
When I enable substrate and convert the material, the face turns black. I think you already know about this issue. But I am curious if the black face issue will automatically disappear when 5.7 gets a stable release.