real time rendering 2004-02-02 - By Steven Newnham
Back Shawn,
I have an ATI Radeon 9800 Pro installed in the PC I am using to write this message, and have run the demo application in question. Yes, ATI can do it, as can nVidia - and they can do it at higher resolutions than 800x600 - I run it at 1280x1024 (edit the sushi.ini file in the demo's directory to change the resolution it runs at). At 30fps? Not sure, the demo doesn't include a FPS display - but the motion is very smooth even at high rotation rates.
You say "And very possibly me and the rest of the CG industry has just missed this completely." - this is not likely, as this particular demo was released and widely reported on at Siggraph 2002. Furthermore, it was demonstrated there by Paul Debevec, one of the authors of the original 1998 Siggraph film "Rendering With Natural Light" ( http://www.debevec.org/ ) on which the demo is based.
Seeing is believing, I suggest you go to a dealer and ask for a demo (if the dealer doesn't already have the application in question it can be downloaded here: http://www.ati.com/developer/demos/r9700.html - whilst there you might want to get the car paint, moebius strip and bear demo's too - and in the 9800 area ( http://www.ati.com/developer/demos/r9800.html ) get the chimp demo ). Once the demo is running, move the mouse to switch into manual control mode - you will then be able to rotate around the scene by moving the mouse and move in and out using the mouse buttons - note that this is moving the camera and not simply magnifying the image - the visual relationship between the scene's objects changes as you move in and out, as you would expect for camera movement and not for simply magnifying the image.
Still don't believe it? Go to your bookstore and take a look at "ShaderX2, Shader programming tips and tricks with DirectX 9" (ISBN 1-55622-988-7) - check out colour plate 20 and then turn to page 451 for a discussion, by the demo's developers, of the real time Gaussian blur filter implemented in the demo.
Whilst there, check out "Shader X2 Introductions & Tutorials with DirectX 9" (ISBN 1-55622-902-X) or "Cg, The Cg Tutorial" (ISBN 0-321-19496-9) for an introduction to programmable GPU functionality (the latter is the better of the two for introductory purposes).
As far as rendering Babylon 5 in 1/5th real time, nVidia have done better - how about rendering Final Fantasy, The Spirits Within at 10 frames per second (albeit not at film resolution)? --> http://www.nvidia.com/object/final_fantasy.html http://www.theinquirer.net/?article@(protected)
The rendering power in current generation GPUs far outstrips what our general purpose CPUs can achieve in real time - they are now extremely powerful, flexible, programmable floating point vector processors specifically designed for one purpose - real time rendering; they are far removed from the early consumer 3D accelerators of a few years ago (bear this in mind - an Intel Northwood Pentium 4 processor has 55 million transistors - the ATI Radeon 9800 GPU has 110 million transistors!). Our general purpose CPUs, however, still hold the advantage of flexibility and resource availability when real time image generation is not required (GPU instruction sets are still quite limited compared to their CPU brethren - branching and looping being one obvious area currently being addressed. General purpose CPUs have the luxury of more available memory, offline storage, vastly larger allowable program size, highly optimised development environments, etc.).
When considering all this, you have to bear in mind that these are highly optimised demonstrations, not general purpose rendering packages. Whilst ATI's Real Time Debevec demo (the demo which originated this discussion) is impressive, it is of very limited content. It does, however, ably demonstrate where the hardware is today and illustrate how much further down the path we are than many people realise.
Games are not yet taking full advantage of this technology, but expect that to change very quickly - check out the Half Life 2 movies available, or have a look at the Far Cry ( http://www.farcry-thegame.com/ ) movies or even better the demo that was recently released; if possible get somebody to run this demo for you on a fast PC equipped with a Radeon 9700 / 9800 or nVidia 5800 / 5900 / 5950 - get in a boat and speed around the lagoon a bit (after taking out the enemies that will shoot at you :-) ) and be prepared to be amazed - then be aware that the demo as downloaded has some features turned off by default (reflection off the water's surface for example) that you can turn on by editing the configuration files. The movies that can be downloaded from the media section of the site will give you some idea if you can't get access to a suitably equipped PC. Bear in mind that whilst individual elements in these won't look as good as the spheres in the demo, the overall scene complexity in terms of polygon count, lighting, shading, etc. all generated in real time is quite amazing compared to what was available twelve months ago; a game that only had a plinth and ten spheres probably wouldn't sell that well ;-).
General purpose rendering packages like trueSpace, 3DS Max, LightWave, Maya, SoftImage, etc. don't currently utilise this hardware to provide real-time photorealistic previews for one primary reason and several secondary reasons. First, the shader code that runs on the GPU is completely different to the shader code that runs on the CPU - providing a reasonably accurate preview would require each shader to come in two versions - the highly accurate general purpose version in 80x86 CPU code for the final render and a preview version for the GPU in Cg/HLSL (potentially multiple GPU versions to suit different target levels...). The technology is too new for this to have taken place....yet.... Second, the approach taken by GPU's to render a scene (rasterising triangles and post processing passes) won't always fit in with the approaches taken take by more powerful/flexible general purpose renderers (particularly ray tracers), so some scheme would have to be developed to ensure effects such as reflection, refraction, shadows, shadow catchers, fog, flares, etc. could be implemented on the GPU in a completely different fashion yet remain reasonably true to the end result of the general purpose renderer - otherwise the photorealistic preview no longer reflects the final render, defeating the purpose.
There are plugins for Cg/HLSL shader development for 3DS Max, Maya and SoftImage|XSI which provide for the use of GPU shaders in the editing environment for real time previews - the focus here, though, is on developing content for games (including shaders), rather than providing a real time preview of content that will finally be rendered in the package.
So, yes, ATI (and nVidia) have hardware available that can generate the images you saw in real time. More importantly, this hardware has been available on the retail shelf at consumer level prices for nearly 18 months now and will shortly be superceded by even more capable hardware (pre-release info suggests a doubling of power - which fits almost perfectly with Moore's law...).
Is the technology ready for television/film production in place of render farms? No - it currently lacks the power and flexibility that years of development have imbued in general purpose software renderers. Will it reach that point in the foreseeable future? Highly likely - but that won't eliminate products such as trueSpace, Maya, SoftImage, etc. - after all their true purpose is content creation, i.e. providing a user interface and tools to generate the data that is passed to the renderer, a need that will still exist - but I'll bet the people behind LightWorks, mentalRay, etc. are casting more than a casual glance over their shoulder...
Steven Newnham
|
|