Lecture 2 : Parallelizing Graphics Pipeline Execution
Download as PDF

kayvonf

This is a histogram of triangle size taken from frames in several top games (data courtesy of NVIDIA circa 2010). Notice that while there are a good number of small triangles, the largest bin is the bin for very large triangles Nearly 30% of the triangles in the scene are over 100 pixels in area. Therefore, most fragments are generated from large triangles. (Since the triangles are large, although only 30% of the total triangle count, these triangles are responsible for well over 30% of the total fragments).

Increasing use of tessellation support in modern pipelines is beginning to drive average triangle area down. This is particularly true for characters, which tend to be allotted the most geometric detail. (Note that higher pixel resolutions drive triangle area back up.)

kayvonf

While artists can do a pretty good job using texture to hide low geometric detail, art tricks are foiled near silhouette edges and in global illumination settings that can't be baked (such as the shadow falling on the soccer player's right leg).

kayvonf

The graphics workload has the interesting property that pipeline stages amplify the input scene representation into a large amount of intermediate data (e.g., tessellated triangles, fragments) and then reduce the intermediate results into a final image. Managing the large amount of immediate data (e.g., scheduling the pipeline to keep all intermediate on chip while maintaining good parallel work distribution) is a key challenge.

kayvonf

Consider a long, skinny triangle. The interleaving pattern above achieves a better workload distribution when such triangles are horizontally or vertically orientated than if they are oriented diagonally. This is reasonable, as common cases such as ground plane geometry and walls are likely to be oriented horizontally or vertically.