PS1.4 Use

With respect to the use of PS1.4 shaders in Game Tests 2 & 3, NVIDIA states the following:

"Finally, the choice of pixel shaders in game tests 2 and 3 is also odd. These tests use ps1.4 for all the pixel shaders in the scenes. Fallback versions of the pixel shaders are provided in ps1.1 for hardware that doesn’t support ps1.4. Conspicuously absent from these scenes, however, is any ps1.3 pixel shaders. Current DirectX 8.0 (DX8) games, such as Tiger Woods and Unreal Tournament 2003, all use ps1.1 and ps1.3 pixel shaders. Few, if any, are using ps1.4."

The following titles are a list of titles that we have been made aware that support PS1.4. Updated: ATI have supplied us official list of supported PS1.4 titles and engines, as far as they are aware.

Games:  Engines:
  • Tiger Woods 2003
  • Unreal Tournament 2003
  • Sea Dogs II
  • Tomb Raider: AoD
  • Neverwinter Nights (OpenGL)
  • Kreed
  • City of Heroes (OpenGL)
  • Lejendary Adventures
  • Doom 3 (OpenGL)
  • Independence War 2 (via patch)
  • New World Order
  • Battlecruiser Millenium
  • Gun Metal (via patch)
  • Shadowbane (OpenGL)
  • Splinter Cell
  • Project IGI 2
  • HomePlanet
  • Perimeter
  • Shrouded Isles (DAoC expansion)
  • Unreal
  • EAGL
  • Palantir
  • Madden
  • NDL
  • Intrinsic
  • Doom III
  • Lithtech
  • Krass
  • AMP II (soon)
  • Fly3D
  • CryEngine
  • Serious Engine(s)
  • Big World
  • Yeti engine
  • Codecreatures
  • Mad F/X
     

While the list may not be massive, we can see that there would appear to be gaming support for PS1.4 in current and future gaming titles, and given the number of shader titles available at all so far, this is probably a reasonable proportion. There are some high profile titles in this list and it's also interesting to see that two of the titles singled out by NVIDIA also seem  featured there.

While I freely admit that I haven’t been to every development house on this list and verified their use, seeing as Epic’s Daniel Vogel, a developer on UT2003, has, of times, posted on our forum I figured I would approach him and ask whether UT2003 does indeed support PS1.4, as ATI suggests, and this was his reply:

"UT2003 uses PS 1.4 for terrain rendering which allows a shorter pixel shader program than using PS 1.1 though isn't a noticeable performance improvement (FWIW, it's 4 vs 7 instructions). In theory PS 1.4 would allow us to render 5 terrain layers at once though due to state change overhead caused by different triangulation (more, smaller batches) the sweet spot is rendering 3 layers at once which both the PS 1.1 and PS 1.4 codepath are capable of doing.

So, to sum it up, we do use PS 1.4 though it doesn't result in a noticeable performance improvement in normal scenarios. You can actually limit the engine to only use pixel shader version 1.1 if you want to play with that.

-- Daniel, Epic Games Inc."

So we can see that UT2003 does use PS1.4 and it appears that it is providing them with a mildly more optimal code path than PS1.1, and could offer them more if they chose to utilise it in that fashion. And this is the point with PS1.4: often, on current utilisations, there will be no noticeable feature or effect differences with PS1.4, but it will be working behind the scenes to provide a more optimal rendering route. When Radeon 8500 was released, bringing along PS1.4 Pixel Shaders, NVIDIA representatives at the time stated that there was nothing that PS1.4 could do that couldn't be achieved on PS1.1; well this is true, but as NVIDIA said at the time PS1.1 could do what PS1.4 can via the use of multi-pass operations, which is exactly what is occurring in these Futuremark tests.

Another title on that list is the much fabled Doom III, and we know that this uses the OpenGL equivalent of PS1.4 as John Carmack updated his .plan detailing exactly what this fragment (pixel) processing path allowed him to do that none other did at that time. It's worth revisiting that to gain a little more understanding:

"The fragment level processing is clearly way better on the 8500 than on the Nvidia products, including the latest GF4. You have six individual textures, but you can access the textures twice, giving up to eleven possible texture accesses in a single pass, and the dependent texture operation is much more sensible. This wound up being a perfect fit for Doom, because the standard path could be implemented with six unique textures, but required one texture (a normalization cube map) to be accessed twice. The vast majority of Doom light / surface interaction rendering will be a single pass on the 8500, in contrast to two or three passes, depending on the number of color components in a light, for GF3/GF4."

John Carmack wrote that just over a year ago now, and it would seem that there is remarkable similarities between what he said then and Futuremark are saying now. In fact, it's not really remarkable as this is just the type of thing that PS1.4 allows, and this is generally not understood.

PS1.1 to 1.3 all only allow for 4 texture addressing stages, so if your shader goes over that then you need to multi-pass. PS1.4 is fundamentally different in that it has a slightly different instruction set, allowing for more instructions per shader, addressing six texture per pass with a dependant texture read, and allowing for up to 11 texture accesses to be handled in a single pass (in fact, Microsoft described it as the stepping stone to future shaders, indicating that it has a close lineage with DX9's PS2.0 model). It's this that allows Doom III and Futuremarks game tests to render in one pass on PS1.4 what has to be rendered in up to three passes in PS1.1 to 1.3.

NVIDIA's statement on the use of PS1.4 intimates that perhaps PS1.3 should be used as a fallback, yet PS1.3 still has the same basic limitations in the respect that how Futuremark is utilising the Pixel Shaders. PS1.3 only adds support for a specific kind of operation (changing the Z value of the Shader) that would not be of use in this circumstance.

(Note: If you didn't follow the link to John Carmack's .plan it should be noted that his performance testing at the time indicated that GF4 was still slightly faster/more consistent at that time for Doom III rendering, despite requiring more rendering passes)