|
Creative
Labs3d Blaster GeForce3 Ti500
|
|
Author : Wayne
Date : 24th September 2001
|

3DVelocity would like to
thank Creative
Labs and especially Rosie Tickner of ProdigyPR for their
help and courtesy in providing this graphics card for review.
Pixel
and Vertex shaders

The nfiniteFX Programmable pixel shader :
In the past, graphics cards were manufactured
with a set of fixed function special effects that developers
could use to enhance the look and feel of their games. Because
of this many games of the day were very "samey" with
similar lens flare effects, similar lighting, similar texture
handling and so on. In those days when a graphics card manufacturer
had an idea for a great new effect you had to wait for their
next card to see it in action, then hope somebody created a
game that actually bothered using it. With the advent of the
programmable pixel shader all that has changed. Now it's the
developer who can decide the kind of effects he/she'd like to
see in their new title, and then set about teaching the card
how to create them. Essentially the programmable pixel shader
lets a developer get to the very heart of the hardware and define
a bewildering array of special techniques and functions at will.
The nfiniteFX Programmable vertex shader :
The vertex shader works in very much the same
way as the pixel shader, but rather than working on individual
pixels it works on vertex values and data. A vertex is simply
the "corner" of a polygon, the point at which 2 of
its sides meet. Using the vertex shader a massive range of effects
can me conjured up including fog, smoke and other environmental
effects. Other effects include heat haze, procedural deformations
for creating things like soap bubbles, waving flags and the
like, custom lighting effects, lens effects, motion blur and
a whole lot more. Using the vertex shader you can also create
morphing effects and and keyframe animation (or keyframe interpolation
as ATi like to call it) and this is just scraping the surface.
The two main features added to the Ti series are
3d Textures and Shadow buffers.
3D Textures :
As a rule when something is rendered, a 2 dimensional
(flat) texture is draped over a framework of polygons. What
this creates is a hollow shell rather like an Easter egg. Now
this is fine in most instances, but what if part of that shell
needs to be removed? If you slice the top off an Easter egg
you see nothing but empty space inside and the same applies
to traditionally rendered objects. To accurately model an object
that may need parts removing you need to make that object completely
solid right the way through and this is the principle behind
3D textures. Rather than drape a 2D texture over a framework,
a 3D texture is used which holds information about the internal
parts of the object that aren't normally seen. By doing this,
parts of the object can be stripped away in real-time without
any additional calculations to quickly try to fill the empty
space that remains.

Of course 3D textures are huge. In fact a 256x256x256
texture would take 64MB uncompressed, while a 512x512x512 texture
would consume 512MB uncompressed!. NVIDIA counter this by uniquely
compressing the texture three dimensionally and features a multiple
compression ratio system that includes 1:4 and at the extreme
1:8 compression.
We also need to think about object distance. Just
as MIP maps are used to render an appropriate 2D texture depending
on object distance and size, so a similar routine needs to be
carried out with 3D textures. By implementing Quad-linear filtering,
NVIDIA are able to offer fast, manageable high quality 3D textures.
Uses of 3D textures include :
Procedural Textures and Noise : For explosion effects
etc.
Depth of Field Effects : To simulate blur based on distance
from point of focus
Imposters : When multiple models are fixed in space,
only one is rendered fully while the others are rendered using
a single 2D texture to "simulate" the fully rendered
model.
Volumetric Fog : Fog effects that can vary in density,
width, height and even depth.
Shadow Buffers :
Shadow effects are nothing new but the GF3 Ti
sets aside part of its texture unit for use as a fully featured
shadow buffer. The range of effects and routines is extensive,
so here's a canned look at the principle :

Firstly the scene is examined from the point of
view of the light source.

From this viewpoint a shadow map is created. This
shadow map is stored in the shadow buffer until called for.

The final step is to incorporate the shadow map
into the final rendered scene. Using a proprietary shadow algorithm
it is determined if the entire pixel is in shadow. If only part
of a pixel is in shadow and the rest is lit, the precise portion
of the pixel in shadow is calculated and one of 256 densities
applied. This means shadow edges automatically appear soft and
natural.
The great advantage with this technique is that
complex scenes can be shadowed as effectively as simple ones,
and to add to the realism objects are also able to "self
shadow" where part of an object casts shadow on other parts
of itself , such as a a tree which may cast shadows of its own
branches onto its trunk.
Page 6- The card