nfiniteFX Engine
Enter DirectX8
Microsoft released the newest version of DirectX late last year. The DirectX8 suite included an updated Direct3D architecture with new support for programmable vertex shaders and pixel shaders. NVIDIA has dubbed the GeForce3's vertex and pixel shaders the nfiniteFX engine. These shaders allow developers to use their own programming instructions to create specialized vertex and pixel effects, finally enabling real time effects that rival those found in movies.
The GeForce3 is a DX8 part, and supports these shaders in hardware. Older cards, such as the GeForce2 or the Voodoo5, will still work with DX8, but will rely on a software rasterizer to perform the shader operations. As a result, performance on older cards will be extremely slow.
![NVIDIA GeForce3 Preview [ Hello Zoltar @ 800 x 600 ] > View Full-Size in another window.](images/s-s.jpg) Hello Zoltar
|
|
![NVIDIA GeForce3 Preview [ Hmmmm? @ 800 x 600 ] > View Full-Size in another window.](images/t-s.jpg) Hmmmm?
|
|
Vertex shaders
The GeForce3's programmable vertex shaders offer developers unprecedented access to real time effects. In the past, many of these effects required huge amounts of CPU power, making them impossible to perform in real time. What does a vertex shader actually do? Let's take a look.
A 3D image as we know it is made up of a bunch of triangles fashioned into recognizable objects. See Mr. Zoltar up above? He's all triangles, baby. As you may (or may not) recall, a vertex is a point where two lines meet. The vertex shader takes in vertex data, operates on the data, and spits out a fully transformed and lit vertex. The developer can supply his own instructions for the shader to run. These instructions operate on individual vertices or groups of vertices.
CPU vs. GPU
Back in the day (last week), the CPU used to have to perform a lot of the geometry setup work for many of the effects that the vertex shader can now handle on its own. Often, many effects are so CPU intensive, that poor performance would make an effect such as cube environment mapping almost impossible to use. The vertex shader moves much of the geometry computation work from the CPU to the GPU. The GPU is also specifically designed to perform these calculations, giving the chip a significant advantage over the general system microprocessor.
![NVIDIA GeForce3 Preview [ Ahhh @ 800 x 600 ] > View Full-Size in another window.](images/u-s.jpg) Ahhh
|
|
![NVIDIA GeForce3 Preview [ So, do you know the fortune teller from Big? @ 800 x 600 ] > View Full-Size in another window.](images/v-s.jpg) So, do you know the fortune teller from Big?
|
|
Click here to see Zoltar in action (7MB, MPG)
Vertex shaders open the door for effects such as complex character animations with skin and clothing that stretch and move realistically. With keyframe animation, you can use keyframes, sets of vertices that define a face expressing different emotions for example, and have vertex shaders calculate all the frames between each keyframe in real time.
Vertex shaders can also handle environmental effects like fog or even light refraction effects like accurately displaying sunlight hitting the shallow ocean floor through moving waves.
![NVIDIA GeForce3 Preview [ Like jello @ 520 x 539 ] > View Full-Size in another window.](images/a-s.jpg) Like jello
|
|
![NVIDIA GeForce3 Preview [ Hello Blobby Dino @ 520 x 539 ] > View Full-Size in another window.](images/b-s.jpg) Hello Blobby Dino
|
|
![NVIDIA GeForce3 Preview [ Doesn't that hurt? @ 520 x 539 ] > View Full-Size in another window.](images/c-s.jpg) Doesn't that hurt?
|
The screenshots above are from NVIDIA's Blobby Dino demo. The demo shows off the the geometry deformation abilities of the GeForce3's vertex shaders. The shaders allow the dino to undulate in real time. The dino would still undulate on a GeForce2 Ultra, just very slowly.
The number of possible vertex shader effects are endless. Other popular effects (according to NVIDIA) seem to be lens effects, dot-product bump mapping, morphing, motion blur, and two-sided lighting.