Substrate - Feedback Thread

Thanks so much for your response!

Hello Team,

How far substrate is performant ? Is it same as legacy shaders ? The instruction set count ?
I mean with pure substrate material without layer in legacy shaders.

Thanks in advance.

Pure substrate material without layer? What does that mean?

How performant substrate is depends on, well, what you want to do with it. If you’re sticking to a single layer and the legacy featureset, performance seems a bit worse than the legacy model for now (like for like content), at least in my testing. That said, unless you have a need to make use of the more advanced effects substrate offers, there’s no good reason to upgrade.

1 Like

Hi,
Answering with a few points to clarify that:

  • All the legacy shading models should roughly have the same base pass / lighting cost.
  • Use the Substrate material properties or classification complexity tools to get that knowledge (tile complexity and legacy material identification)
  • All passes are tiled now so some parts are faster
  • More features supported, deferred decals enforced: nothing is free. Substrate might end up having a small overhead in the end (time will tell). But we also need to move forward and extend visual possibility for artistic freedom.
  • We still are working on performance optimization in order to we reach production ready state.
  • Then, the more feature you use on a slab, the more expensive it will be. In short, the lighting cost will also increase with the number of slabs for a pixel (two slabs: cost x2). Contered on lower end devices by forcing full simplification to a single slab (configurable per project).

I already added a note previously to have those details in the documentation.

What’s next on the docket for substrate in terms of new artistic features? I remember in the SIGGRAPH presentation that a lot of possibilities were offered but I don’t know what’s actually planned for the near future.

I’ve been using Substrate for a while now relatively bug free, but I can’t seem to follow Ben Cloward’s tutorial about water caustic decals (while using my best substrate interpretation) without running into a crash. Using SceneTexture:WorldNormal consistently causes me to crash. Is there something I’m missing?


(As soon as I plug in those masks running off from WorldNormal into the two lerp nodes, it causes the editor to crash)

LoginId:2af0452a4e683c9b15e8399b5c587166
EpicAccountId:e4435b781145438fbf7f5357319f4c63

Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\RHICore\Public\RHICoreShader.h] [Line: 147] Uniform buffer bound to slot 2 is not what the shader expected: Bound : Uniform Buffer[Material] with Hash[0x00a00c00] Expected : Uniform Buffer[Strata] with Hash[0x09700811] Shader Name : <unknown> Layout CB Size : 160 Layout Num Resources : 8 Resource Types : 5 8 5 8 5 8 8 8

UnrealEditor_D3D12RHI
UnrealEditor_D3D12RHI
UnrealEditor_D3D12RHI
UnrealEditor_RHI
UnrealEditor_Renderer
UnrealEditor_RHI
UnrealEditor_RHI
UnrealEditor_RHI
UnrealEditor_RHI
UnrealEditor_RHI
UnrealEditor_RHI
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_RenderCore
UnrealEditor_Core
UnrealEditor_Core
kernel32
ntdll
1 Like

@jblackwell Near future, the focus is production readiness and make it more performant with all our tech, e.g. Megalight & Lumen. More feature dev will only happen after that as a function of needs/requests.

@SgtFlexxx Thanks for reporting! Added a bug to try to repro and fix.

1 Like

What version are you on @SgtFlexxx ? It works on latest 5.5 for me. It rings a bell that we fixed this problem before. So I suggest you get latest version otherwise I would need better repro steps if that is in 5.5.1.

This was on 5.3. I’ll attempt to upgrade and see if the issue persists or not.

Alright upgraded to 5.5 and thankfully the issue seems to be gone now.

2 Likes

Hi,

I just started experimenting with Substrate and created a glass material, applying a simple glass and an opaque material. However, I noticed a significant difference in how things look in Lit mode versus Path Tracer.

My base material (M_MyBase) is a dark grey, and Lit mode seems to render it more accurately. Could you clarify why the results differ so much between the two modes?

c

BTW: If I change Translucency to Raytracing I get this… nasty results

