Substrate - Feedback Thread

Agreed. The leaves themselves look just like what I thought they ought to when pressed against the glass, but I also see those white-spots. Ought they not be green if the leaf is in/against the glass?

I mean like this horizontal line of pixels (I marked in red in the borders the “invisible line”)
Over that line is solving the reflection and refraction in a way, and under that line looks different.

Other data I could give is… the glass is a block of geometry (not a single sided panel) but is not a volume encompassing the plants.
Also, the plants are interpenetrating the glass geometry in different parts (and in other parts no) but is not like the plants are interpenetrating the geometry just in the top part (where I note the artifact)

Also, when the camera does a travelling-in that top block of artifacted pixels move with the camera, so It looks like some screen space thing.

Generally blur effect requires taking samples from multiple points, so I suspect that some screen space artifacts are inevitable. The farther the depth of the object behind the glass, the larger the blur’s kernel must be. That line is probably the point which the kernel cannot get large enough without going off screen to sample.

1 Like

Ok, yeah, sounds reasonable enough.
So… I went back and double checked my Substrate test scene.
First thing to note… the plants aren’t actually intersecting the geometry at all.

and then I went back and took screenshots from a different angle, and the problem of the unstable frosted glass look persists… and now that I look at it, It doesn’t looks like a screen space problem.
It looks more like the density or the roughness varies with the distance from the camera or something.



It might still be a Screen Space problem… but I have some “air” over the glass panel now.

thanks for reporting @Juanmilanese . Indeed this is a screenspace algorithm so it will never be perfect. But we should be able to make that more stable. Now Added as a TODO.

4 Likes

For color absorption in glass, the docs for the Path Tracer recommend using the Absorption Medium material output node with the formula Transmittance Color = Color^(100/Distance). Is this workflow the same for Substrate or is it replaced by the Transmittance to MFP helper?

Hello,
Good question.

The mean free path is what drives the surface extinction and thus the “transmittance color”. For the slab, that is defined for a surface. For the path tracer, that is also used for the volume of the object as if it is fully filled.

So to answer your question: We would like to unify those workflows at some point so that it is clear what is surface based or volume based extinction (mesh is empty or filled? Inside is homogeneous or hetherogenous? etc.).
Unification might be that slab continue to represent the outer shell properties while the path tracer node is used for the inner part (with potential extension to heterogeneous).

1 Like


When viewing a surface with translucent-grey transmittance in unlit mode via a substrate-legacy conversion node, it reads rainbow colors from outside the screen. I’m going to guess it’s a product of the blur not having information to read from, but I’m obviously no expert.

When there’ visible geo outside the surface it is fine.

Out of curiosity on that note, do you know if Unreal Engine has any sort of guide band feature that could be used to render some amount of the Gbuffer outside of what’s visible on screen, to help alleviate certain screen-space effect discontinuities? If not, is that something you would consider adding? While it would obviously incur a significant cost in real-time, I’m moreso thinking for the MRQ, where raster is significantly faster than PT but still has artifacts.

Just as a heads-up, the resolution (at least for my client) is too small to read any text. You may wish to try resubmitting as an attachment perhaps?

1 Like

I’m not fully sure what the issue is, but it sounds like some invalid/uninitialized data are read. Judging by the blur it looks like it could come from our ‘roughness blur’ pass, but what I’m unclear is you mentioned this is with an unlit surface, while I would expect that to happen only with a lit surface. Would you mind posting a picture for the material? Do you do any scene texure reading into that unlit material?

Thank you!

/Charles.

I have since deleted the project it was a component of (asset pack test) but I can get it back. It was the introduction text box in the asset zoo of the Bazaar library released a month or so ago for free for the month.

It was strange, because the lit material did not have any issues to speak of. I didn’t notice any sort of screen-space discoloration or change, yet unlit clearly looked quite strange. The blur on the lit applied correctly and it received something resembling proper reflections via lumen as well.

I’m sorry, could you say this another way please? I don’t quite understand.

Hello, I’m trying the Substrate on Unreal 5.3.2. However after enabling Substrate, I found materials AO becomes having no effects on rendering although I can see the correct AOs in buffer material AO view. Before using Substrate, materials AO works fine when my static light is off and lumen is on. So is there any way that I can still use material AO with the Substrate?

Hi, this is a known issue in 5.3 and it has been fixed since then on the UE5 mainline in CL 27561891. It should be relatively easy to integrate, and only requires to restart the engine.

This will be part of 5.4

Sorry, I meant if your material had any part/logic reading directly the ‘scene color’ texture.

Not that I saw; the material looked essentially like a normal unlit material, and I don’t quite understand how/why substrate chose the translucent-grey transmittance as a shading mode to begin with.

Hi Charles, is this replying to my issue?

I’m getting the message

Substrate Material was out of budget and has been simplified.

Would like to know more about this message and how best to work with it. Including

  1. Is there a way to increase the budget?
  2. Does the “simplified” imply a loss of functionality in the material, and if so what is lost exactly?

thanks

1 Like

This is because your material do not fit in the budget you have set (r.Substrate.BytesPerPixel and more recently added r.Substrate.ClosuresPerPixel) . So we needed to merge some of the slabs together for it to compile.
The material editor substrate tab should give more details about what is happening (although keep in mind it is in progress and we have fixed some issues for 5.4).

1 Like

Hello @SebHillaire,
just a quick question regarding experimental rough refraction. When enabled:
image
Using a transluescent material like glass with roughness blurs the scene behind the glass as expected but currently it does not affect other objects with translucent material.

Is this something that might get improved in the future or is this a limitation of how transluescent materials are rendered that substrate cant solve?

that’s a limitation. the blurred refraction is a framebuffer copy. at this point translucent or refractive materials are not in it. by default they are composited later. so… that’s “normal”.

arguably the framebuffer or fragments of it could be updated after each translucent object been drawn, but this will still introduce sorting artefacts if they are out of z-order and is not very performant for lots of refractive objects, cause it’d have to be blurred after each object, creating lots of “overdraw” or recomputation.