Right now, hardware lighting isn't nearly as important as hardware transformations.
In the future this might change, but for now, what is this? Well hardware
lighting is done per-vertex and quite honestly, this can result is some
pretty terrible image quality if used improperly. Per-vertex lighting means
that objects are given X amount of light per triangle (it is calculated
at each vertex and so you have 3 different intensities of lighting centering
on the middle of the triangle). To get an idea of hardware light and how
it would look, let us consider Quake III. Now the characters in Q3 consist
of about 1000 polygons (give or take). So assume that you light the characters
with hardware lighting. Because the character uses so many polygons, each
triangle is very small and so you won't really notice the way the lighting
is done. This is a situation where hardware lighting is good and really
helps to improve performance. Now if you were to use hardware lighting on
walls, the effects would be disastrous. Take a simple square wall. Usually
something like this would be made of two triangles (large or small depending
on the size of the wall). As light would travel down the wall you would
see the entire triangle light up, and you'd see very defined edges on the
triangle. So what can be done to avoid this?
The lighting problem is solved in two ways. Currently, we rarely use hardware
lighting (especially on flat surfaces). We use what are known as lighting
maps, or textures of light that are rendered with an additional pass onto
the walls and other objects. The results in very high quality lighting,
but as said, it requires an addition pass to render. The other solution
is to make everything consist of many triangles. By doing so, all of the
triangles become small enough that it is hard to notice the edges. The only
problem with this is that you must render a great deal more triangles, thus
taxing the transformation engine and reducing the complexity of other objects
that could take advantage of the higher level of detail. Truth be told,
even when something such as a flat wall uses an acceptable level of triangles,
you can still see that per-vertex lighting is being used. Of course this
is if you really look, and chances are that in more games you'll be moving
so quickly that you won't even notice (if the game has an acceptable level
of triangles in the walls, something no game currently comes close to).
Here is an example of hardware lighting when using a acceptable level of
triangles on a flat surface.
T&L is really an interesting, yet very complex aspect of graphics
acceleration. It can and will make a world of difference in the complexity
of games. It is unquestionably a necessary step in the evolution of 3D
hardware. It is very interesting to look at the different problems associated
with it, as we just have, and see what developers can do to work around
this. It should be interesting to see over the next few years what approaches
different developers take on the different issues. Really though, from
a gamers perspective, it only matters that we are seeing yet another leap
in terms of graphics rendering. T&L is unquestionably going to bring
a massive increase in games' graphical complexity, but it will be over
time. We are now only entering the first generation of onboard T&L
that is targeted at the consumer/hardcore market. There are many advancements
to be made in T&L. It isn't a situation of that once you have it;
just make it faster as has been with 3D accelerators in the past. There
are many more issues that come up and many more things that can be done
to improve on T&L. Whatever happens though, the one thing we know
for sure is that we're all going to benefit.