Substrate - Feedback Thread

Thanks for the feedback!

I had no experience with Substrate, and I spent the last couple of days going through the documentation, talking with other devs and doing some testings, and I came to understand that Substrate works differently from the Legacy material.

I’ll check and make sure the documentation is clear about that. If you have more feedback about that please feel free to send me a DM with all that things that should be improved. This must be clear. I’ll check the tootip in editor also. but yes Substrate + Adaptive GBuffer is a different beast, more advanced and a higher entry point cost as of today. Substrate + Blendable GBuffer is production ready and we ship our games with it too.

Substrate with ‘Adaptive GBuffer’ will add 781 additional instructions to a material using the Shading Model: Subsurface, even if you just plug in a simple 3Vector or a scalar.

Substrate throw out more instructions yes because it needs to do more agressive packing with the new GBuffer containing closures, process substrate tree possibilities, Slabs needs to deal with more data more with new parameterisation, etc. But as I said that is not a good measure of performance in general (memory bandwith, occupancy, texture fetches, etc. also need to be accounted for) + we use dynamic branching to only execute code that is needed. Sometimes we cannot cull code before compilation and the compiler also fails to cull code. That is somethings we want to improve on for the Adaptive GBuffer.

Only looking at instruction count: it does give a clue but it is a very old school way to look at performance nowadays. If you want to ship a game today, you can use Substrate + Blendable GBuffer.

3 Likes

Aloha again ^.^

i have tested the “Substrate IOR-to-F0 (Conductor)” in the UE 5.8 preview version, and it works great :slight_smile: IF you add the sRGB to Linear conversion :sweat_smile: While using real IOR values, you really need that conversion for some reason to get the real look. Without it, the colors look off, too bright.

And i just noticed, that i used the wrong name for the metal, its copper, not bronze o.O

The front row is the unaltered node, the back row is using the sRGB to Linear conversion.

1 Like

The Tangent input on Substrate Toon BSDF doesn’t seem to work. No matter what, I pass into the slot, the specular always goes side to side (up-down if Anisotropy is negative). Is this a bug, or am I misunderstanding something? I tried manual vectors like (1,0,0) and swapping R and G on the flow map, and it is all the same.

You are correct: that implementation was incomplete. And I have fixed that a while ago in our main branch. If you can take code fix, the change list for missing tangent was this one.

Since this is not a crash + toon is experimental in 5.8, the fix won’t be ported over.

When I set the anisotropy to 1 in Toon BSDF, it becomes a thin line. Is that an intended behavior?
In my opinion, it shouldn’t get thin like a line, but thick like that, and there should be an option to rotate the direction of that, which can be used to add anime-like hair highlight. just like the character below has a hair highlight

it would be great if we can have a clear coat option toon BSDF as well.

Toon + Anisotropy: If you want thicker line then you decrease the anisotropy value / increase roughness. That is how anisotropy has always worked and we still follows the GGX behavior to remain coherent with roughness and behavior: high value => high anisotropy => thinner specular. We do not have a direct “width” control by design as of today (limited gbuffer size). The anisotropy/GGX LUT should be improved but overall the behavior is consistent with our default lit and other packages/software out there.

The direction is controlled via the tangent input (fixed after 5.8).

Now you are also in control of the shape that can be setup using the specular ramp on the toon profile. You can do ultra wide anisotropy with this, and you can also add some colorisation:

So not sure you have really tried the system but you can do a lot with it.

Clear coat: No. Especially not at this stage, there are already too many possibilities and feature request for what is there.

Hello! I did some quick test with the value you showed for the Copper example. The output F0 value seems to match the PBR value of Copper you can find here: https://physicallybased.info/ The color value are expressed in linear sRGB space.

image

Mmmhhh… ok o.O I guess, thats then one of those weird physical real vs perceived value discrepancies, because the copper i know and see everywhere is closer to what i rendered with the conversion :sweat_smile:

So if the math checks out, and the values are physically correct, then i guess, the real question is, what is the scene or render missing, which would bring it closer to the perceived values, close to the colors of coper etc, that we can see with our own eyes in the real world out there :melting_face:

I’m not sure but there are probably several factors:

  • Real copper is rarely pure. It will have some form of oxidation, dust, oil (fingerprint), … all contributing to a different look
  • We use 3 sample of spectrum (for RGB at different wavelenght) as representation of the full spectrum
  • The lighting will influence the look, so it would be interesting to get an actual test with physical lighting for comparison (HDRI?)
  • The tonemapper could influence the result

I’m not sure if all that can explain the all the differences, but there are quite some factors at play.

Hi, I am testing BSDF TOON, it is amazing. But when I rotate directional light, there are two shadows on the surface, one is moves w

ith the light, but the other one is still. Is it a bug? I untick cast shadow of the mesh, and set shadow extinction to 0, but still having two shadows on the mesh.

Yeah, it seems like, all the values from f.e. refractiveindex were made under laboratory conditions, with the most pure materials possible. There seems to be no good database for IORs for weathered, oxidized and/or impure materials. But f.e. Gold is not affected by oxygen, so whatever makes it appearing darker, would have to come from other metals. Soooo… would we need a kind of impurity and oxidation compensator? :sweat_smile:

Not sure, how i landed on that site, but it was an interesting read o.O:

https://sobling.jewelry/the-ultimate-guide-to-crafting-k-gold-alloys-used-for-jewelry/

Hi,

It is hard to tell, not even sure I understand. You seem to have multiple lights in your scene so they would all accumulate indepenently.