temporal aa flickering

Started by
18 comments, last by ChenA 7 years, 5 months ago

recently i implement a temporal aa, everything is ok, but the stair is flickering when camera is static.

i don't find any material about anti-flickering solution, except the ue4 taa paper <<High Quality Temporal Supersampling>>.

but it don't contain the detail implemention.

i find in ue4 shader code, i found it pass a low-pass filtered color to the neighbor aabb clip function.

and it seems in default ue4 don't do the low-pass filter, the low-pass filtered color just = current color.

anybody have some solution to solve the noisy flickering?

thanks.

hehe.
Advertisement

Haven't even gotten time to read it yet, but: http://www.j4lley.com/content/publications/pdf/pg2016-phlm.pdf

That being said it shouldn't be flickering under a static camera, unless there's dramatic lighting changes going on. Some more information, such as what you've got so far, would be helpful.

Haven't even gotten time to read it yet, but: http://www.j4lley.com/content/publications/pdf/pg2016-phlm.pdf

That being said it shouldn't be flickering under a static camera, unless there's dramatic lighting changes going on. Some more information, such as what you've got so far, would be helpful.

thanks for your reply, i will read it.

for my situation, lighting is not change.

under a static camera, taa will jitter the camera, the stair edge normal will change dramatical, that is where the flickering come from.

hehe.

PHLM is not suitable for game, it use 7ms, ue4-taa use 0.4ms.

and it produce more jagged pixel than ue4-taa, ghosting is less than ue4.

hehe.

Yeah it turns out that paper's a bit theoretical at the moment. But are you missing an exponential history buffer? You're supposed to accumulate over time, blending previous frame(s) with the current one according to some exponential function. It sounds like you're just jittering camera position without blending from previous frames?

Yeah it turns out that paper's a bit theoretical at the moment. But are you missing an exponential history buffer? You're supposed to accumulate over time, blending previous frame(s) with the current one according to some exponential function. It sounds like you're just jittering camera position without blending from previous frames?

i blending from previous frames, if want the stairs don't flicker, the current frame blend factor must be 0.01, but when use 0.01, the whole image is too blur.

i add a sharp filter pass, but it is still too blur.

i know should calculate different blend factor for every pixel.

i try some algorithm, but don't work.

how did you calculate the blend factor?

thanks.

hehe.

I think you could build some information from neighbouring pixels, store and filter this information as well to have something to compare for the next frame.

E.g. if you use a bounding box from neighbour pixel world space positions, this box would become large for flickering edge pixels - large enough so the actual frames pixel fits in no matter if it's infront or behind a flickering edge. So you could calculate a small blend factor to hide flickering.

If a dynamic object crosses the screen, bounding box test fails -> large blend factor -> no ghosting.

Is that the general idea of TAA? (I'm no expert here)

So, instead bounding box in corld space you could also try:

Bounding box in color space

Normal cone

Bounding rect of 2D screen velocity (sounds like the best idea to me?)

However, i guess you can get good AA with little ghosting from something like that, but increasing sharpness is another question.

Personally i think realtime graphics are mostly too sharp and i really like UE4 TAA - it's blurry, but look at real camarea footage - blurry too.

I think you could build some information from neighbouring pixels, store and filter this information as well to have something to compare for the next frame.

E.g. if you use a bounding box from neighbour pixel world space positions, this box would become large for flickering edge pixels - large enough so the actual frames pixel fits in no matter if it's infront or behind a flickering edge. So you could calculate a small blend factor to hide flickering.

If a dynamic object crosses the screen, bounding box test fails -> large blend factor -> no ghosting.

Is that the general idea of TAA? (I'm no expert here)

So, instead bounding box in corld space you could also try:

Bounding box in color space

Normal cone

Bounding rect of 2D screen velocity (sounds like the best idea to me?)

However, i guess you can get good AA with little ghosting from something like that, but increasing sharpness is another question.

Personally i think realtime graphics are mostly too sharp and i really like UE4 TAA - it's blurry, but look at real camarea footage - blurry too.

thanks for your reply.

normally, taa use color space aabb clamp.

yet, we can calculate a small blend factor for flickering pixel if the history pixel is near clamp, as i said before, if can't perceived the flickering,

this blend factor must be very small, 0.01.

but the other pixel's blend factor also decrease, lead to the blurry.

ue4 blurry is acceptable, but if use 0.01 as blend factor, it's too blurry.

hehe.

You should post a screenshoot - maybe we can spot something obvious like the jitter range being too wide.

Most TAA implementations flicker at edges (UE4 does). I was impressed by TAA from game Inside - no flicker but quite blurry.

Did you try to add some randomness to the jitter to make the flickering less regular?

You should post a screenshoot - maybe we can spot something obvious like the jitter range being too wide.

Most TAA implementations flicker at edges (UE4 does). I was impressed by TAA from game Inside - no flicker but quite blurry.

Did you try to add some randomness to the jitter to make the flickering less regular?

i will post some screenshoot lately.

i check out the inside's shader code, https://github.com/playdeadgames/temporal.

it don't have especial code to reduce flickering.

i use the blend factor calculate method which the inside use, don't work for me.

add some randomness, yeah, i will try it.

thanks.

hehe.

This topic is closed to new replies.

Advertisement