• Advertisement
Sign in to follow this  

Temporal AA

This topic is 887 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

There is any good source code or paper about temporal AA ?

FXAA is nice but temporal aliasing is a real problem.

Also FXAA doesn't works for lines or thin objects.

Thanks

Share this post


Link to post
Share on other sites
Advertisement

temporal AA is basically the same as interlaced video. you shift the pixel center every pixel a little bit and combine several frames into one. if the motion is too strong from the last frame, you just take the current pixel (in combination with motion blur that's far less noticeable). otherwise you combine the subsamples of several frames to one color.

 

there is no perfect solution to detect whether samples of several frames really match. you can try to use depth and re-project the pixel to the current frame, but that will break with transparent objects. you can try to embed some triangle/object id to find matches. you can try to browse old papers about de-interlacing (nvidia's GPU based de-interlacer, for movies, is actually really nice).

Share this post


Link to post
Share on other sites

This video shows exactly the temporal aliasing problem :

Artifacts completely break the immersion of the player.

Edited by Alundra

Share this post


Link to post
Share on other sites

In unreal engine 4 temporal AA defaults to on, I turned it off and set it back to FXAA because it had issues where it blurred text above enemies heads, and it has ghosting artifacts as shown in the video above that break immersion. If you're going to use it, have some way to toggle it on a per object setting, but be aware this might be hard because these techniques are usually done during post processing in a pixel shader...

Share this post


Link to post
Share on other sites

Long time ago I read HRAA could be there with D3D12 and Vulkan because of their low level API, maybe the mix of techniques can solve issues.

Share this post


Link to post
Share on other sites

Long time ago I read HRAA could be there with D3D12 and Vulkan because of their low level API, maybe the mix of techniques can solve issues.


HRAA relied on two things that are not available across all GPU's: decoupled coverage and color samples for MSAA, and programmable MSAA sample points. The first one is called 'EQAA' on AMD hardware and 'CSAA' on Nvidia hardware, but unfortunately you can't get low-level access to either of them with PC API's. Nvidia also removed CSAA from their most recent line of GPU's based on Maxwell 2.0. The second part, programmable MSAA sample points, is accessible on certain hardware through vendor extensions. Unfortunately there are currently no vendor extensions for DX12, and it's not part of its supported feature set. As far as Vulkan, there's no public spec yet so I have no idea what it supports.

Share this post


Link to post
Share on other sites

In unreal engine 4 temporal AA defaults to on, I turned it off and set it back to FXAA because it had issues where it blurred text above enemies heads, and it has ghosting artifacts as shown in the video above that break immersion. If you're going to use it, have some way to toggle it on a per object setting, but be aware this might be hard because these techniques are usually done during post processing in a pixel shader...

 

Aye, good temporal reprojection, combined with gamma correction and etc. are highly recommended. Otherwise you just blur all the details in your scene and get bad ghosting. The good news is Temporal AA can be used for any number of things, rather than just edge AA. With good reprojection and relatively close frame coherency you can use essentially the same code to temporally supersample for SSAO, SSRR, specular aliasing, and probably other things I can't think of.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement