NVIDIA Doubts Ray Tracing Is the Future of Games
SizeWise writes "After Intel's prominent work in ray tracing in the both the desktop and mobile spaces, many gamers might be thinking that the move to ray-tracing engines is inevitable. NVIDIA's Chief Scientist, Dr. David Kirk, thinks otherwise as revealed in this interview on rasterization and ray tracing. Kirk counters many of Intel's claims of ray tracing's superiority, such as the inherent benefit to polygon complexity, while pointing out areas where ray-tracing engines would falter, such as basic antialiasing. The interview concludes with discussions on mixing the two rendering technologies and whether NVIDIA hardware can efficiently handle ray tracing calculations as well."
A good way to mix both techniques is Relief Texture Mapping. It's a good way to get smooth surfaces thanks to the texture interpolation hardware, with no extra polygons.
IAAGD. My current paid project is to have both a raytracing module and a rasterizing module, and is designed to use them completely interchangeably. Personally, I'm a much bigger fan of raytracing than rasterization, and I'm going to a great deal of effort to make sure that it can be done efficiently with my engine.
-:sigma.SB
WARN
THERE IS ANOTHER SYSTEM
Talking about sprites, did you see the teaser video for King of Fighters XII? So. Fuckin'. Beautiful.
Circumcision is child abuse.
Actually, I don't think that's true at all. Raytracing, just like today's rasterizers, can greatly benefit from dedicated hardware for doing vector operations, geometry manipulation, and so forth. This is particularly true as raytracing benefits greatly from parallelization, and it would be far easier to build a dedicated card with a nice fat bus for shunting geometry and texture information between a large number of processing units than it would be to use a stock, general multicore processor which isn't really designed with those specific applications in mind.
Besides, the whole reason to have separate, specialized gear for doing things like audio/visual processing is to free up the main CPU for doing other things. Heck, we're even seeing specialized, third-party hardware for doing things like physics and AI calculations, not to mention accelerators for H.264 decoding, etc. As such, I see no reason to move graphics rendering back to the main CPU(s).
It takes a lot of work to get a 3D model to look as good as a 2D sprite. You gain more freedom and, as the amount of actions increase, can create new animations with as lot less hassle. But it remains very difficult to get a really good "animated" feel with 3D models which need to look good from all angles, and nowadays under all lighting conditions. 2D sprites, while laborious to create, invariably display precisely as the animator intended.
Games like Ratchet and Clank or Jak and Daxter pull this off well. It's not just down to character design allowing a certoony look. Apparently the games use a Naughty Dog technique whereby the models "bones", i.e. canonically fixed points, are themselves allowed warp and distort, meaning that the models do not simply consist of fixed points rotating on joints. Jax and Daxter exemplifies this best, with characters undergoing highly exaggerated warping and distortion both in game and in scripted scenes. Think of a Looney Toons double take. A game like Viewtiful Joe, which while cell shaded, did not look as good, simply because it did not use this effect. I believe Sly Cooper used a combination of the two styles.
Design is a far, far more important factor than graphics capability in improving a games overall look. Call of Duty 4, while technically impressive, looks fairly dry. This simply cannot be helped as you are playing as "realistic" soldiers in what are ordinary locals. Something like Unreal Tournament 3, which is actively using often exaggerated artistic designs, and where you fight in alien locals, is much more aesthetic.
Ray tracing "can" make games look better, but only slightly. If you want better looking games, you need better artistic design. I don't see how ray tracing delivers this in a measurably better way over other, less intensive techniques. Unless it's for something like weird water effects, I just can't see the advantage when you could be putting cycles to work on other things like movement in the background, more animated sprites or things like dust and spray.
May the Maths Be with you!
yet we're still clinging tenaciously to the old safety blanket of a mesh of tesselated triangles and projecting textures onto them.
Tessellation is also frequently used in ray-tracers as it makes things much simpler and faster.
Converting it all to mesh approximations of what was sculpted was, and still is, pretty much just a hack to get things to run at acceptable real-time speeds.
It also makes things much simpler for ray-tracers. Really. Intersecting a line with an arbitrarily curved surface is demanding, in terms of cycles and in terms of getting the calculation correct in the first place.
The article is right that ray-tracers must examine every poly, just like raster renderers. Ray-tracing is not, as some have said, O(ln N) where N is the number of primitives. The article's comments that aliasing is a big problem for ray tracing ignores decades of work in ray-tracing to overcome this problem. The article then goes on to talk about radiosity (although not naming it that) and it being even more computationally intensive and says rasterization is better because it can approximate these soft effects - well, so can ray-tracing. The rest of the article is similar... nothing is really *wrong* but I think it's not entirely unbiased either.
Either way I'd still like to get me a machine with one of the NVidia/ATI computation engines to play with though. :D
The tyrant will always find a pretext for his tyranny - Aesop
Current methods do not scale parallel. SLI does not give you 2x the resolution at the same framerate, or double the framerate at the same resolution. Same for any sort of quad SLI solution (two dual chip gfx cards, etc).
Ray tracing scales almost perfectly. The same processor with 4 cores will perform about 3.9x as well (pushed pixles per second, so either higher FPS or higher resolution, or a mix) as one with 1 core. This is why intel is pushing this.
What you may not realise is that NVIDIA sells a renderer/raytracer which uses the GPU for accelleration, targeted at the animation and VFX market.
They are not discounting ray-tracing. They are embracing it. And they know, from lots of their own R&D, that it's not going to be competitive in the real-time market at any point in the forseeable future.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
There used to be an interesting debate between Professer Philipp Slusallek of the University of Saarbruecken and chief scientist David Kirk of nVidia at GameStar.de. The original article has been taken down, but I found a slightly mangled version on the Wayback machine and I've cleaned it up a bit and put it up on my not-a-blog: link.
I'd appreciate a better translation of the German part of the text.