@SebHillaire With Substrate enabled UE keeps recompiling shaders on every (sub)frame when rendering with MRQ.

LogShaderCompilers: Warning: Failed to compile Material /Engine/Transient.Footage CaptureData Material for platform PCD3D_SM6, Default Material will be used in game.
  /Engine/Private/SlateElementPixelShader.usf:168:58: error: no member named 'GetFrontSubstrateHeader' in 'FMaterialPixelParameters'
            FSubstratePixelHeader SubstratePixelHeader = Parameters.GetFrontSubstrateHeader();
                                                         ~~~~~~~~~~ ^
  /Engine/Private/SlateElementPixelShader.usf:169:50: error: no member named 'SubstrateTree' in 'FSubstratePixelHeader'
            FSubstrateBSDF UnlitBSDF = SubstratePixelHeader.SubstrateTree.BSDFs[0];

So yeah, basically what the title says. Usually this problem can be resolved by fixing a “bad” material but this time the issue is related to Substrate. Once I turn it off in the project settings, all the scenes will render fine.

It will even occur in a completely empty map which is super strange.

Any tips? I couldn’t find anything on Discord, Reddit or UE forums.

Thank you for the reproductin steps. It helped me to reproduce the issue locally. Indeed, there was an issue with the SSS surface and hit lighting (this was the missing part on my side). The issue should now be fixed on our mainline (UE5Main CL 38565780 / GitHub: https://github.com/EpicGames/UnrealEngine/commit/eb39ae87861ac542403bafb87f56076a0b0efb37) and will be available on 5.6.

Cheers,

/Charles.

2 Likes

Hi @Madeira3d ,
Yes the path tracer is not accounting for scattering in a slab in 5.5 and before. So if diffuse>0 with a MFP making it look translucent, it can look different.
A basic support is added for 5.6/main branch (non view dependent scattering). We hope to have it fully implemented for 5.6.

1 Like

Hi @Kidt ,

Yes, I have seen that reported a few times recently, and I have tried to reproduced but never succeeded. So it is unclear what is causing that yet, even after reviewing the code.
Would it be possible for you to share a small project for me to investigate further?

Hi @SebHillaire !

Just a ‘side’ issue, but as you are so active in the forum (thank you so much!) I would tell you a little problem. Maybe you know or can do something (as reporting it):

I know Main branch is not thought to work perfectly, but it’s giving me some packaging errors, while I can successfully package in 5.5. I have already installed MSVC 14.36, 14.38 and made all kind of combinations, but nothing (using Project Launcher as Shipping in an empty new project):

Would you know something about this? or, if you usually make package tests, could you warn us when you notice a packageable state of the Main branch?

Thank you very much and apologizes for the offtopic question.

Hi,
Sorry but you should ask in another forum section like Getting Started and Setup.
Maybe making a post similar to this one there would help you more (maybe that one thread is the answer too).

1 Like

This may have already been reported, but I found out what is causing Substrate to crash UE 5.5 with the ( GPU crashed 3d3 or D3D device removed) error.

Apparently when I imported some of the CC4 materials into the project two of them once converted to Substrate had pins in the world position offset slot.

This is what has been causing it.
Once unpinned and saved, no more crashes.

Thanks for the reply. We’re currently trying to reproduce the error inside another project. A colleague of mine has the same issue in a different project, so we started comparing our imported asset (packs): Automotive Materials, Metahumans or Megascans. Maybe one of those could be the culprit.

I’ll definitely share a workbench project with you once I’ve successfully reproduced the error. It’s driving us all completely insane.

1 Like

@Kidt Thanks for trying! Maybe try disabling metahuman. Someone fixed it with that. But I could not reproduce after enabling it so it must be somethings specific.

@APOCRS1980 Thanks! we will try reproducing with that. But would be good to get more details:

  • image of the material before/after substrate conversion would be helpful.
  • Also the version of the engine. Always try latest, we have fixed some issues with conversion in the latest 5.5.