GeForce GTX 980 Whitepaper
MAXWELL: ENABLING THE NEXT
FRONTIER IN PC GRAPHICS
21
Hardware Acceleration for VXGI – Multi-Projection and Conservative Raster
One exciting property of VXGI is that it is very scalable—by changing the density of the voxel grid, and
the amount of tracing of that voxel grid that is performed per pixel, it is possible for VXGI to run across a
wide range of hardware, including Kepler GPUs, console hardware, etc. However, for Maxwell it was an
important goal to identify opportunities for significant acceleration of VXGI that would enable us to
demonstrate its full potential and achieve the highest possible level of realism.
As described above, VXGI based lighting has three major phases—the first two are new, accomplishing
the generation of a new voxel data structure, while the third stage is a modification of the existing
lighting phase of real time rendering. Therefore, to enable VXGI as a real-time dynamic lighting
technique, it is important that the new work—the creation of the voxel data structure—is as fast as
possible, as this is the part of VXGI that is new work for the renderer. Fast voxelization ensures that
changes in lighting or the position of objects in the scene can be reflected immediately in the lighting
calculation.
With this in mind, it was a top priority for Maxwell to implement hardware acceleration for this stage.
One important observation is that the voxelization stage is challenged by the need to analyze the same
scene geometry from many views—each face of the voxel cube—to determine coverage and lighting.
We call this property of rendering the same scene from multiple views “multi-projection.” It turns out
that multi-projection is a property of other important rendering algorithms as well. For example, cube
maps (used commonly for assisting with modelling of reflections) require rendering to six faces. And as
will be discussed in more depth later, shadow maps can also be rendered at multiple resolutions.
Therefore, acceleration of multi-projection is a broadly useful capability. Today, multi-projection can be
implemented either by explicitly sending geometry to the hardware multiple times, or by expanding
geometry in the geometry shader; however, neither approach is particularly efficient. The specific
capability that we added to speed up multi-projection is called “
Viewport Multicast
.” With this feature,
Maxwell can use dedicated hardware to automatically broadcast input geometry to any number of
desired render targets, avoiding geometry shader overhead. In addition, we added some hardware
support for certain kinds of per viewport processing that are important to this application.
“
Conservative Raster
” is the second feature in Maxwell that accelerates the voxelization process. As
illustrated in the following
Figure 11
, conservative raster is an alternate algorithm for triangle
rasterization. In traditional rasterization, a triangle covers a pixel if it covers a specific sample point
within that pixel, for example, the pixel center in the following picture. Therefore with traditional
rasterization, the four purple pixels would be considered “covered” by the triangle.
With conservative rasterization rules on the other hand, a pixel is considered covered if
any
part of the
pixel is covered by any part of the triangle. In the following picture, the seven orange pixels are also
“covered” by conservative rasterization rules.