temporal aa flickering

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

stair flickering but clearly

[sharedmedia=gallery:images:7841]
stair smooth but blurry
[sharedmedia=gallery:images:7842]
hehe.
Advertisement

i just play the inside, i found it also have the problem of flickering.

[sharedmedia=gallery:images:7844]

look at the lamp, left is dark, right is dark, and center is a narrow vertical bright beam, all this situation will flickering.

hehe.

Yep, it's impossible to completely avoid flickering with only one accumulating buffer.

You could only avoid the flicker if you store a history of 4 frames (one for each of 4 subixel centers). But memory and bandwidth cost are high - i guess hardware multisampling is faster at that point.

Your images look good. Looking at the fence of the blurry version that's what i would expect from an antialiased image and it's still sharper than a real life non-post-processed photo.

The jittered image is sharper but looks like 'only' 4 x super sampling - still artificial aliasing - i prefer the blurry one.

The only thing i would complain is that AA does not seem to work well for tree leaves, making them look noisy and too crisp.

I think it's mainly a matter of tweaking and discussion with the art team.

(They have to realize AA == smoother so less sharper - that's just natural. If you want more details, you need more screen resolution)

Your idea of using sharpening would be the right direction, but sharpening does not work well for such nature scenes.

Grass and leaves - that's high frequency details where sharpening usually has a too strong effect so just amplifying noise.

You could experiment with an additional buffer of artist defined values to control sharpening, if you think it may be worth the affort.

Yep, it's impossible to completely avoid flickering with only one accumulating buffer.

You could only avoid the flicker if you store a history of 4 frames (one for each of 4 subixel centers). But memory and bandwidth cost are high - i guess hardware multisampling is faster at that point.

Your images look good. Looking at the fence of the blurry version that's what i would expect from an antialiased image and it's still sharper than a real life non-post-processed photo.

The jittered image is sharper but looks like 'only' 4 x super sampling - still artificial aliasing - i prefer the blurry one.

The only thing i would complain is that AA does not seem to work well for tree leaves, making them look noisy and too crisp.

I think it's mainly a matter of tweaking and discussion with the art team.

(They have to realize AA == smoother so less sharper - that's just natural. If you want more details, you need more screen resolution)

Your idea of using sharpening would be the right direction, but sharpening does not work well for such nature scenes.

Grass and leaves - that's high frequency details where sharpening usually has a too strong effect so just amplifying noise.

You could experiment with an additional buffer of artist defined values to control sharpening, if you think it may be worth the affort.

thanks.

yet, the tree is sharpening too much, now we have a stencil that can tell which pixel is tree,

so it's convenient to control the tree sharpen radius, i will try it.

hehe.

Common TAA still have problems with sub-pixel features that repeatedly pop in and out over time, particularly things like thin triangles.The core of most TAA algorithms is the neighborhood analysis, but the analysis only works on features that were present for the current frame. If something is popping in and out, the neighborhood will also change from frame-to-frame. It's for this reason that I like to combine TAA with MSAA: the higher geometry sampling rate of MSAA helps to keep smaller features present in the frame buffer. As JoeJ mentioned you can also try to analyze previous frames to get the data that you're missing, which is an approach that was described by Jorge Jimenez in his recent SIGGRAPH presentation. However using previous frames for this depends on having that data (obviously), and also relies on reprojection. This means that if your velocity buffer is not accurate for whatever reason (transparents, unaccounted surface movement) then you won't get the data that you need.

Common TAA still have problems with sub-pixel features that repeatedly pop in and out over time, particularly things like thin triangles.The core of most TAA algorithms is the neighborhood analysis, but the analysis only works on features that were present for the current frame. If something is popping in and out, the neighborhood will also change from frame-to-frame. It's for this reason that I like to combine TAA with MSAA: the higher geometry sampling rate of MSAA helps to keep smaller features present in the frame buffer. As JoeJ mentioned you can also try to analyze previous frames to get the data that you're missing, which is an approach that was described by Jorge Jimenez in his recent SIGGRAPH presentation. However using previous frames for this depends on having that data (obviously), and also relies on reprojection. This means that if your velocity buffer is not accurate for whatever reason (transparents, unaccounted surface movement) then you won't get the data that you need.

thanks.

for some reason, i can't use msaa.

i will try jorge jimenez's method.

i found another problem, for transparent object, i don't use temporal aa.

when draw transparent object, i don't jitter the camera, but the depth buffer is come from the opaque pass which the camera was jittered.

so the transparent object will flickering.

how to solve this problem?

must apply temporal aa to all object?

hehe.

I'm afraid you would have to render all you scene objects (including transparent) with jittering, otherwise you could suffer from z-fighting (e.g. for decals) and/or flickering when resolving TAA.

Some of my previous work on my personal webpage

I'm afraid you would have to render all you scene objects (including transparent) with jittering, otherwise you could suffer from z-fighting (e.g. for decals) and/or flickering when resolving TAA.

but how to calculate and store velocity? transparent object have multi layer.

hehe.

i want calculate and write the unjittered depth to a render target at the g-buffer pass.

and use this unjittered depth buffer as the tranparent object's depth buffer.

has some method to calculate the unjittered depth?

thanks.

hehe.

i solve the problem.

after taa, get the min depth of current frame and last frame, write to new depth buffer, use this new depth buffer for transparent object depth test.

transparent object don't flickering now.

hehe.

This topic is closed to new replies.

Advertisement