Real-time Raytracing For PC Games Almost A Reality
Vigile writes "Real-time raytracing has often been called the pinnacle of computer rendering for games but only recently has it been getting traction in the field. A German student, and now Intel employee, has been working on raytraced versions of the Quake 3 and Quake 4 game engines for years and is now using the power of Intel's development teams to push the technology further. With antialiasing implemented and anisotropic filtering close behind, they speculate that within two years the hardware will exist on the desktop to make 'game quality' raytracing graphics a reality."
Or is it? Simply means games will appear more eye-candy than they currently are. Gameplay will not change. EA will continue to use take last years sport game, through some new people into it, perhaps introduce some bug which makes it unusable and peddle it as The New Deluxe Edition. I wonder how many geometric objects it will be able to handle (and whether it handles transparancy with textures and patterns well) Having done a bit of raytracing I'm familiar with how quick things can bog down. It'll probably be a bit clunky at first, but get much better as horsepower and horsepower/dollar ratio improve.
There was some game I played on an Amiga (got that? A really old computer) where I raced around in an aircar zapping stuff (some bastard borrowed the game and I've never seen it since!) Very nicely rendered graphics, beautiful even, nearly looked ray-traced. Must have been about 15 years ago.
While I look forward to more realistic, or creative and beautiful gamescapes, do keep in mind -- we were all blown away by the first high quality animated films, now almost everything animated is rendered, raytraced, etc. and there's a lot of junk out there now. So this will be exciting for about 2 years then become "meh".
Lastly, they've got to get the motion down. Characters in games, including sports, look so damn wooden in their movement! That's where real improvement needs doing.
A feeling of having made the same mistake before: Deja Foobar
I grew up with video games where the blob of pixels barely resembles anything. The power of gameplay, lasting gameplay far outstrips graphics. Not that a little eye candy doesn't hurt. I guess the core problem is that nothing Intel produces can run time optimize "Lair" into "Tetris" or otherwise correct for this.
www.voiceofthehive.com - Beekeeping and Honeybees for those who don't.
I'm sure Pixar and other rendering houses will leverage this to keep production costs down and get videos out to market quicker. Then you have side-projects like the GPGPU, if this raw power can be harnessed for other applications it could be a boast for researchers.
I ran some raytracers and man, just getting a scene to render was a pixel by pixel affair, watching the image slowly update on the screen. It blows me away how yesterday's "holy shit this is awesome!" prerendered animation becomes today's game engine and tomorrow's "meh, what else have ya got?"
Youtube videos are still too low-res but I've seen some of the high-res renders of current games like Armed Assault. Wow, takes your breath way. The only shortcoming for realism at this point is they're still having trouble with destructable and deformable environments. When a tank comes bursting from the treeline, we need to see branches whipping back and forth.
World in Conflict has an amazing engine. Sadly, I hear the gameplay is just a boring rehash of the same poor-AI RTS games we've been playing for the last decade but wow, shiny graphics!
Kwisatz Haderach
Sell the spice to CHOAM
This Mahdi took Shaddam's Throne
...but Q4RT seems to have handicapped most of what makes the Doom 3 engine so impressive-looking to begin with. The reflection effects sure are nice, but it's a long way from making anything comparable to modern methods.
Sure is interesting, all the same.
Beyond the graphical advantages and disadvantages of raytraced gaming, it would obviate the need for advanced DirectX/OpenGL support (and GPUs--although you probably won't save any money since you'll need a quad-processor, many-core rig instead).
Without DirectX, there would be less tying games to Windows (or Vista). I don't think that DirectSound has nearly the same attraction, anyway. We'd probably seem more multiplatform releases.
I was a founder of Deep Productions, one of the Chicago's first rendering farms about 15 years ago. I recall having dozens of Pentium 60s (Were they called Pentium Pros back then?) with 512MB of RAM (if I remember correctly) running a variety of rendering programs (usually 3D Studio, but others based on clients needs). IIRC, a single raytraced frame took about 20 minutes. 2 dozen machines churning full speed were able to render approximately 60 fields per hour, or 1 second of animation in an hour.
I exited that market and Deep eventually moved out of that field entirely, but looking back, I can't believe we made the money that we made at the time. Now that ray tracing is getting closer to real time, it gives me a few minutes pause to realize how much technology has changed in ways that the AVERAGE consumer has no understanding of -- and doesn't need to. In the end, I'm glad that so many entrepreneurs take risks so that consumers needs (and yes, entertainment for some is a need) and wants are fulfilled, without those consumers even knowing the process necessary to get there.
"Please state the nature of the medical emergency!"
The first step to making a real hologram is the rendering and then the projection.
Right now we don't have good consumer examples of either. Pretty soon we'll have the rendering -- and then it's just a matter of time until we can do a REAL 3d projection and I can have my own personal Doctor.
Raytracing comes under a class of problems that are embarassingly parallel. Want to render 2 million(~1920x1020) pixels? Send them to 2 million processors(cores) simultaneously and get results back. This is possible because there is rendering each pixel is independent of rendering another. Note that all the data required(like textures, lights, etc.) should be available to all the processors, so SETI style high latency computation is out of the question.
What makes it interesting is that the gigahertz race is done with and has turned into a "core" race. Intel was already showcasing 80 cores on the same chip. A few cores dedicated to Phong shading algorithms and radiosity and the rest to ray tracing would simply overshadow the current raster rendering. Also, raytracing is mathematically elegant and simple compared to all the dirty tricks employed by current graphics technology so it should make programmers' lives easier(unlike the Cell processor which is a nightmare to code for).
This space for rent.
But I haven't seen anyone else doing it. I mean Mr. Pohl's work is awesome to look at and has even been covered here at slashdot before, but why isn't anyone else doing research into this field of real time ray tracing? I know it's young and all but it has to get more momentium before we will see it in games.
It's kinda like voxels, regardless of the technical merits of voxels, they never got enough momentum to really take off as a way to render graphics. That or tile based rendering like the way that the PowerVR (http://www.beyond3d.com/content/articles/38/) graphics chips did it. Both of these technologies probably have more potential then were realized by most people.
My personal hope is that with nVidia's CUDA and ATI's to the metal projects, we will see people writing engines that use all the strengths of the CPU and GPU together. Intel seems to be on this path as well, as they seem to want to integrate the GPU and CPU, though their aim is much different. A ray tracing engine that is optimized to use the graphics card would be possible in the future anbd offer even more speedup, as the current work is cpu only it seems.
Raytracing has no advantage over rasterizing for opaque surfaces. Rasterizers are faster there, since their performance is not tied directly to the screen resolution.
The advantages lie in refraction/reflection/shadows/translucency, which are painful to implement with rasterizers.
Thus, a hybrid seems to be the best idea. Rasterizer as default, with a special "shootray" instruction in the pixel shader.
This sig does not contain any SCO code.
Improvements in digital eyelash rendering promise to revolutionize gaming.
And to the above posts bemoaning the focus on graphics over gameplay, remember if they get a good real-time raytracing system in place then that frees the dev team up quite a bit. No longer having to work so hard on faking proper lighting, they can then focus on the more important things like gameplay/AI/physics.
Most people who pine for better game play are not looking hard enough. Generally they suffer form a severe case of nostalgia. Back int he bad old days for each Super Mario brothers or Missile command there were 4 ET's, Coeleco smurfs or Custer's Revenge. You just don't remember them. The past wasn't some golden age where game play trumps graphics. IT was a place where event he brilliant games had significant control issues, where top shelf games wouldn't been be considered tier 3 dreck today. Take a much maligned games liek Lair, is the basic controls any worse then say NARC for the NES? but NARC was a "good" game for it's time while Lair is a maligned as crap. I haven't played lair but bad controls are no longer acceptable.
There is game play innovation today, and it doesn't have to be independent of pretty graphics. In fact the people responsible for the game play aren't the ones responsible for innovative game play. One does not diminish the other. Good game play is also not the same as innovative game play. They coincide for instance in games like Katamari damacy but often innovation ~= unpolished ~= crap. What we're all looking for is polished game play. It never changes that around 80% of everything will be considered crap. So just rmeember that back int he day 80% of everything was crap too but you just don't remember. So they can ray trace graphics, thats awesome. Will it diminish gameplay.. not really you'll still have 80/20 rule. It's not an indication that things were better then before only that your brain works in a funny way.
"There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy."
Here's a question for the forum. Has anyone found a way to use present GPU's to speed up a voxel engine?
I wonder if this is still relevant.
Don't get me wrong, I love raytracers, but what once was their exclusive domain (reflections, shadows,...) has been done in a "fake" but very convincing way since the few latest generations of 3D video cards. What's left? True refraction? True curved surfaces? Is it that important? I tend to side with the "give me gameplay" crowd here.
Realtime caustics and global illumination, on the other hand...
My website
Right now I have a image of people rushing over to a smoking server as it seems the site has gone down. I didn't get to finish reading the article either. :(
"I exited that market and Deep eventually moved out of that field entirely, but looking back, I can't believe we made the money that we made at the time. Now that ray tracing is getting closer to real time, it gives me a few minutes pause to realize how much technology has changed in ways that the AVERAGE consumer has no understanding of -- and doesn't need to. In the end, I'm glad that so many entrepreneurs take risks so that consumers needs (and yes, entertainment for some is a need) and wants are fulfilled, without those consumers even knowing the process necessary to get there."
Almost makes you want to run out and invest in Movies and Music, doesn't it?
they speculate that within two years the hardware will exist on the desktop to make 'game quality' raytracing graphics a reality."
I don't think so. Within 2 years GPU power will have increased a lot as well, and polygonal rendering already approaches raytracing quality right now, with anisotropic filtering/antialiasing, very high polygon counts, very high-res textures with programmable shading techniques, etc. Stuff like photorealistic shadows, glass effects, refraction etc, its all very nice, but for fast-moving scenes good approximations work equally well as photorealistic raytracing. Another issue is with games that actually *want* to render visuals that are not photorealistic. I can imagine simulating surrealistic visuals using a raytracer is even harder than simulating photorealistic visuals using polygonal rendering. Not to mention effects like smoke/fire/light emitting particles etc, that are very difficult to raytrace efficiently because they appear like they do in real life because of diffuse light, dispersion, etc.
Other problems I see with raytraced games are the exponential increase of processing with higher resolutions or higher light source counts, the fact that poor raytracing actually looks worse on higher resolutions, the increased production and programming costs and the fact that graphics companies will not like seeing the investments made in their current GPU architectures melt away.
I don't see why most slashdotter's think that if a company does decent graphics they cannot have good gameplay. Sure there is a lot of crap games that come out but this was true in the past too. Graphics have been going up but I can't say that gameplay has necessarily been going down completely. There were plenty of genesis/nintendo games I simply didn't find to be fun. In any case improved graphics in the last ten years has allowed for more diverse, immersing, and heart wrenching games.
PS2+ games are the same but with a slight increase in learning curve (most older games you can just pickup immediately and it was a matter of skill and timing mastery to complete, newer systems usually employ more complicated but still fun gameplay). It has great games and crappy games, just all the graphics are 3d and generally better looking. Some dev's just don't understand how to make an enjoyable game.
Also better graphics allows for different games and more complex games. Imagine if you were limited to the graphics of let's say early tetris/pac-man (i wonder why we only remember a handful of games from the era =P hint hint*) or even more primitive like the first version of pong. It's safe to say if we were limited to the most basic levels of gaming for the last 30 years the market wouldn't be as large, appealing, or diverse as it is now.
Racing simulator's, cinematic rpgs, cinematic fps's (or any fps for that matter), simply wouldn't be possible. With pong lvl graphics yo'd be limited to one dot as a target and maybe different colored squares to target. Simply not anywhere near as immersive. Imagine when Resident Evil started the survival horror genre. I remember playing it at night on my PC (RE: 2) and just being completely freaking spooked during certain parts. I don't think ultra basic midi music and little blurbs of pixels could ever accomplish that.
Hmmm... Pie...
...what passes for an "Interesting" comment here.
For those of you who pointed out that this won't improve gameplay are merely pointing out the obvious. This will allow for some rendering techniques to be done a lot easier than they are now (shadows, reflection, etc). I guess one can argue that this frees up the developer to work on gameplay AND a more immersive world in some genres equals enhanced gameplay (first person shooters come to mind).
It also represents a significant shift in the direction of hardware seeing as todays video cards are designed for the rasterization of triangles.
When the game industry shifted from 2D to 3D in many ways it was a step backwards in quality and gameplay. But it did allow for certain gametypes and effects that were previously impossible. The quality of 2D sprites was leaps and bounds ahead of the simple textures being used in the early 90s. Just like then these first raytraced games will make comprises but as hardware is developed and the technique is refined we'll soon seen parity between raytraced games and rasterized games and ultimately we'll see raytraced games pull ahead. It's a cycle we've been through before and take for granted with modern 3D accelerators and they performance they provide.
I remember fifteen years ago doing VR research work and people joking about real-time raytracing for games and VR. Computers are massively faster now than they were then. Why aren't we doing it at this point?
Resolutions have gone up enormously. Polygon count has gone up enormously. If we talk the sort of quality scenes we were rendering in 1993, it was only a few more years before it was possible to do them real-time... but at that point models were 10x more complicated and you weren't rendering for 320x240, you were looking at 640x480. Now we're doing millions of polygons at HD resolutions.
As long as people want more polygons, more texture detail, and higher resolutions, realtime raytracing will never be a production reality. Better hardware, faster CPUs, etc are all consumed quickly to handle richer environments and then suddenly there isn't overhead for raytracing anymore.
I don't care at all how the video card decides something needs to be rendered, so long as the results look good. I'm not concerned with the "correctness" of the calculations, only the results. I'd be all for a raytracing card if they found a way to make that work faster with less silicon than the existing rasterization systems. However, it seems we've really done a pretty good job of figuring out what can be quickly accelerated in silicon.
I'd much rather have good, fast, fake stuff than something that is done "right". As an example I actually generally like the graphics in UT2004 better than Doom 3. Despite Doom having a more "correct" lighting engine (all light comes from a source in game, there's no magic global lights) I find that the illusion breaks down too easy. Shadows are too hard, textures get too unrealistic when you get next to them (even in ultra mode) and so on. Now a lot of what UT2004 does to fight that is "faking" it. For example the whole detail texture thing. You get close enough to something, it fades in another texture layer over top that adds grit, imperfections, etc to what you are looking at. While that's "faked" it looks damn good and helps keep the illusion.
So I'm with you on the "give me gameplay". If they can make hardware that does raytracing as fast or faster than what we have and if it looks as good or better, great, I'm all for that. However I'm not at all interested in something that ends up being worse visually, either because it is slower or less detailed or whatever, just in the name of doing it more "correct".
Would this make any sense?
"Where are we on the scale."
People sometimes get a little too giddy talking about Big O notation. Yes, something that scales logarithmicly rather than linearly will eventually be faster, but it kinda depends on where you are now if that will happen any time soon and thus is worth worrying about. To use arbitrary units, suppose at an 'n' of 1000 is the intersection point between the line for rasterization and the curve for ray tracing. So when we pass 1000, it starts to be a case that ray tracing is more worthwhile. Now suppose that current generation of graphics is 100, and it grows at a rate of 2 per year. Ya... Ok, not going to be worrying about that any time soon.
I think that was his point is that just saying "But it's O(log n)!" doesn't mean it is necessarily better at this point.
Also there is the silicon problem to be considered. We don't do our graphics on general purpose processors, we do them on highly specialized DSPs that actually have only recently gained turning completeness (and aren't very good at it, they are really slow at branching among other things). The graphics we see today are possible only because we can make a special purpose processor that can accelerate them very efficiently. Can the same be done for raytracing? I don't know. I mean I'm sure it is possible to an extent, especially since it is a very parallel problem, but that doesn't mean that we will be able to as efficiently accelerate it.
So while it is appreciated that at some point, on equal general purpose hardware, ray tracing is more efficient that isn't the question. The question is What is that point (and how soon will we reach it) and does that carry over to the special purpose graphics hardware?
"Hey look, the photons accurately react with the environment according to current laws of physics! Finally they figured out how to make games fun!"
:-\
The obsession with graphics is ruining the gaming industry. Compare the PS3's sales to the Wii's for evidence.
People are already starting to use graphics hardware to solve more general computations, even with all their highly specific rasterization functionality.
so.. ray tracing is in many ways easier than current techniques, meaning the hardware to do it is more generalized, which has two benefits: it can be highly parallelized (ie, easily makes use of many cores, which is now the trend in CPUs as well) and it would likely result in GPU's that are even more usefull for general computation. This would expand the possible market for GPU's, an incentive for the graphics guys.
Imagine the new generation of GPU's that are just multiple core jobs (not sure, are they doing this already?). I think the day of the separate GPU is getting close to ending, just like the external FPU. I wont be long before they are integrated into CPU's and will be used for both graphics rendering or other things.
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
that this will stimulate. Should be pretty cool. On a side note, what do Halo and the source engine use now if not raytracing? It seems like if they're not raytracing already it's a pretty close approximation.
I have never understood the race to photorealism in games. Perhaps it's for those back-of-box screenshots ("from a version you'll never own"). Better graphics are nice, but they swap the the player's imagination for visual detail. Games companies do this, diverting programming resources from what a game plays like to what a game looks like, without realising that there's a "+5, imagination" gameplay boost that comes from believing that the collection of bad sprites on screen is humanity's last chance for survival against some alien creatures. I think that the greatest advance in the last decade for immersion is the use of surround speakers, not better graphics.
Intel Real-Time Ray Tracing: http://www.youtube.com/watch?v=blfxI1cVOzU
JUST IN TIME FOR MADDEN 2009! YES!
(for the impaired, insert sarcasm above and read between the lines)
Raytracing is useful where faster algorithms simply don't exist to "fake" what you can do with raytracing at the quality you want ... unfortunately for realtime there is not a lot which you can't "fake" better without raytracing (this isn't just about hardware, there is a good reason so many of the offline rendering packages still have scan conversion to accelerate rendering).
... raytracing is a little more physically accurate than most scan conversion based shadow, refraction and reflection algorithms (although it's completely the same for first hits, including the theoretical complexity). For lighting in general it needs hacks and fakery just as badly though. Forwards raytracing from the light sources to the camera is more accurate than normal raytracing, and wave tracing (quantum mechanics) is even more accurate than that. In the end all practical rendering is about fakery and hacks, as true for raytracing as it is for anything else.
PS. of course it's all fake
One thing I haven't seen in this discussion or TFA -- and maybe I'm missing something because I haven't thought seriously about raytracing or rasterization since my undergrad graphics class -- is the possibility of getting away from polygons. With rasterization, there are specific technical reasons why everything's done in triangles. As I understand it, many or most of these reasons don't necessarily apply to raytracing. A raytracing engine can happily model a perfect sphere and render it as precisely as the pixel grid allows.
That's just the beginning -- constructive geometry allows the definition of complex shapes from primitives like spheres, cylinders, etc. Set operations such as union, intersection, and difference allow "sculpting." Those who have fooled around with Second Life's "prims" will be familiar with a simple version of this, but of course SL's prims are still rendered the old fashioned way and are pretty limited in how they can be combined (IIRC, you can really only glue stuff together, not make holes and stuff.
If we suddenly don't have to define our world geometry in terms of triangles anymore, I'd expect there to be far-reaching impacts in the way we think about defining 3D worlds. There may be some very interesting complex shapes that would be far too expensive to model with triangles, but which have compact mathematical representations and are easy to intersect with a ray. We'll just have to see, I guess.
I have the PC, C-64 and Amiga versions of Pirates!, and still enjoy them greatly. Haven't played the new one. It might be really good, I can't say. Not that I don't enjoy new games (Halo, Splinter Cell) but if I wanted pretty I'd load up a slide show. For a game it's about fun, lasting fun preferrably.
www.voiceofthehive.com - Beekeeping and Honeybees for those who don't.
This was featured in the Keynote at Intel Developer Forum in San Francisco yesterday morning
--
google is/is not your friend
For meshes which don't have vertex density higher than pixel density hierarchical occlusion culling will give you the same complexity as raytracing (you already have to use hierarchical acceleration structures for raytracing too to get to O(log n) so this is a fair comparison).
For the Boeing model this would still leave you with O(n) (where n is the visible geometry). That is not to say you could not get it lower though, it's just that in practice we aren't too interested in highly aliased rendering of overly dense meshes. You could add hierarchical irrelevancy culling which simply ignored all geometry in bounding volumes which fall in between samples. That way you would end up with the exact same complexity as raytracing.
For movies the fastest renderer for complex scenes is Pixar's Renderman. It uses and has always used polygon rasterization. It does not raytrace, it is highly respected in the industry and could be called the 'gold standard' for production rendering. This should be a clue as to how successful ray tracing will be in the future.
The main issues with raytracing are the memory access patterns for anything that raytracing is good at and the retained mode of the scene (you need a copy of it). It's main advantage is it makes certain features easier to code, it does not necessarily make them better or faster.
Who needs more realistic graphics? I wish these guys would work harder on getting the non-photorealistic sketch mods working better with quake 3 and 4. Doom 3 would be nice as well.
Seth
$5 / month hosted VPS on linux = awesome!
Aren't caustics only possible with photon mapping?
The Wikipedia article about raytracing mentions that it is not necessarily photo realistic and that photon mapping gives better results but takes longer to compute...
I always wonder why so many people demand raytracing and not photon mapping.
Great real time Ray tracing.... Wonderful. The problem is it will still be slower than the current hardware methods. It just takes more power, and you also need to store the entire scene ram.
The ram and processor requirements will make the cards very expensive.
I would wager that Nvidia and ATI are somewhat concerned about ray tracing finally becoming a viable interactive 3D graphics technology. Ray tracing is inherently much simpler than rasterization and can be accelerated simply by adding more CPU cores, memory, and faster clocks.
Intel is all over this because this allows them to compete with the major GPU vendors without developing expensive and highly complex GPU hardware and drivers. They just need to throw more cores into the system, and they're getting good at that.
APIs such as OpenGL and D3D are also hugely encumbered by the current rasterization model for 3D graphics. A ray tracing API doesn't need geometry broken down into triangles and vertices; it can work right off of high-level mathematical descriptions of surfaces such as spheres and NURBS. The only pieces relevant to ray tracing in an API such as OpenGL are the viewing model and the frame buffer management mechanisms.
The only role for a GPU in such a system is to accelerate the compositing of image sources for window managers and things like font glyphs. I suspect we'll see most of the 3D functions stripped out of future GPUs once they can be replaced by generic CPU cores running ray tracing algorithms.
Just remember that we are currently experiencing a market that supports three separate consoles and I'd bet at least 5% of that market own all 3 systems. Of the current gen systems, I own a Wii and an XBOX 360. The out of box experience with the revolutionary controls of the Wii still pales compared to the suspension of disbelief I feel when I play Bioshock or Skate. We are just about to come out on the other side of the uncanny valley with this generation of games. The next one will surely be beyond the rendering quality used for the Final Fantasy Spirit Within movie. Mass Effect already looks damn close to an FMV game in realism. Good graphics push very hard wired emotional buttons in my brain that make me really want to facilitate their existence as best I can, to enter into a world that is believable AND fun to explore. Saying gameplay is far more important than graphics is just being rhetorical. Of course it's important for games to have great gameplay, but I say it's almost equally important that we edge closer to immersion into other worlds.
I don't see much benefit between current rasterized graphics and Whitted-style raytracing (direct lighting and shadows with single bounce reflection and refraction). This is currently what the real-time raytracing community seems to be promoting. Truthfully, the images are not convincingly better than a well designed rasterizer. Well designed GPU shaders should be able to mimic the same features such that there is little perceptual difference between the two - especially at 40-60 FPS.
There are other problems to consider. For instance, as screen resolution grows, the running time of a ray tracer will increase. There is a general belief in the ray tracing community that the number of cores will increase faster than the size of the screen. This is still a bit of a gamble, in my opinion. Formats for consoles are relatively tame, but PC gaming resolutions are continuing to increase - or Intel could decide that manufacturing 16 core machines is not feasible or wanted by the average consumer. Another point is that a typical anti-aliased raytracer will super sample. This obviously slows running time.
Tracing ray packets has shown to greatly speedup rendering time. However, the caveat with ray packets is such that all ray data is compact and can pack neatly within SSE registers. Increasing packet bloat with added techniques like ray differentials is going to impact performance with possible severe consequences.
I am a little doubtful on the adoption of Whitted-style raytracing for games. I think when Cook-style raytracing (fuzzy reflections, depth of field, motion blur, area lights) with one-bounce indirect lighting can be incorporated into real-time raytracing there will be a clear demand for a switch. Even then, GPU hacks are sometimes preferred. For instance, raytracing-driven animation studios use GPU depth-of-field rather than raytraced depth-of-field for intuitive (and interactive) control.
I'm interested in knowing where GPUs are going. We are already at rendering complexity of one polygon per pixel. I think we will see some improvements which mimic the REYES pipeline before the number of CPU cores makes interactive raytracing feasible. I believe polygon dicing, decoupling shading from pixel samples, and displacement mapping are next on the agenda for serious GPU development. If these features are released before interactive raytracing, I think it will be hard for raytracing to keep up.
The only way that starts to matter is if the density of the vertices when projected to the screen starts to significantly exceed the sample density on average (if there are not objects to ignore there is no potential speed up). In practice we just aren't there yet, at least not for games which drive 3D technology, so this theoretical advantage isn't relevant for the moment.
... but in the end you can use the same tricks as raytracing uses to ignore irrelevant geometry. Rasterization switched away from rendering everything to rendering everything visible from the camera, ie. using occlusion culling, if it needs to it can switch away from rendering everything visible from the camera to only rendering everything relevant (ie. actually sampled).
... since it can do them better. When Global Illumination becomes standard raytracing will become standard, simply because what rasterization is good at won't take up enough time to justify special handling.
It might get relevant in the future
It depends on the percentage of time taken up by first hits and simple shadowing, as long as those two still take up a large percentage of the time rasterization will stick around
Or at least they won't be replaced by simple geometric solids, even with constructive geometry they just aren't expressive enough 99% of the time. Nice for CAD/CAM, useless for modeling the real world. The kind of curved surfaces suited for describing natural surfaces can't be analytically intersected (so in the end you usually subdivide them before intersecting them, you guess what you subdivide them into).
Intel is not crazy, they would do the same, but they are not interested in helping AMD/Nvidia GPU sales. So they continue propagating wrong technique.
The work being done here is, essentially, taking existing 3D game content and rendering it using a raytracer. One of the benefits of raytracing is that it can render real curved surfaces, including NURBS and volumetric surfaces: without taking advantage of this aspect of the technology, would we really see much visual benefit? Hard-edged shadows are already possible with rasterizers, and a lot of the potential for visual quality in refractive surfaces (glass) would be lost without real curves: it wouldn't necessarily look much better than the existing approximations. It might just be that what we're looking at here is effectively "programmer art", but hard-edged shadows, flat textured surfaces and overly-shiny metallic objects can look worse than current rasterized graphics. Who, when creating a modern computer game, thinks "I wish I could render a perfect sphere here" or "A reflective torus would look brilliant in the centre of this room"? Mathematically and algorithmically pleasing or not, plastic-y graphics won't cut it in the real world.
We won't be getting away from polygons any time soon because realism comes less from simulating perfect surfaces, and more from *imperfect* surfaces. Note how much work is being done to increase the level of imperfections in our graphics: higher detail textures, bump mapping, increased polygon counts specifically aimed at removing the need for large flat areas.
3D modellers don't create mathematically perfect shapes. Since we won't be going away from polygons any time soon, and the visual benefits of raytracing have largely been simulated well enough already, it all comes down to whether or not the *performance* of raytracing will eventually outstrip rasterizers, since the *quality* issue is almost a moot point. Now, show me realtime path-tracing or global illumination and I'll be more convinced.
Not that I don't like raytracers. I've written one, and spent my final year at uni optimising it (just for a masters, not for a doctorate, so it wasn't exactly ground-breaking work). Just not convinced they're the right tool for the job, seeing as in their purest form, they've already been supplanted.
This is true of traditional rastersization algorithms, as well (though the parallelism isn't quite so obvious since its generally handled by specialized hardware rather than normal CPUs). Ray tracers are actually somewhat harder to parallelize because they aren't memory parallel (not a problem for shared memory multi-core machines, but it is a big deal if you want to model enormous scenes and share the computation across multiple computers).
More important (and not mentioned in the article) is that ray tracing scales logarithmically with the amount of geometry, not linearly.
Why am I so tempted to apply this technology to nethack?
I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
What the impact on the movie industry would be...
If we can get to the point of real-time ray-tracing then the movie industry will have to really push even farther beyond that. What would be next? I mean Pixar, Dreamworks, etc. already do an incredible job with the realism. In fact for a couple years (at least) they have had to scale back to give it a more "cartoon" feel otherwise they could push it to a very good level of realism that sharp eyes could catch but most wouldn't.
I guess my real question is what's next for the movie industry? What would they have to do to exceed the game industry?
One of the benefits of raytracing is that it can render real curved surfaces, including NURBS and volumetric surfaces: without taking advantage of this aspect of the technology, would we really see much visual benefit?
Sure. Even without the obvious things you're pooh-poohing like reflection and refraction (and raytracing can produce good results for these on curved surfaces), you get universal shadowing (including self-shadowing, the lack of which really stands out for me in even the best rasterized images), far better shading and bump-mapping, and better illumination... and reduced development costs because so many things that are handcrafted now fall out of the technology.
Look at the second image. Look at the guy in the background. Look how his body beneath the gun is shadowed. You're never going to get that kind of effect from rasterizing. And that makes things look a lot more "plasticky" to me than sharp edged shadows do.
Sometimes I think he's right. While I can see the merits of high definition and DTS, I've also seen plenty of films that seem to rely entirely on CGI and pretty graphics but have a weak plot (and plenty of games too for that matter). I hope this isn't going to make the developers spend even more time making textures, models and scenes just because you can see them so clearly.
I think RTRT may be a pretty serious goal for Intel. Put this article together with a recent post/speculation about the raytracing capabilities of their upcoming GPU link [arstechnica.com] you could make a case that they are trying to move the graphics market towards ray tracing. Kinda makes Intel's two year estimate a little more interesting.
The kind of hardware needed to run raytracing really fast is well understood, and it doesn't really look like today's GPUs or like intel's CPUs, though even today you can get better results if you take advantage of the GPU as well. If ATI or nVidia doesn't come up with a hardware raytracing GPU someone else will. It's a pity that Intel doesn't seem to be interested in working on that angle.
Here's an article I've dug out of the Wayback machine and cleaned up, Raytracing vs Rasterization. Phillip Slusallek's home page is here, and you can follow that to SaarCOR and OpenRT. They built a prototype RPU (R for raytracing) that at 66 MHz was comparable in performance to a 2.6 GHz P4. The video is pretty impressive, considering how slow the hardware is.
- O(log n) in the number of objects in the scene
- O(n) in the number of primary rays, generally some multiple of the number of pixels on the screen (though it might be a bit less if you're using MLRTA)
- O(n) in the number of lights (though there may be some shortcuts) if shadow rays tests dominate
- O(something big) if there's a lot of reflective and/or refractive objects and you don't do anything to mitigate the rampant recursion
- O(n log n) in the number of photons, if you're using photon mapping
- O(n log n) in the number of objects that moved since the last time you rebuilt the acceleration structure
That first one was what the original post was refering to. (Tracing a single ray is O(n log n). Tracing a pixel involves sending one or more rays and a shadow ray for each light for each primary ray that hit an object. Tracing a whole image involves tracing a lot of pixels. If the number of pixels and the number of lights are assumed to be a constant, they drop out of the big O equation. It's a very big constant, though, and that's one reason why ray tracers are so slow. However, once you get enough CPU to compensate for that large constant, the algorithm starts running pretty fast, and it doesn't slow down much at all when you throw lots of geometry at it.Ray-tracing has been around forever, people have implemented dedicated ray-tracing hardware in the past, and yet it's never managed to replace other rasterization methods for a few key reasons:
#1: It makes terrible use of memory bandwidth. Rays diverge very quickly from most detailed surfaces, so branching etc. eat up all of your potential cache performance. A more efficient rasterizer outperforms a recursive ray-tracer even when generating lots of lookup texturemaps to achieve the same effects (reflection/refraction/shadows etc.).
#2: It doesn't handle radiosity very well. Standard rasterizers can approximate radiosity quite well:
http://fantasylab.com/
http://www.geomerics.com/
#3: By the time you fix some of the performance issues with ray-tracing, the hardware ends up being more complicated and byzantine than even the more twisted modern graphics architectures (tilers, heirarchical depth buffers, etc), and efficiency still isn't as high.
#4: The O(log n) vs O(n) argument is wrong since it assumes the entire scene is fed to a standard rasterizer. In fact, frustum culling at the application level is also O(log n) and tends to be much more cache-friendly since all of the non-visible geometry outside the frustum (which is the majority of the total geometry for most real applications) can be tested exactly once per frame instead of once per ray.
It's silly to call ray-tracing the "next big thing". The fact is that ray-tracing is already being used where appropriate via techniques such as shadow mapping, cube-mapping, volumetric rendering etc. It will never be the end-all be-all rendering algorithm, and after having designed graphics pipelines for more than a decade I doubt it ever be competitive with what you could achieve using the same resources in other ways.
Just a few things where proper raytracing could be useful:
Puzzle/quest games: Aligning mirrors to solve puzzles. Shadows to hide objects. The cliche but fun "align X and watch the direction of the shadow at midnight" etc trick
FPS: Reflection of the guy behind you, turn and shoot!
Water/Fire: Not sure, but it might make at least the former a little easier to render in realism. Realistic water isn't 100% necessary, but it could be neat to allow as camouflage or other such things
Blinding: Use of a bright light + reflection for a blinding effect. Quite useful for FPS and other games. Or how about the telltale glint of light off a sniper scope?
Yes, in many cases it might just be eye-candy, but realistic reflection and shadow that may be offered by ray-tracing could definitely add to the immersiveness, realism, complexity, and even fun of a game environment.
...I see some interesting gameplay possibilities coming out of this. In a FPS for instance, how about having the pleasure of noticing and killing a sneaky bastard that was behind you, thanks to seeing "something moving" reflected in the doorknob? Or how about the difficulties of having your whole team paying attention on where light is coming from, so that your shadows don't give up your location? Sounds like fun to me, even if a little far from happening.
Radiosity rendered images look far better than those which are merely raytraced. I wish we would take a quantum leap here, and get straight to the good stuff. Raytraced images still look plastic and unreal. Maybe the algorithms are more elegant than all the hacks used today. That's really only of interest to developers; why should a consumer care? Are we about to witness a plethora of water world games full of reflections just to show off the slight advantage ray tracing has over current technology? Waterworld, the game! Great. Radiosity rendering looks awesome. That's what really matters.
While I am not sure that realtime raytracing will really be the next big thing, I think there are unintended consequences you overwatched.
Today, most CG effects must be hard coded, using tricks, shaders, complex modeling techniques, multiple passes, etc... In the raytracing world, as you are aware, the engine is easier to use, and I would also say, easier to code. It is also very easy to parallelize (so a specialized card could bring HUGE performance gains) and require few modeling tweaking compared to the current T&L world. In a raytracer, shadows (including self-projecting), reflections, refractions, bump mapping, displacement mapping, etc... are an integral part of the renderer, they are not a lot of different modules stacked on top of each other. Bringing down the complexity of the rendering engine hopefully frees more resources to work on other parts of the game.
The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
An idea I had a while ago was to mix rasterization and ray tracing to get the benefits of both. Rasterize the entire scene into simple color values, but also calculate intersection points and reflection, refraction, and lighting vertices during the rasterization process. That would hopefully benefit from data locality to generate all the initial ray intersections faster than the traditional approach of tracing one ray at a time. It looks like other people have actually published papers about doing that with current GPUs already and it seems to work.
It seems like large surface reflections and refractions could also benefit from an initial raster step before completing the ray tracing process. I think even in the case of global illumination most of the raster pipeline would still be useful for computing portions of the scene. I'd be interested if you have any more information on the topic since it looks like you've researched more than I have.
There was a video and an article some time ago about 3 PS3s in parallel being used to render a scene by raytracing it. It was pretty nice, they could rotate around the scene and all, it was uhh, realtime I think the word is.
Ray tracing is very CPU parallel, I don't dispute that. By "memory parallel" I mean that if you want to render something on two separate computers, you have to have a complete copy of the 3-d model on both computers. With rasterization algorithms, you can split up the work amongst a bunch of machines, and each one only needs one part of the model. That way, you can render things that wouldn't fit into the memory of a single machine. This isn't an issue for games, but for rendering scenes for movies it is a big deal. Take a look at the 2006 symposium on interactive raytracing keynote.
Enter license babel. The Creative Commons Attribution License has a provision in section 4(a) that allows an author (here "Alice") of a covered work to disown the work by requiring downstream distributors to delete Alice's copyright notice upon request from Alice. This clause is incompatible with the major GNU licenses (GPL, LGPL, GFDL), which require preservation of upstream copyright notices. So I don't see an easy way to include Creative Commons licensed audiovisual material in, say, a free computer game unless all the code libraries that the game uses are under a permissive license.
The "you need a good lawyer" is needed to interpret what constitutes an "aggregate" under the GPL. Imagine a computer that can execute only a single, monolithic program from a removable flash memory chip: it has just enough of a BIOS to initialize the memory controller, turn the screen on, and verify the checksum of the program on the chip. I take two works: a computer program under one license, and an archive containing images, maps, sound effects, music, and video clips under another incompatible license. Neither work is very useful on its own. If I combine the program and the archive into a single system image in such a way that each of the two works can be independently replaced within the system image, are the two works "combined [] such as to form a larger program" under the GPL's definition of "aggregate"? The GPL FAQ explains that this was left vague on purpose: "This is a legal question, which ultimately judges will decide."
I understand your technical points, but GPL'ed creative artworks work a bit differently than programs, in practical terms.
If I write a program and release it under the GPL, it's because I want a copy of modifications, and the ability to re-use and re-modify them. If a company uses my program, makes changes, and doesn't make the source available, I as a developer will ultimately have to sue them, when push comes to shove -- provided I ever figure out that they're using my program. But, they might just use it internally, and I would have no way of knowing they are breaking the agreement.
If I create, say, a comic called The Adventures of GNU and SuperTux, and release it under an open source license, Disney is free to make a movie of those characters. "GNU and SuperTux in Space", for example. I can then make a comic version of that movie, or even re-edit or 'mash-up' the film. If Disney is going to violate my GPL contract, there's a good chance I'm going to know about it, because ultimately creative work made by corporations is for public consumption. I stand a greater chance of coming to learn of the work than I do of a GPL-violating program only used internally in a company. Sure, Disney might make a training film with my characters for internal use, but what do I care? Do I want to make the comic book version of that? No. Technically it's a violation, but as a practical matter, the creator of GPL art is not really concerned about internal-use-only art.
Furthermore, once I'm aware of the movie Disney made of my characters, the cat's out of the bag. It's not like where a company is using GPL'ed code internally -- the movie is released for public consumption. I stand a good chance of seeing the modifications, and then I can make my own.
And when Disney comes to sue me for the comic book version of 'their' movie, that is in fact the opposite case of the programmer suing the company violating the GPL. Now it will be up to Disney to say what they were doing with my characters in the first place, and the question of what an aggregate program is never really comes up.
Computers are useless. They can only give you answers.
-- Pablo Picasso
What you say is all well and good for comics. But this article is about PC video games. So what license should I use for a Free video game that I am developing?