SSS shader issue/feature?

Hi, I’ve noticed an effect that’s occurring with sss shader, that looks strange to me, but I’m not sure if it’s a bug or a simple behaviour of the sss shader.

Even if i have no secondary bounces (only direct light), It looks like the light it’s being scattered outside the surface of an object. If another part of the same object is within the scatter radius it gets hit by the sss rays, being lit, just like there was one diffuse bounce, but for sss rays.
The same effect doesn’t occur between two separated objects with the same sss shader.

This occurs also with the object is made by one single continous mesh, for example a character’s lips that are two pieces of the same surface very close to each other.

I may be wrong but I believe that this effect somehow duplicates the effect of global illumination, giving unwanted results (overlit by bounce/scattered light) and I wonder if there is a way to prevent that.

Or Am I doing anything wrong?

I hope the pictures will help to understand (sorry for my bad english!)

Attachments



When light hits a material with an SSS component, the light gets diffused through the object and out again toward the camera.

This is expected behavior, you’ll see this in all render engines that support it.

Ok, I suspected that, but there is no scatter between different objects, only different parts of the same object.

I see what you mean now, this is probably a limitation with Cycles itself due to the engine not supporting any kind of SSS groups.

Though it usually is a problem when objects are overlapping, I’m not entirely sure if this might actually be a bug?

Yes, I think that’s part of the problem, i believe arnold render has some kind of sss groups.
I may be wrong but i think that scattering outside the surface, even in the same objects, should be considered a secondary bounce of the sss shader, and the rays leaving the volume once and hitting a surface again should be blocked if the number of bounces is zero, don’t you agree?


I can see that (maybe) there is too much color bleed due to sss between the lips and near the eyelids in this render, I’m not sure but it seems unnatural to me (look at upper lip in the region where the lips touch):


RBancone, I think you are right. The light that is scattered and leaves a SSS Object should be treated as a separate bounce. You’ve made a very good observation, since the effect is very subtle in your example.

But to my knowledge Direct Light in Cycles is just a matter of the configured bounces. And when the number of bounces for a specific type is set to 0 this does mean “unlimited” and is then handled by the settings for max and min bounces. So there can be more than 0 bounces.

Does it behave the same way if the number of bounces is set to 1? The next question would be, what type of bounce Cycles uses for this scattered ray.

Minoribus, thanks for answering.
In the first tests the bounces are 0, for every light path type and global min and max are 0 so, as far as I know, the number of bounces are fixed to zero, therefore there is only direct light involved with no bounces.
In the character render instead, I’m sure that they are at least 1 or 2 indirect bounces (I don’t remember exactly) and the effect still occurs as you can see around the lips area.

I believe that the rays used are the primary (direct visibility rays) of the sss.

I tried to reproduce that. Here you see my test setup. Only the left sphere has an SSS node in its material. When I set everything to 0, then I can’t see any yellow color bleeding on the next sphere. Only after I set diffuse and global to a value greater than zero I see this effect happen. Increasing the bounces for glossy and transmission had no effect in this case - because these shaders haven’t been involved.


I was wrong, by the way. Setting diffuse to zero and global max bounces to 4 does not show this effect. Did I do something wrong or is that close to your test setup?

Hi minoribus, thanks for your time.

Yout setup is different, infact, in my early tests, as you can see from the picture, the effect occurs only on surfaces of the same object (for example, the character’s lips) and everything seem to work fine with separate objects.

About the bounces, when you set diffuse bounces to 0, it actually means 0 diffuse bounces, and not infinite bounces bounded by the min max global parameters. By the way I’m not sure if the sss rays are considered diffuse, transmission or have their own light path… I wish some cycles developer could read this!