Is transmission / subsuf scattering working correctly?

Here’s a quick sample of On/Off.
The mesh is set with particular settings to avoid shadow and seam issues: DynamicInset Shadows and Shadow Two Sided, which can actually be turned off now that I made meshes manifold.

I tried just using 0,0,0 as the sub-surf opacity but it doesn’t change a thing? It’s only noticeable rarely. and It wasn’t noticeable before I started adding clothing in…

After a bit more looking into it, it seems that it toggles On/Off with values above .101 Meaning there is almost NO visual difference between grays and full white.

The documentation uses a gray base:

… Should a bug report be filed for this or is it working as intended? (how do you get a cranium to show light coming through?)

I think it is a bug… check this one. the value is supposedly gradient.

Trying to bake a new AO distance of 4 map to see if maybe something generated and not hand painted provides better results… :stuck_out_tongue:

This is the new texture (black and white, renders to red because of material changes).

This is the result when applied as the opacity pin:

Given the hard edge, something is most definitely wrong.

What shading model are you using for SSS?

Seems, not much has changed since:…ed-foliage-bug

So maybe it´s time for a new bug report.

I filed a report with a link to this thread, so if you have more examples pile them on.
the epic team will have an easier time figuring it out.

Because currently the effect comes On suddenly after a certain value is reached, it is impossible to achieve a smooth transition between where the effect is desirable and where it is not.

even on bony people you’d have a hard time getting their wrist to light up that much with just the sun :stuck_out_tongue:

Just for completion, the two videos to show that behaviour:

First one, RTX only, a circular shadow appears out of nowhere and blocks the SSS effect, that becomes obvious at flat angles:

Second, the comparsion between this scene as a NON-RTX scene (everything works as expected/intented), then switch to RTX version, where it bugs:

This workaround also does not really help, since it deactivates every shadow, that those two sided foliage objects should cast onto the gorund or other objects (check the missing shadows of the leaves). So no good :frowning:

Doesn’t quite seem like the same issue. Sub surface scattering is managed on characters by an opacity texture, which is where the issue comes in.
plug a linear gradient into the materials, and see what happens for you.

If it were to work you would get a gradient effect for the scatter.
As you have it, scatter should just be applied to the whole item - which it is even if it doesn’t work right.

Well, in the RTX scene absolutely nothing happened. The gradient (plus an added multiplier with a parameter) gets completely ignored on both the sss and two sided foliage. In the Non-RTX scene, it works as the doc describes, the mask/opacity input is there to regulate the strenght of the subsurface scattering for different regions and it have a clearly visible effect.

Did you ever get a ticket number?

I noticed either the same problem, or a very similar one years ago, following an update that was supposed to improve the quality of SSS rendering. I had a character with horns that were intended to smoothly transition from SSS to no SSS and after the update it was a disaster:

I want to say the last version it looked correct was 4.18, but honestly I can’t remember, it might have been even earlier than that. I was never able to fix it, eventually I just gave up and moved on.

Edit: just for clarity, if I remember correctly when I made this character Transmission was not yet supported so this screenshot is strictly about the SSS.

No ticket number yet.
Would you mind sharing a screenshot of it working?

You shoild be getting a clear “on” “off” line like the image above, and my own - as opposed to a nice smooth transition.

Updated to 4.25.2 just a minute before, well, seems it did not change anything on that topic. See video. I just now have replaced the gradient with a circle texture to make the effect more visible.

Video of RTX and NON-RTX scene:

Used circle texture:


Well, you can clearly see in the video that on 2sided foliage the mask isn’t even considered.
I suppose you could manually work around that by multipying it into the subsurface input.
sub surf color * texture should equal the adjusted texture value.

Why? Because on foliage the opacity is used for the foliage, not to manage the tint of subsurf scattering.

On the skin though, because a profile is in use I do not have the luxury of managing my own color pin that I can use to modify the subsurf by.
the Opacity input is supposed to do that.

it does so, to the extent that you get A result.
it fails to do what it is designed to do, since you get a non gradient effect from using a gradient…

Loaded up the Digital Humans sample to look at it, expecting to see the same problem… well…

It’s using the subsurface profile shading model, the subsurface scattering setup is painfully simple, they’re just combining masks with lerps, using params for the lerp alpha so that they can control the scattering for all the individual areas of the face.

Clearly I am missing something but I don’t know what

Edit: All the values in the SSS are set above 0.1 and there’s practically no detail in them, they’re just big soft blobs. I’m guessing the shading model does some kind of volume approximation for the backscattering so it’s not necessary to mask out areas where you would expect no backscattering to occur.

It appears transmission/backscattering is based almost entirely on the actual thickness of the mesh.

The masks you plug into opacity do have some impact (above 0.1, as noted above), but it is extremely subtle. The effect of the opacity is much more noticeable if you have burley turned on. The only good way I found to control the backscattering intensity is to adjust the color in the subsurface profile asset.

Last post I swear, video comparison of the Opacity input of the above material between Burley and the default separable SSS:

Interesting thing to look into. I just took the profile from the demo project and haven’t even though of adjusting it.
mostly because it works ok, until you figure out it doesn’t work right at all :stuck_out_tongue:

And yes, it does seem that there is some amount of scattering always in play, which makes even less sense if you will.
not every object with subsurf will require scattering based on mesh thickness.

I’ll have to investigate this further.
Thanks for exploring options :slight_smile:

Btw, as far as the digital human goes, their base image for scattering is basically gray, which should mean that it is always enabled across the whole mesh no matter what.

if I could reduce the amount of scatter visible at .1 that would probably suffice for my character display needs.
unfortunately it doesn’t seem like there is a way to lessen the glow - short of manipulating the sub surf color.

Yeah, which doesn’t help me for my problem but I suspect there’s no fixing that. Maybe I could use a dither decal or something to hide the seam idk

The seams are pretty bad. It might be worth a peek at the shader files for subsurf to see if maybe the parameter is multiplied divided or otherwise clamped with a wrong value…
Depends on which you use I suppose. There’s a few USF to look into for sure.