Comment by fngjdflmdflg
1 day ago
I have always heard that MSAA doesn't work well with deferred rendering which is why it is not longer used[0] which is a shame. Unreal TAA can be good in certain cases but breaks down if both the character and background are in motion, at least from my testing. I wish there was a way to remove certain objects from TAA. I assume this could be done by rendering the frame both with the object and without it there but that seems wasteful. Rendering at a higher resolution seems like a good idea only when you already have a high end card.
[0] eg https://docs.nvidia.com/gameworks/content/gameworkslibrary/g...
MSAA doesn't do anything for shader aliasing, it only handles triangle aliasing, and modern renderers have plenty of shader aliasing so there isn't much reason to use MSAA.
The high triangle count of modern renders might in some cases cause the MSAA to become closer to SSAA in terms of cost and memory usage, all for a rather small AA count relative to a temporal method.
Temporal AA can handle everything, and is relatively cheap, so it has replaced all the other approaches. I haven't used Unreal TAA, does Unreal not support the various vendor AI driven TAA's?
Pretty much every temporal AA i've seen looks like a smeary mess though.
MSAA by default handles aliasing at triangle edges, however at least in OpenGL and Vulkan (i couldn't find anything relevant in D3D11 last time i checked and D3D12 did have something that could be relevant, but i'm not sure) you can set the minimum amount of samples so you could also get some antialiasing in polygon interiors. Of course this is heavier (though still cheaper than SSAA) but IMO produces a better image than TAA.
Unreal has plugins to support other AA including DLSS and FSR (which can both be used just for AA IIRC). I tried FSR and it didn't work as well as the default TAA for certain cases, but I'm pretty sure I just had some flickering issue in my project that I was trying to use TAA to solve as a band aid so maybe not a great example of which AA methods are good. I'm not an expert and only use Unreal in my spare time.
>Temporal AA can handle everything
With the tradeoff of producing a blurry mess.
Sometimes TAA artifacts are so distracting that I end up disabling AA altogether and consider it an improvement.
> I have always heard that MSAA doesn't work well with deferred rendering which is why it is not longer used which is a shame.
It works fine, but it needs more work. AFAICT (this is the first time i see it) the page you linked does implement MSAA with deferred rendering. Personally i implemented MSAA with deferred rendering in an engine[0] i was writing ~12 years ago.
Nowadays in my current engine[1] i use Forward+-ish since i can just tell OpenGL "give me MSAA" and it just works :-P.
[0] https://www.youtube.com/watch?v=15dGcvN7mEA
[1] https://i.imgur.com/fypn318.jpg
>I have always heard that MSAA doesn't work well with deferred rendering which is why it is not longer used
Yes, but is deferred still go-to method? I think MSAA is good reason to go with "forward+" methods.
Even when using forward+ style rendering it's still common for certain effects to get handed off to deferred passes, which precludes easily supporting MSAA anyway. For example the recent Doom and Call of Duty games use that hybrid approach, so you won't find MSAA support in them despite their use of forward shading.
It's very rare for games to be 100% forward nowadays, outside of ones specifically built for VR or mobile.
From what I have heard, forward is still used for games that are developed especially for VR. Unreal docs:
>there are some trade-offs in using the Deferred Renderer that might not be right for all VR experiences. Forward Rendering provides a faster baseline, with faster rendering passes, which may lead to better performance on VR platforms. Not only is Forward Rendering faster, it also provides better anti-aliasing options than the Deferred Renderer, which may lead to better visuals[0]
This page is fairly old now, so I don't know if this is still the case. I think many competitive FPS titles use forward.
>"forward+" methods.
Can you expound on this?
[0] https://dev.epicgames.com/documentation/en-us/unreal-engine/...
Can you expound on this?
"forward+" term was used by paper introducing tile-based light culling in compute shader, compared to the classic way of just looping over every possible light in the scene.