Quote:Original post by phantomus
I agree that all but the most trivial features of current 'real-time ray tracers' are either very slow or need hacks. However, there is a difference: In rasterization, many tricks are needed not because of performance, but because it's the only way to achieve the goal in the first place.
That's not exactly true... as I mentioned you can certainly rasterize one ray (1x1 "framebuffer) if you want to, and stuff like REYES-like rasterization blurs this line even a bit more. These are all "rasterization"-based techniques though and will produce the exact same results as ray tracing. Thus let me reiterate that the only important axis of comparison is speed for a given task. It just so happens that if you rays are incoherent, the scatter approach (rasterization) is slow compared to the sampling approach (ray tracing).
Quote:Original post by phantomus
ray packet traversal (breaks in recursive situations, so definitely a hack)
Ah but here's the rub... not only does it "break" (or rather, fall back on non-packet performance) in the recursive situations, it "breaks" in the incoherent situations. I hate to keep harping on this point, but the only reasonable distinction between modern, efficient ray tracing and rasterization is coherence of control flow and memory accesses.
Hell you can ray trace really well on a GPU (I'm qualified to say this having contributed to exactly such a product), and it's very efficient as long as the rays are relatively coherent. Incoherent rays cause control flow and memory access divergence which tanks performance on a wide-SIMD architecture (i.e. GPUs, and I hate to say, Larrabee too...). This is just a fundamental computational problem and it's not something that can be magically overcome by either rasterizers or ray tracers.
Anyways the point that I'm trying to make is that once you've used both rasterization and ray tracing together, and mixed and matched them in the same renderer, and played with which one to use to resolve specific queries, you start to see similar patterns in how they work. From a high level they may appear to be very different beasts, but they're really just different tools in the "rendering box", and not all that different at that.
In the end I've yet to see a compelling reason why to use ray tracing for coherent rays now or ever, and conversely I've yet to see a compelling reason to rasterize coherent rays. Thus the only discussion is really in the middle area of "what's coherent enough for rasterization to be efficient on a given architecture", and "what incoherent rays can be approximated well by a set of coherent rays".
And as an aside, I'm still not sure why people are so obsessed with ray traced shadows. At the same speed that they can be ray traced, I can easily get sub-pixel accuracy with a ridiculous amount of filtering out of rasterization/shadow maps, something which would take many, many rays and a lot of super-sampling to accomplish with ray traced shadows. The situation gets even worse for ray tracing with soft shadows, as rendering and accumulating many shadow maps of the light will give you "physically accurate" results that are completely the same as what you'd get with many shadow rays, and generally faster as well. The point is that shadow rays are generally pretty coherent, and thus handled efficiently by a rasterizer. I'd love to see an amazing real-time ray traced shadows implementation prove me wrong, but indeed the quality delta of what you can do with shadows in a given time slice has been getting even larger in favour of rasterization-based techniques in the past few years...
As a second aside, lets leave gameplay discussions completely out of this. They are entirely unrelated to graphics and are a resource-management decision that the game producers/publishers make. Our job as graphics people is to make available the best tools possible to the game designers so that they can realize their creative and artistic visions. If they decide to go with a simple art style, fantastic. If they want to realize their amazing game idea using realistic graphics, that's great too. If they want to make a game about looking through glass spheres at checkerboards, we'd damn well better be ready to do some ray tracing ;)