Step by Step
The goal of this text is
to give you some idea of how a 3D Card works. The 3D Image that
appears on your screen in calculated using some mathematical formulas.
To give a fluent appearance the card must do all these calculations 25
times per second. With that speed your eye can not see the difference between
frames anymore. Calculating more frames per second is possible and might
give you the idea that it looks better but the difference is minimal. These
calculations are performed using the 3D-Pipeline. Like all pipelines
it will do certain operations on data in various steps, when one step is
finished the data is send to the next part of the pipeline where the second
calculation is done on the same data. We will describe all the steps in
the pipeline.
Step 1
The software program using a certain API will provide
the 3D-world using points. This is the Basic input for the 3D-Pipeline.
Step 2
The provided points are now grouped as triangles
(or Infinite Planes for PowerVR) this process is called Tessellation
or Triangularisation. Each triangle (or inf. plane) needs 3 points
to be defined. These points have x,y and z-coordinates (horizontal, vertikal
and depth values). Since only 3 points are needed to define these basic
building blocks the calculations for the main processor are reduced. It
is obvious that there is more information available concerning the colors,
alpha-value (transparency), etc...
Step 3
In this step the objects are rotated and moved if
necessary and new values are calculated that describe the 3D world from
the viewpoint of the camera (your monitor viewpoint, above the car, etc...).
This is called the Geometric Transformation and is usually done
by the main processor.
Step 4
At this stage the 3D Accelerator kicks in. Now the
numbers that are calculated by the main processor are transformed into
realistic 3D scenes on your computer monitor. At this stage the extra information
like shading, filtering, texture mapping,... is used.
In this step everything that is not visible on your
monitor screen is removed. You should see this zone as a pyramid that stretches
out in front of you, after all you are also unable to see what is happening
behind you, the computer however has defined some of those objects and
determines now what is in your visible area. It should be pretty obvious
that this has the form of a piramid, you can see this by moving your hand
more and more to the side without moving your head, at some point your
hand will become invisible ,it is still there but it is no longer part
of your visible area. Clipping means that these polygons are removed, they
will not move through the rest of the 3D-Pipeline.
-
Texture Mapping and Perspective correction
At this stage the points (corners) of the polygon
will be used to form the actual polygon. All points that are part of the
polygon (usually about 100 to form 1 triangle) will be rendered. This means
that you will be determining their color based on the texture maps, while
applying some form of filtering. The perspective is corrected and anti-aliasing
is added to remove other imperfections. Explaining how all this works would
be to complex and mathematical.
Until now the light sources were not used in the
calculations. There are different algorithms to determine the influence
of light. First one is Flat-Shading every polygon gets a certain
light value based on the distance of the polygon from the light source.
This method gives poor results but requires very little calculation power.
A second technique is known under the name Gouraud-Shading (similar
technique is used by PowerVR, however they can not officially call it Gouraud
Shading because their card is not based on triangles and the Gouraud Algorithm
is only defined for triangles). Instead of determining one value for the
whole triangle, three values are determined for the corners of the triangle.
After this the points between the corners are determined by making a fluent
transfer between the corners. Thanx to this technique, used by most games,
the objects look round and the lines between the triangles aren't that
visible any more. Other techniques are Phong- and Metal Shading.
These techniques will add reflections and look even more realistic. Sometimes
3D accelerators add something called offset highlights which creates a
similar effect by adding a reflection of the spotlight on the object.
Most cards will remove the invisible points based
on information found in the Z-Buffer. Each new point that is calculated
will only be written to the frame buffer if the new Z-value determines
that the new pixel is located in front of the old one. The PowerVR based
cards use a different algorithm that is applied before any of the steps
described in this step. Based on calculations the chipset determines which
polygons are visible and only those are rendered, this technique saves
a lot of work in the following rendering steps that were described here.
Step 5
In this last step the image in the frame buffer is
finished. Now the card will switch to the other page of the frame buffer
when the monitor is ready displaying the image in that buffer-page. On
the PowerVR it works slightly different, the card renders parts of the
screen called tiles, when a tile is finished it is send, using the busmastering
principle, to the 2D graphics card that does the buffering.
Sometimes the whole process of determining the
color of a pixel is referred to as the Rasterisation. The actions
before step 4 are usually carried out by the main processor, they are referred
to as the geometry setup. Some of the new 3D Accelerators do some
or all of the geometry on chip, the GLINT processors are geometry processors
and will relieve the main processor from some of the work. Especially low
end main processors can achieve better results when using a 3D Accelerator
that does some of the Geometry setup on chip. The PCX2 processor does some
of the geometry setup which improved the results of this processor with
50% compared to the PCX1 processor that did NO geometry setup on board.
The PowerVR processor could get a real boost when full geometry would be
done on board, at this moment you would need a Pentium 400 MHz do be able
to perform enough geometry setup so that the actual 3D Accelerator is limiting
the speed. Even the latest PentiumII's are incapable of delivering this
horsepower.