nVIDIA's "Cg" Language
An Interview With David Kirk, Chief Scientist - NVIDIA Corp
What's on the horizon for next generation graphics

By Dave Altavilla
6/14/02

   
 

Hello David,

Thanks for taking time out of your busy schedule to chat with us. We appreciate your accessibility here and its great to know that NVIDIA still values an open line of communication with the end user community, as well as HotHardwares elite group of enthusiasts.



First, perhaps we should start with the basics. What is your title and general scope of responsibility at NVIDIA?

My title is Chief Scientist, and I am in charge of the Architecture group at NVIDIA. We work to develop new algorithms and architectural features for NVIDIAs hardware products. The architecture group provides a software simulator for each new chip, for the hardware and software team to use to build the chips and drivers. We also support the testing process to make sure that we build the right thing, and it works, and its fast. We work closely with our developer team to get feedback and input on what features developers and customers want and need. I also have the pleasure of evangelizing our technology and vision to the PC and Game community at large!
 

 


So, as Chief Scientist, you are somewhat of a visionary with respect to the technology that is being developed at NVIDIA, as well as where the industry is headed. What do you think are going to be key elements, moving forward, for 3D Graphics and the Gaming Industry?  Is it still just fill rate, bandwidth and shaders?  Or are things going to evolve in another direction?

I think that weve reached a turning point in GPU technology, and were going to see some very exciting changes coming in the very near future. Over the past five years, weve been adding features, but also focusing on increasing performance at a rate of approximately doubling every 6 months. Consequently, weve gone from the infancy of mass market PC graphics, to programmable graphics hardware that is powerful and usable, to create stunning effects. We are now at a point where pixel fill rate is quite fast, and polygon rate exceeds the demands of most game developers. We can render at HD resolution, with over 1 million polygons per frame, covering each pixel 20+ times with pixel shaded detail, at 60+ Hz, with anti-aliasing turned on!  Were now shifting the focus from more, faster pixels, to better, more realistic pixels.  The new programmability in GPUs is going to drive the creativity of artists and programmers forward into a whole new era.
 


What do you think are the top three hardware features that Game Developer are asking for moving forward?

Thats a tough one. Developers always ask for more, more, more, and we try to give it to them!  Developers have been asking for more flexibility and programmability in both the pixel pipeline and in the vertex processing pipeline, and more precision in the data calculation for lighting and shading.  Finally, programmers are continually struggling with change.  Each new piece of hardware has more, new, different features to be learned, and this is difficult for them to program directly.  For this reason, weve developed a new technology with collaboration from Microsoft, that allows GPUs to be programmed at a higher level of abstraction. We call NVIDIAs higher level language Cg C for graphics. I believe that it will revolutionize graphics and the way that games are developed.
 


Lets talk about your recent Cg announcement a bit.  Cg is certainly an excellent new tool for the Game Developer Community.  Having an open source, high-level language, versus machine language or hand coding, is going to open up new areas of opportunity for next generation game development.  However, the end user community isnt going to be firing up your Cg compiler any time soon.  What do you think all this new development software means to the end user?

The power and excitement of a high-level language, lie in the fact that the end-user doesnt have to interact with the technology or even know that it exists. Cg will allow developers to start developing high-level language programs for todays GPUs right away. There is very little learning curve, since Cg is very much like C.  So, games that take advantage of the technology will begin to appear right away. Also, as new GPU technology appears, the Cg run-time compiler will compile the Cg program to most effectively take advantage of the new GPU features, without re-writing the program. This means faster adoption of new hardware technology, and that means better games for users, sooner!
 


How does Cg work in conjunction with the current APIs out there, OpenGL and Direct X 9?

Cg is a high level graphics programming language, and a run-time compiler that is layered on top of the OpenGL and DirectX APIs. So, Cg programs are by definition compatible with both APIs. And, any hardware or operating system platform that runs either API will therefore run Cg programs. By the way, were actually starting with DirectX 8, and GeForce3 and GeForce4 as targets, so developers can start now. When DirectX 9 arrives, Cg programs written for DirectX 8 or OpenGL will just work but run faster and better.
 


Does Cg offer simply more streamlined development of 3D Graphics and Animation or are there certain features and optimizations that it will bring forth.

Cg streamlines the process of developing games and 3D graphics animation by moving the programmers and artists away from the details of the hardware while still allowing full control. Because Cg is compiled at run-time, the execution of the program can be dynamically optimized to take advantage of specific features of particular hardware, and to run at maximum performance. Developers can focus more on the visual effects that they want to create, and less on how to shoehorn them into a specific hardware implementation. This makes compatibility with multiple generations of hardware much easier to support.
 


Youre releasing a tool suite and compiler for this new open source language.  Do you think the rest of your competitors are likely to follow suite and release their own versions?

We are hopeful that the entire graphics community will embrace Cg.  Its clearly good for everyone. However, they dont actually need to do any work to support Cg. Since the language is layered on top of the major graphics APIs, OpenGL and DirectX, Cg will run on all hardware that supports those APIs, assuming that they are conformant to the standards. Its really exciting! Cg can be pervasive. As part of our announcement of Cg, we are also including some statements from some of the major authoring software tool providers, who will be actively integrating Cg support into their tools. Artwork and effects that are created by artists and visual effects specialists will be automatically exported as Cg source code, with supporting data.
 


Since this new development language supports Direct X 8 and 9 features and extensions, what role does Microsoft play in all this?

The syntax of the Cg language was developed by NVIDIA in close collaboration with Microsoft, to make sure that the syntax of NVIDIAs Cg language and Microsofts efforts are a perfect match. Also, since Microsofts DirectX APIs directly expose new features that hardware vendors produce, the combination of Cg and DirectX allows efficient access to the power and programmability of the latest GPUs. Microsoft is a valuable partner in bringing the latest and greatest technology to developers and consumers, and we value their contributions.
 

More Q&A with David Kirk and a hint at what NVIDIA has up their sleeve!