Features Overview: nFinite FX Technology
NVIDIA surely coined a great name for their now programmable GPU, and its name suggests the inexhaustible potential for creating any graphics effects or scenes. Why and how is this a really significant change?
“The GeForce3 GPU's nfiniteFX engine gives developers the ability to program a virtually infinite number of special effects and custom looks. Instead of every developer choosing from the same hard-coded palette of effects and ending up with the same generic look and feel, developers can specify personalized combinations of graphics operations and create their own custom effects. Games and other graphics-intensive applications offer more exciting and stylized visual effects. Two patented architectural advancements enable the nfiniteFX engine's programmability and its multitude of effects: Vertex Shaders and Pixel Shaders.” - NVIDIA GeForce 3 Product Overview .PDF
From the GeForce 2 Ultra to the first GeForce 256 chip developed, NVIDIA’s feature set (such as its T&L engine) has been hardwired into the chip and a developer either uses the provided function or not at all. There is simply no flexibility in terms of programmability. This made the first GPU less like a typical CPU, where in the case of Intel or AMD, the x86 instruction set allows programmers to write code to manipulate registers and perform specific operations.
NVIDIA learnt quite a bit that every game developer has his preferred manner to work the visuals. In the past, if the way the GeForce handles lighting does not suit what John Carmack desires in Quake III, he will be forced to bypass it completely and do it his own way without hardware acceleration, native to the video card. Now he has the option to make it work the way he wishes.
“Vertex Shaders inject personality into characters and environments. Motion invades the entire scene, not just the focal points. The vertex processing capabilities allow characters to move and show facial emotion, materials to stretch, and the scene to come alive. By customizing the skinning and motion effects, developers can create a personality, intensifying the impact of the visualization or animation.” – NVIDIA GeForce 3 Product Overview .PDF
On top of the T&L capabilities offered, the GeForce 3 has a Vertex Shader unit, which is a specialized processor that handles the geometry and setup math before the rendering process of each scene. It offers built-in programmability which allows special programs to be developed, in accordance with NVIDIA's Vertex Shader Instruction Set. NVIDIA has also ensured that legacy applications designed for use with a hardwired T&L engine continues to work.
The little programs will be able to manipulate information, such as the X, Y, Z coordinates, W (weight), its normal vector, colour (RGBA), texture coordinates, fog and point size data, that is carried in each vertex. And because the wealth of information processed will be performed in hardware by the Vertex Shader, it does not consume any CPU computing power. As such, we can expect future games to take advantage of these features to accomplish complex character animations, natural deformations and realistic environmental effects.
However, there are restrictions. It would seem like the Vertex Shader can bring about virtually every possible animation effect, every nuance of expression of our in-game characters, but its 128 instructions limitation will cap the amount of manipulation required and the effect of increased execution time will lower the triangle rate.
Note: There are a host of features and effects not entirely covered or illustrated in this writeup, you may wish to download NVIDIA's Technical Brief on the GeForce 3: Programmable Vertex Shaders (.PDF) here.