|
Resolve Your Resolves
[In this in-depth technical article, Gruen & Story examine anti-aliasing in games, explaining how you can reduce 'jaggies' in your PC title, and save frame-rate, by using significantly less post-processing passes.]
Over the last few years it has become
commonplace for PC games to make use of Multi-Sample Anti-Aliasing (MSAA)
to achieve higher quality rendering.
MSAA is a very effective and efficient
method for reducing the unsightly "jaggies" that result from
the triangle rasterization process. At the same time most game engines
also employ post-processing techniques such as depth-of-field, motion
blur, color correction and refraction.
Post-processing has become increasingly
popular, as it provides a way to carry out complex computations, but
only pay the cost for visible pixels. It is not unheard of for an engine
to contain up to 20 passes, and these techniques usually require a copy
of the main render target as a texture input.
If the engine is making use of MSAA,
then the render target will need to be resolved before it can be used
in the next pass. This is accomplished through calls to IDirect3DDevice9::StretchRect
or ID3D10Device::ResolveSubresource, depending on which version
of D3D is being used.
As modern game engines tend to apply multiple
post-processing techniques, it is easy to understand how the application
could trigger a loop of resolves (Figure 1).
It is critically important to understand
that a resolve is not a free operation, and that performing multiple
resolves per frame can have a very serious impact on performance. This
statement is true for all graphics hardware.
To take a real world example,
the developers of a recently released PC title managed to reduce their
resolve count from a staggering 22 to just 12. This generated a saving
of around 12 ms per frame, at a resolution of 1280x1024@4xAA.
The goal of this article is to describe
how to minimize the resolve count in the rendering pipeline without
compromising the quality of post-processing effects or deferred shading
techniques.
The resolves that should be removed fall into two categories,
redundant resolves and harmful resolves, and these will be described
in detail later in this article. But first let's consider the resolves
that are necessary for good image quality.
|
Comments
Login to Comment