The additional bits of precision achieved through the new floating point pipelines can be used to more accurately depict lighting. With the old 32-bit integer pipelines each RBGA value was limited to 8-bits, or 256 distinct values. Below you’ll see a very complex scene that we want to adjust the brightness of:

The problem with only 256 distinct values is that, if we increase the brightness of everything by 64x, the brightest light sources in the scene are limited by the number of distinct values that the 8-bit integer components can represent. The end result is that although the entire scene gets brighter, the brightest sources in the scene are no longer proportionally brighter than the rest of the scene.

The same applies to when darkening a scene; if we adjust the brightness to 1/64th the original intensity of the light, everything becomes incredibly dark. Even though everything in the room becomes dark, the sources of light should not become as dark as the rest of the room, which is what happens if you are constrained by the number of values you can use to represent the color components of the scene.

Now, let’s look at the same scene but using floating point color to offer a wide range of brightness levels:

Instead of only having 256 values per component, each color component can now be represented by, in effect, an unlimited number of values, giving you a truly dynamic range of brightness.

DirectX 9 calls for support for Multiple Render Targets (MRTs) which, as the name implies, means the ability to target specific objects in a scene for pixel shader programs. This method will be one of the most common in which complex pixel shader programs are implemented. You won’t see 100+ instruction programs being used on every single object in a scene, but in order to make a few parts of the scene truly stand out MRTs will come in handy.

Pixel Shader 2.0 Support SMOOTHVISION 2.0 – Multisampling, Finally
Comments Locked

0 Comments

View All Comments

Log in

Don't have an account? Sign up now