Next comes texturing of the
polygons to add surface color and characteristics. In this stage the triangles
are converted to pixels so they can be understood by the rendering unit. The
polygons are fed to the rendering pipelines, and depending on the number of
texture per pixel and the number of pipelines of the hardware, a certain
quantity of these pixels can be rendered per cycle. Every triangle sent by the
geometry engine will be rendered and that includes polygons that are going be
covered by nearer polygons. Now comes the time to decide which pixel is going to
be covered by those pixel closest to the observer, to determine which which
pixels should be displayed. This is where the process gets crude. The
z-coordinate of the rendered pixels are set into the z-buffer which is the unit
responsible for storing the depth of the pixels. The z-buffer needs to be
accessed for every pixel to determine if it will be the closest pixel to the
viewer, or if it has to be blended with another aligned pixel (used for
transparencies). If a new pixel turns out to have a closer z-value than the
previous stored pixel in the z-buffer it is rejected or if there is already
another pixel that has the closer z-value, that pixel will be rejected and the
previous is stored.
 |
|
Traditional hidden surface
removal. Hidden surfaces are actually rendered. |
So you may have guessed by now
that all these extra accesses to the z-buffer can be quite uneconomical. The
fact of the matter is that it's the main source of a lot of unnecessarily lost
rendering power in even today's most powerful video cards. This redundant read
and write the z-buffer is known as overdraw and it can be quite straining on the
memory bandwidth. In a nut shell, there are two main disadvantages for this
"immediate mode rendering" style: firstly being the rendering of hidden surfaces
and secondly the clogging of the memory bandwidth due to accesses to the
z-buffer. In today's video card market,
having the highest pixel pushing graphics chip doesn't mean jack unless coupled
with a sufficient memory bandwidth. There is a limit to how much we can push DDR
SDRAM, and as we saw in this generation of video cards, DDR certainly isn't a
viable solution for the next generation of video cards. Even at the moment the
memory bandwidth of the fastest video cards on the market such as the Geforce2
are barely able handling half of the chip's fillrate. So now we are reaching the
point that using brute force will not go a long way. It's unavoidable for video
card companies to start using smarter technology implementations and a more
economical approach.