YOU MAY RECOGNISE the name Daniel Pohl from his raytraced Quake games and various talks surrounding those efforts. At GDC, the talk was familiar once again, and more progress is being made toward that glorious raycast future.
For those not in the know, there are two methods of drawing a picture, the common one is called rasterisation, and it is what you see in about 99.9% of games out there. The less common one is called raytracing, and it is much more accurate, but also vastly more computationally intensive.
Pohl wrote a version of Quake 3, later 4 as well, that used a raytraced engine instead of a rasteriser. Both methods have advantages and disadvantages, but in a situation bound by computational resources, rasterisation wins at the cost of pixel perfect quality.
The nice thing about Raytracing is that is is pixel perfect, what you see is what you see, or something to that effect. The problem is that for every pixel, you must trace a ray from your eye to the first polygon on the screen. If that point can draw a line to the nearest light, it is lit, if not, it is shadowed.
In the case of reflective surfaces, it then casts another ray at the right angle and colours the pixel it came from the correct fashion. Multiple bounces can require multiple pixels, and if you think about it, a 1024 * 1024 screen takes over a million initial rays. This is not a trivial number, but you can do it, and you can do the multiple reflections in a sane way. This is not always the case with rasterisation.
There are also some interesting effects that are hard to do if you are not raytracing, shadows tend to be the big problem here. Most game engines cry if you try to make them cast shadows on a stairway, but with raytracing, it is no problem. Same with refraction in semi-transparent surfaces. With raytracing, you just cast another ray at the angle specified by the substance's index of refraction.
Other than that, you can do a lot of other fun tweaks. Collision detection is another one, since you are casting rays that intersect with surfaces, you can do collision detection for essentially free with the code you already have.
Camera portals are another similar hack, hard to do but easy with rays. With raytracing, when a ray hits a portal, you just add an offset to it. As Pohl puts it, three lines of code. If you need to do pixel perfect recursion, portals in portals in portals in .... where was I? Oh yeah, in portals and more portals, it is the "same three lines of code". They were demonstrating 140 deep portal recursion with perfect accuracy, try that in the game Portal and watch your CPU melt.
In the end, we are not there yet. With a 16 core system, you can match what a mid-range GPU does now in terms of pixel pushing, but beat it on quality and effects. This won't cut for games yet, but there is much work to be done in optimisation, and Larrabee will change the landscape. µ
Never miss dinner again....
Your weekly round-up of Google news and rumours
So we're guessing that's the rest of your afternoon lost
CEO believes keeping them separate is what makes them work well