3D Rendering

In the rendering stage, performed by the hardware accelerator, the 3D engine draws the pixels. The bottleneck here is memory access – how fast the pixels read and write to the frame buffer. There are thousands of polygons for each frame of a scene, and these must be updated and transmitted through the memory at least 30 times a second, to give the illusion of movement. This transfer to the frame buffer is known as frame rate and is measured in frames per second (fps). From there, the frames are transmitted to the RAMDAC and converted into an analogue signal for the monitor where, after much mathematical manipulation, the action takes place.

The rendering process involves the use of a number of different 3D techniques:

  • Texture mapping is a technique for adding extra detail to the 3D object. It is best described as wrapping a 2D coloured paper over a 3D object. For instance, given a 3D image of a car on-screen, a texture would be wrapped over it to depict coloured metallic paint. This process is painstaking, as it has to be repeated for every pixel on the object and each pixel of the texture – known as a texel – which lies on top. Many textures can be wrapped over the same object, and this is multitexturing.
  • Mip mapping can be viewed as a cut-down form of texture-mapping in which more texels are created without performing the equivalent number of calculations. If a mip-map is one fourth the size of the original texture, reading a single texel from this mip-map is the same as reading four texels from the original texture. If applied using proper filters, the image quality is actually higher, as it smoothes out jagged edges.
  • Bi-linear filtering reads four texels, calculates their average – that is, the average of their relative positions – colour and so on, and displays the result as a single-screen texel. This results in blurring at close quarters, which in turn reduces an otherwise blocky, pixelated appearance. Bi-linear filtering is now standard on most PC graphics cards.
  • Z-buffering is a method of calculating pixels which have to be loaded into the frame buffer, the memory that stores soon-to-be-displayed data. 3D accelerator chips take one pixel, render it, and proceed to the next one. The problem with this method is that the accelerator has no way of knowing whether the calculated pixel is to be displayed immediately or later. Z-buffering includes a Z value in every calculated pixel. If the Z value for a particular pixel is smaller than another one, it means the pixel with the smaller Z value must be displayed first.
  • Anti-aliasing is a technique to reduce the noise present in an image. To represent any image, a certain amount of information is needed. If the object is in motion, ideally, that information should include its every possible position, colour, size changes etc. But if this information is not available, the CPU often fills in the missing segments with meaningless noise. Anti-aliasing, along with mip mapping, removes this noise.
  • Gouraud shading makes objects appear more solid by applying shadows to the surface of the object. The algorithm determines the colours of adjacent polygons and makes a smooth transition between them. This ensures that there is no sudden change in colour over the object.
  • Bump mapping is an improvement on the more common embossing technique used to give a bumpy look to surfaces. It uses three distinct texture maps to create the illusion of depth on a surface and can be used to create effects such as pockmarked, bullet-riddled walls and rough terrain. However, the industry is yet to arrive at a standard set of procedures to render this visually impressive feature.