Maniphest T56567

Ambient Occlusion: Add thickness heuristic
Confirmed, NormalTO DO

Assigned To
None
Authored By
Clément Foucault (fclem)
Aug 27 2018, 11:34 AM
Tags
  • EEVEE & Viewport
Subscribers
Adam Janz (Copperplate)
Clément Foucault (fclem)
David Johnson (dlfon99)
Marcin Twarowski (Tvaroog)
Mindinsomnia (mindinsomnia)
Tokens
"Love" token, awarded by mindinsomnia."Love" token, awarded by Blendork."Love" token, awarded by Firepal64."Love" token, awarded by wo262.

Description

Add thickness heuristic to reduce the AO from very thin objects as described in "Practical Realtime Strategies for Accurate Indirect Occlusion"

Event Timeline

Clément Foucault (fclem) lowered the priority of this task from 90 to Normal.Aug 27 2018, 11:34 AM
Clément Foucault (fclem) created this task.
Marcin Twarowski (Tvaroog) added a subscriber: Marcin Twarowski (Tvaroog).Jan 24 2019, 2:23 PM

Hi. I recently reported that thin objects cause AO flickering: T60522. I guess it's related?

Wo!262 (wo262) awarded a token.Jan 24 2019, 2:25 PM
Adam Janz (Copperplate) added a subscriber: Adam Janz (Copperplate).Aug 26 2019, 11:43 PM

Yes, I was experiencing this same issue. Thanks for posting the videos, Marcin; that clearly shows the AO pulsing I was having. I assume the only workaround at present is to reduce the AO distance?

Adam Janz (Copperplate) added a comment.Aug 27 2019, 12:01 AM

@Clément Foucault (fclem) Clément, would adding the ability to bake the AO for static (non-animated) objects as part of the Bake Indirect Lighting feature be a possible way to solve the flickering during animation, even without needing a thickness heuristic? I reduced the AO distance much further than what it should be for my architectural fly-through animation, and the AO still flickers badly. Merci de votre aide...

Marcin Twarowski (Tvaroog) added a comment.Aug 27 2019, 9:30 AM

@Adam Janz (Copperplate) AO we're talking about here is a screen space effect so I don't think you can bake it.

Adam Janz (Copperplate) added a comment.Aug 27 2019, 3:41 PM

I see; thanks Marcin. I'm going to investigate if there's any kind of workaround for this flickering issue while we wait for a fix to be implemented.

Adam Janz (Copperplate) added a comment.Aug 27 2019, 9:03 PM

I haven't found a workaround yet. I tried making a larger proxy object with a transparent material to sit over top of the smaller object to hopefully fix the AO flickering on thin objects. Unfortunately, it did not help at all. This issue makes EEVEE unusable for animation... I'm considering moving this project to Unreal Engine, unless someone has any ideas on how to fix this.

Adam Janz (Copperplate) added a comment.Aug 28 2019, 9:16 PM

Victory!!! Regarding fixing the AO flickering, I thank God for showing me two solutions:

Option 1. If you want to maintain the thickness of the current object, then you'll need to break out that object into its own Scene Layer which has AO bypassed. Use the new holdout material in EEVEE applied to copies of any objects that should cover, shade, or otherwise interact with the target object. Plug the renderlayer for this separate scene into it's own composite output node, and do the same for your main layer. Then composite BOTH Scene Layers together in a 3rd Scene Layer using an Alpha Over node. Set your desired frame range and color management settings from this 3rd layer and hit render. :-)

Option 2. If you're okay with it, just make your object thicker. From my observation, I believe this pulsing AO is directly related to any objects that are so thin, their anti-aliased presence on screen bleeds over about 3 pixels, meaning you only have 1 pixel thickness of solid colour. During animation, that thin line of pixels creates aliasing artifacts (viewable as a shimmer) which causes the AO to also shimmer badly. Making the object thicker so its bleed covers about 5 pixels, with 3 pixel thickness of solid colour, fixes the aliasing issue, and thus fixes the pulsing ambient occlusion. :-)

Super excited that there is a workaround for this!!

I hope this helps. :-)

-Adam

Firepal64 awarded a token.Dec 11 2019, 11:25 PM
Krusty Krustowski (Blendork) awarded a token.Dec 12 2019, 7:50 PM
Clément Foucault (fclem) edited projects, added EEVEE & Viewport; removed Eevee.Jun 19 2020, 10:30 PM
Clément Foucault (fclem) moved this task from Backlog to EEVEE Features on the EEVEE & Viewport board.Jun 22 2020, 1:19 PM
Mindinsomnia (mindinsomnia) awarded a token.Jun 22 2020, 6:53 PM
Mindinsomnia (mindinsomnia) added a subscriber: Mindinsomnia (mindinsomnia).Oct 27 2020, 2:21 AM

Could the code from this thickness heuristic for AO be reused for screen space reflections? As they too often suffer from similar problems and could benefit from a feature like this.

David Johnson (dlfon99) added a subscriber: David Johnson (dlfon99).Jul 24 2021, 2:42 AM