Substrate - Feedback Thread

Yes, colored refraction would be a good visual feature to have. It is good to see such enthusiasm for it!

But as you all already discussed it is not so simple:

  • RGB separation would be a good starting point. But as you noted it in fact would need information for all wavelength to get nice color separation.
  • Furthermore, current refraction for the raster path is an approximation (no real intersection with depth) so the color separation is going to be an approximation on top of the current refracted point, i.e. how much should the RGB sample be separated in screen space? That should also account the roughness effect on the look.

I believe we should do something and it will happen when this gets prioritized.

2 Likes

CitySample: depends on when you have tried that and what backend. We are still figuring out compilation issues for some backend recently. With -dx12, it is supposed to work through. We will give that another try on our side.

Hi, tried searching for Substrate SSS related posts. Is SSS with Substrate incredibly noisy?
I’ve tried other AA methods TSR being the one shown here and still very noticeable.
Substrate_Noise

You could give the users a choice, if they want a simple/cheaper appoximation, or a more precise separation, which relies on 3 real wavelenght inputs. The cheap approximation would just need the normal IOR input as a base, and the other two would just some addition or subtraction from that IOR to get the other two missing ones (for the simple RGB version).
How much the simple approximation separates the IOR and with that the colors could simply be decided with one or two sliders, that just add/subtract more or less from the given IOR value. No need to overcomplicate things for an apporximation. Leave that for the more accurate and probably more expensive version with real wavelength values :wink:

Well, if they cannot get any useful info from the mesh or depth channel, then we can still give them some infos to work with. Your new substrate material thingies do have this new nice thickness input ^.^ Since in the real world it also depends on the thickness, and not just the IOR, that thickness input sounds perfect for this, don´t you think? :wink: Can be a thickness scalar for uniform thickness and separation, or a thickness texture for varying thicknesses/separation across the mesh (would that lead to caustics?).
Normalmap textures tell you the angle (roughness brings in some randomness or just averages everything out), IOR tell you how strong the separation is per thickness unit, and the thickness input tells you, how thick the material should actually be, maybe on top of some mesh infos, or if mesh infos for thickness aren´t available.

And the precise variant just uses all of that with real world values (either given in form of some presets or via manual input), and then you can still think about a precise version with just 3 colors, and one with 7 colors/wavelengths.

And maybe we could get some caustics too as a byproduct, if transparent colored shadows ever work, and take all that stuff into consideration.

I can only guess:

  • This is because your MFP is too large. In this case the sphere should become translucent and this is what the screen space subsurface algorithm is trying to do but failing at.
  • Reduce your mean free path should fix this. Large transmission effect should be enabled on the light source.
  • If you would take a subsurface profile and setup a super large MFP, then you would also get the similar issue.
  • Subsurface profile should work the same way as in the non Substrate path.
  • We have many fixes for SSS, Subsurface, etc. coming in 5.3. But in this case only a

Hey thanks for getting back to me.
Thanks, got it less noisy but having odd bugs when pairing this with POM, I think I’ll hold until 5.3 is out.

env:unreal 5.2
BUG:

1.the blend mode alpha holdout in 5.1.1 is work, but neither Legacy nor Substrate will work properly in 5.2. Below is a screenshot of 5.1.1

fix solution:

#define MATERIALBLENDING_ANY_TRANSLUCENT (MATERIALBLENDING_TRANSLUCENT || MATERIALBLENDING_ADDITIVE || MATERIALBLENDING_MODULATE || STRATA_BLENDING_TRANSLUCENT_GREYTRANSMITTANCE || STRATA_BLENDING_TRANSLUCENT_COLOREDTRANSMITTANCE || STRATA_BLENDING_COLOREDTRANSMITTANCEONLY || STRATA_BLENDING_ALPHAHOLDOUT)

in this define add STRATA_BLENDING_ALPHAHOLDOUT

2.2. Double-click the chart method after engineering crash, source engine can be skipped:

Working with SLW and testing out Substrate. It’s super cool, but my big hope was that with Substrate we’d see decals working on SLW. I see in the github code there is a comment mentioning “when we get decals working with SLW” (SingleLayerWaterRendering.cpp:1300) that has been giving me hope for months. I understand it’s a tricky thing to get working, (and maybe isn’t even a substrate thing, but a dbuffer decal thing that would need changes), but is this on the roadmap at this time? Can’t imagine it is high priority at all, as probably a very niche usecase but… :pray:

Really would love a nice way to get decals on water (especially for animated, art directed polish like ripples and foam flipbooks baked out from houdini)

@L1Zhao This was working before. I’ll add it to our TODO list. Thanks for reporting!

@DMeville Work for decal on water could be done for the current material system. This is not related to Substrate itself. I can confirm that it is in our backlog but it has not been at the top of our priority list so far. It will need some careful implementation because some decals might have to be applied on water, some not, some should be water only, etc.

2 Likes

Is there a way to change the blend mode in the shader, depending on the distance?

I would like to have a material be opacity masked closeup, but at a certain distance just become opaque.

Traditionally, this would be easily achievable, by just assigning a different Material for a LOD.

With Nanite, this option no longer exists.

Can this be done with Substrate?

The context is wanting to have a much cheaper material in the distance. Especially nanite hugely benefits from opaque materials. So being able to have an opaque blend mode in the distance, where the difference can’t be perceived, would be a big performance win.

1 Like

Hi @TheRealBiomes ,
This behavior is unchanged with Substrate. I would say this would be more a request for Nanite to support material switching based on distance / screen area, for instance.

1 Like

Merci Beaucoup :slight_smile: for the quick answer.
Will find the corresponding thread and post this.

1 Like

Is there the notion of adding a node like the shader-model node for default materials? Would Substrate offer that kind of in-material path-changing option?

Hello @Frenetic ,
Unfortunately, I am not sure I understand; sorry.
Please provide more details :slight_smile:


Hi,
The video shows a comparison between the 5.2 substrate and 5.1 strata. Please pay attention to the shadows under the nose and between the lips. Lighting & Shading is exactly the same, but the 5.2 strata’s SSS MFP scale kills self-shadow a lot, while the 5.1 maintains a reasonable shadow look as the scale (thickness) goes up. Is there any way to fix this? Thank you.

I add an item for us to look at that at some point. Please show the graph so that we can reproduce the setup (and see what thickness maps to in this case).
Thanks!

Hi,
I create a simple scene with directional light and Lumen GI turn off (lumen difference between 5.1/5.2 is another nightmare, BTW). Also the shader is simplified to show the case. Keep eyes on the shadow under the nose. Start with thickness = 0, all good. As the thickness goes up, the shadow from 5.2 substrate fades out very quickly. I would say the thickness =0.2 with 5.1 strata scene is a target render result with nice SSS looking and correct shadow. But I can’t get same resule with 5.2 substrate.

You can see with 5.1 strata, even the thickness goes crazy high like 0.8, and the head is already wax look but the shadow still looks “phisically” correct.
Anyway to fix that with 5.2 substrate?

1 Like

Substrate does not work with water system? Or it has issues with landmass plugin?
If I add ocean or rivers, only far distance works.

Hi,
It is supposed to work with the water system as far as we have tested, maybe landmass has an issue. Please provide more details or a way to preproduce as tiny as possible. Thanks.

Hi! Whatever issue it was, looks like it’s fixed in 5.3. In 5.2 I have imported high map, then I added ocean. If I enable substrate, ocean land just becomes flat and there is no water.
I think it is landmass plugin since my landscape BPs also don’t work when substrate is on.