Page MenuHome

EEVEE Subsurface Color Bleed
Closed, ArchivedPublicKNOWN ISSUE

Description

System Information
Operating system: windows 10
Graphics card: rx 6800

Blender Version
Broken: 2.93
Worked: never
Short description of error

color bleeds from objects that have no SSS to objects that have SSS if they are in close proximity. For practical example clothes on skin. One way to mitigate it is to enable very low SSS value on clothes like 0.001, if your object can tolerate it then there will be no visible difference but the issue will be fixed.

Exact steps for others to reproduce the error
Based on the default startup or an attached .blend file (as simple as possible).

Open file and look. Try doing the low SSS value on object sitting on top of suzannen.


Event Timeline

Clément Foucault (fclem) closed this task as Archived.Mar 8 2021, 7:35 PM

This is a limitation of the technique.

One way to improve that would be to tag the pixels that are not SSS to be excluded from the convolution. But this would require another texture fetch and make the algorithm more heavy.

Clément Foucault (fclem) changed the subtype of this task from "Report" to "Known Issue".Mar 8 2021, 7:35 PM

This is a limitation of the technique.

One way to improve that would be to tag the pixels that are not SSS to be excluded from the convolution. But this would require another texture fetch and make the algorithm more heavy.

Well its a pretty nasty issue from artist standpoint, you cant correctly render clothes on a human without including clothes into sss processing(i am not sure if this is a good fix but works for now) the issue is very noticeable and jarring. It makes sense to pay the performance price in order to have correct results. Unless there is a plan to fix this somewhere down the line without said texture fetch/performance penalty then i think penalty is justifiable. How much of a slow down would there be?

I have plans for this. I think the algorithm with bleed prevention might be ~15-20% slower based on a wild guess.

@Mikhail Matrosov (ktdfly) brought to my attention that this behavior is actually exactly the same as cycles. The bug is that enabling the SSS on the other surface leaks light into the first one. This would also be fixed by using an object id texture to mask radiance for each surface.

this sadly is one of eevee's major flaws we still have to deal with, now that motion blur and dof are implimented/improved. Its a real headache in every scene with characters.
@Clément Foucault (fclem) I recently stumbled upon a video of another realtime engine which handles this issue with a "depth falloff" setting it looks like.
here is the said video with timestamp: https://youtu.be/52PjM1hIHIw?t=89

@Mikhail Matrosov (ktdfly) brought to my attention that this behavior is actually exactly the same as cycles. The bug is that enabling the SSS on the other surface leaks light into the first one. This would also be fixed by using an object id texture to mask radiance for each surface.

Well i didnt notice the issue in cycles and i am not sure what you mean by enabling SSS on other surface leaks into the first one, in my example the object that sits on top of suzane is not exactly leaking anything it is just distorting the SSS on suzane and it happens only if object doesnt have sss itself. Also, if id texture method is going to be as precise as cryptomattes then complex alpha hashed materials such as multi layered hair objects, will still cause problems because they are hard to get masked properly with all the noise and stuff that comes with alpha hashed materials.