What's new in DX 9.0c


This year the latest in the DirectX API is getting a bit of a face lift. The new feature in DirectX 9.0c is the inclusion of Pixel Shader and Vertex Shader 3.0. Rather than calling this DirectX 9.1, Microsoft opted to go for a more "incremental" looking update. This can end up being a little misleading because whereas the 'a' and 'b' revisions mostly extended and tweaked functionality, the 'c' revision adds abilities that are absent from its predecessors.

Pixel Shader 3.0 (PS3.0) allows shader programs of over 65,000 lines and includes dynamic flow control (branching). This revision also requires that compliant hardware offer 4 Multiple Render Targets (MRT's allow shaders to draw to more than one location in memory at a time), full 32-bit floating point precision, shader antialiasing, and a total of ten texture coordinate inputs per pixel.

The main advantage here is the ability for developers to write longer, more complex, shader programs that run more efficiently. The flow control will give developers the freedom to write more intuitive code without sacrificing efficiency. Branching allows a shader program the expanded ability to make decisions based on its current state and inputs. Rather than having to run multiple shaders that do different things on different groups of pixels, developers can have a single shader handle an entire object and take care of all its shading needs. Our example of choice will be shading a tree: one shader can handle rendering the dynamics of each leaf, smooth new branches near the top, rugged old bark on the trunk, and dirty roots protruding from the soil.

Vertex Shader 3.0 extends its flow control ability by adding if/then/else statements and including the ability to call subroutines in shader programs. The instruction limit on VS3.0 is also extended to over 65000. Vertex textures are also supported, allowing more dynamic manipulation of vertices. This will get even more exciting when we make our way into the next DirectX revision which will allow for dynamic creation of vertices (think very cool particle systems and hardware morphing of geometry).

One of the coolest things that VS3.0 offers is something called instancing. This functionality can remove a lot of the overhead created by including multiple objects based on the same 3d model (these objects are called instances). Currently, the geometry for every model in the scene needs to be setup and sent to the GPU for rendering, but in the future developers can create as many instances of one model as they want from one vertex stream. These instances can be translated and manipulated by the vertex shader in order to add "individuality" to each instance of the model. To continue with our previous example, a developer can create a whole forest of trees from the vertex stream of one model. This takes pressure off of the CPU and the bus (less data is processed and sent to the GPU).

Now that we've seen what developers are looking at with DirectX 9.0c, let's take a look at how NVIDIA plans to bring these features to the world.
Index NV40 Under the Microscope
POST A COMMENT

76 Comments

View All Comments

  • Brickster - Thursday, April 15, 2004 - link

    Am I the only one who thinks Nvidia's Nalu is the MOST bone-able cartoon out there?

    Oy, get the KY!
    Reply
  • Warder45 - Thursday, April 15, 2004 - link

    Did any reviews try and overclock the card? Is it not possible with the test card? Reply
  • DonB - Thursday, April 15, 2004 - link

    Would have been better if it had a coax cable TV input + TV tuner. For $500, I would expect a graphic card to include EVERYTHING imaginable. Reply
  • Pete - Thursday, April 15, 2004 - link

    Shinei #37,

    "Speaking of DX9/PS2.0, what about a Max Payne 2 benchmark?"

    MP2 doesn't use DX9 effects. The game requires DX9 compatability, but only DX8 compliance for full effects.

    Xbit-Labs has a ton of benches of next-gen titles as well, and is worth checking out. NV40 certainly redeems itself in the HL2 leak. :)
    Reply
  • Wwhat - Thursday, April 15, 2004 - link

    Anybody happen to know if it's possible to use a second (old) PSU to run it, you can pick up cheap 235 watt PSU's and would be helped with both extra connectors and power.
    I'm not sure it won't cause 'sync' problems though as a small difference between the rails of 2 PSU's would cause one to drain the other if the card's connectors aren't decoupled enough from the AGP port.



    Reply
  • Pumpkinierre - Thursday, April 15, 2004 - link

    Agrre with you Trog #59 on the venting. Also with DX9.0c having fp32 as spec., does this mean that FX series cards redeem themselves? (As the earlier DX9 spec was fp24 which was'nt present on the FX gpus causing a juggling act between fp16 and fp32 to match performance and IQ). Still, full fp32 on the FX cards might be too slow.
    Reply
  • mrprotagonist - Thursday, April 15, 2004 - link

    What's with all the cheesy comments before the benchmarks? Anyone? Reply
  • Cygni - Thursday, April 15, 2004 - link

    "what mobo and mobo drivers were used? i hear that the nforce2 provides an unfair performance advantage for nvidia"

    The test was on an Athlon 64 3400+ system, so i doubt it was using an Nforce2. But ya, i agree, the system specs were short. More details are required.
    Reply
  • Brickster - Wednesday, April 14, 2004 - link

    Derek, what was that Monitor you used?

    Thanks!
    Reply
  • Deanz79 - Wednesday, April 14, 2004 - link

    AWESOME!! I wouldnt mind borrowing the card for the night :P Reply

Log in

Don't have an account? Sign up now