Last week at Siggraph, NVIDIA discussed some of the next-generation features of both the NV3x architecture and their Cg language. This is far from a hardware product launch, but it does give us an opportunity to present some of the new features present in the NV3x architecture, as well as how these may affect the future of 3D gaming.
The current 3D trend seems to be moving towards a more cinematic gaming experience, and the NV3x architecture really pushes the envelope with its "CineFX" architecture. This is intended to allow real-time cinematic effects in real-time, and has several key components. These include advanced programmability, high-precision color, high-level shading language, and a very efficient architecture including high bandwidth to the system memory and CPU.
The programmability aspect of the NV3x architecture centers on both flexibility and control. These are valuable features for both artists and developers, as the limitations of previous solutions have had something of a dampening effect on cutting-edge game development. NVIDIA looks to change this by literally bursting through the existing vertex and pixel architecture limits, and bringing a new level of GPU power to game developers.
The Vertex Processing portion of the NV3x architecture increases the number of supported instructions from 128 to over 65 thousand, provides a greater level of flow control, and supports new capabilities and an advanced instruction set. In layman's terms, these features theoretically give developers the ability to combine a greater number of instructions into a single program, as well as reusing shader programs through an entire 3D model. Assuming developer support, this has the potential of increasing both programming efficiencies and overall game performance.
The Pixel Shading Engine is a combination of enhancing existing specifications, as well as raising the pixel shader engine to the same basic level as the vertex shader. The first step is the introduction of new instruction sets, some of which were reserved for vertex shading in previous graphic chips. As with the vertex portion, the number of operations the pixel shader can handle 1024 pixel operations. This instruction set is far in excess of the DirectX 8 and 9 specs of 8 and 64 instructions respectively and really increases the potential power of the NV3x architecture.
To spell out it a bit more clearly, here is a chart that outlines the main architectural differences between the NV2x and NV3x:
The NV3x architecture's "CineFX" engine supports full 16- and 32-bit floating point formats (FP16 & FP32) for color graphics. In fact, NVIDIA has stated that their 16-bit format offers the same level of precision as both Pixar and ILM use for their feature film productions. This feature allows a higher level of color precision, and lets developers choose the format that represents their own quality-to-performance matrix. FP16 will offer a high level of precision combined with optimum execution performance, while FP32 offers true 128-bit color for high-resolution textures.
One key ingredient in the overall NVIDIA strategy is their Cg (or "C" for Graphics) language. Cg is a high-level programming language that attempts to get away from the old "fit a square assembly language into a round graphics hole" and is designed to make graphics programming more powerful and flexible, while ensuring that it is also easier to use. Cg consists of a high-level design that can compile into both Direct 3D and OpenGL formats, while still maintaining full compatibility with the different video card micro architectures.
We were shown an example where 23 lines of pixel shader assembly code were distilled down to only 2 lines using Cg. Even those with a rudimentary grasp of programming can see the inherent benefits to moving towards a common graphics programming language, using standard routines and variables. It should enhance programming through faster coding, simpler developer tools, and much greater efficiencies and code reusability.
The only problem seems to be one of control, and although NVIDIA has open-sourced its Cg Compiler under a nonrestrictive, free license, some vendors naturally feel a bit uneasy about any transition. We're hoping that all parties can get together on some form of common, high-level programming language (Cg or otherwise), as this would undoubtedly speed up PC game development and put us on even ground with some console systems.