Pixel Shader 2.0 Support

The R300 supports Microsoft’s Pixel Shader 2.0 specification, also a part of DirectX 9. There are a number of improvements this new Pixel Shader specification offers, the below table provided by ATI helps summarize things:

You’ll notice in the table above that the new Pixel Shader specification calls for a maximum of 16 texture inputs. This translates into the ability to apply 16 textures per pass, up from 6 on the GeForce4 and Radeon 8500. To give you an idea of how this fits with forthcoming games, Doom3’s pixel shaders are expected to require five to six texture inputs, which the R300 can do in a single pass. To give credit where it’s due, DX8 solutions can also do that in a single pass, so there is a good deal of headroom to exploit on the R300’s current architecture.

The Pixel Shader 2.0 specification also calls for much more flexible operations that in turn make the chip much more programmable. The R300 can execute up to 160 Pixel Shader instructions per pass and, though this amount is not infinite, the architecture can take multiple passes to process a complex program that is longer than 160 instructions in length.

For now, where this comes in handy the most is in high-end 3D rendering applications. Due to the extremely programmable nature of the R300 (and other forthcoming DX9 GPUs), it will be possible to actually compile and run code (for example 3D Studio Max or RenderMan code) on the GPU itself. Currently 3D rendering is done entirely by your host CPU, but with proper software support, you will be able to render 3D scenes much quicker on these powerful GPUs.


ATI's RenderMonkey Application will take code from any high level language and compile it to R300 assembly (e.g. RenderMan > R300 asm)

The 160 instructions per pass limitation comes into play with 3D rendering because it forces most complex 3D rendering to be done in multiple passes. This is acceptable for now, mainly because it is much easier and more user-friendly to render a scene in 3D Studio Max at 0.1 fps rather than wait 10 minutes for your CPU to render a single frame.

Once again, you can see the requirement for a fully floating point pipeline, which means that NV30 as well as R300 will both have support for these features that we are going to talk about. One very compelling application for a fully floating point rendering pipeline is higher quality lighting, which is absolutely necessary in order to render lifelike scenes. As good looking as 3D games currently are, they are still far, far away from being lifelike; lower quality textures and a lack of polygon detail are both causes, but a major limitation is lighting.

Eight Pixel Rendering Pipelines – The DX9 Era Begins Realistic Lighting using Floating Point Color

Log in

Don't have an account? Sign up now