Students Evaluate Ray Tracing From Developers' Side
Vigile writes "Much has been said about ray tracing for gaming in recent weeks: luminaries like John Carmack, Cevat Yerli and NVIDIA's David Kirk have already placed their flags in the ground but what about developers that have actually worked on fully ray traced games? PC Perspective discusses the benefits and problems in art creation, programming and design on a ray traced game engine with a group of students working on two separate projects. These are not AAA-class titles but they do offer some great insights for anyone considering the ray tracing and rasterization debate."
I know this may not be a popular question, but what is the point with raytracing for games? We're finally getting to a level of technology with rasterization where we're producing visuals at a level which is "Good Enough" (or better) for practically every genre. Do we really need to get on the hardware treadmill for the next 10 years to get to a similar technology level to get slightly more realistic lighting and reflections?
Yes, we do because everything that we do currently is just a hackish like system where we are using programing tricks and other methods to get it to look realistic. Instead of a video card you would just need a faster cpu, which if we base off of moore's law won't be much longer.
Raytracing is an "embarrassingly parallel" task that should scale well as desktop computers execute more and more code in parallel. Can the same be said about rasterizing?
"...ray tracing and rasterization debate"
I don't think there is any debate at all, RayTracing is by far superior, there is just the problem of computing power.
Anyone (perhaps ask the modelers for the games) who deals with 3D software, knows the benefits of RayTracing for simulating reality (Reflections, Ambient Occlusion, Sub-Surface Scattering, etc)
And once computing power reaches that level it will even speed up the process of creating games because you can let the RayTracing take care of shadows, reflections, highlights, etc instead of manually mapping them.
Take a look at anything LightWave, Maya, 3Dsmax, Softimage, Blender, etc spits out of its render engines, or visual effects in recent movies... granted, that's (as stated a few times in the discussion) years away... but, I don't think anyone is arguing against RayTracing.
(-1 Bastard) ...but...whatever, ive been waiting for real-time RayTracing for years even just within my own 3D applications, nevermind games...
Realistic lighting allows you to use those clever algorithms in your head that you've learned over the past 20+ years in the real world, so when you see a flicker of a reflection or a change in the shadows in a darkened tunnel you can turn and blast the damn camper on the opposite rooftop before he nails you with his sniper rifle.
Actually, yes ...
One of the main reasons that we now have 800 stream processors on fancy graphics cards is that you can split the most costly portions of advanced rasterization into hundreds of independant processes.
Instead of a video card you would just need a faster cpu, which if we base off of moore's law won't be much longer.
If the video card makers had picked up on the RPU you could use your video card to get realistic high frame-rate raytraced games today.
Dr Slusallek is working at nVidia now, so who knows?
Typically, however, games manufacturers do NOT mean "raytracing" when they say "raytracing". They mean basic rendering. ie: Applying of shaders and other simple colouring techniques. Renderman, the rendering package used to produce movies like Finding Nemo, uses rendering, not raytracing. Rendering is popular with movie producers because it's fast and "good enough". (Audiences differ on the subject, with plenty of people preferring model-based special-effects because the lighting is real and the reflections are correct - well, they'd better be!) My fear is that true raytracing and physically correct lighting models will be totally overlooked in favour of things that will be cheaper to produce and therefore make more money.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Head on over here to see what a raytraced Enemy Territory: Quake Wars looks like. Pay particular attention to the water and windows.
::crosses fingers:: make better gameplay. We can dream, right?
Now read everyone else's responses and realize that raytracing is a super-easy way to take advantage of multiple cores and simplify your code at the same time. All the crazy stunts and tricks you have to pull to get some of those lighting and reflection tricks can be thrown out the window, and the extra time could be used to
Of course, that raytraced ET: Quake Wars is running in a 16-core system at 1280x720 and posts between 15 and 30 fps. We've got a ways to go, obviously. On the flipside, you'd pay more for a single core system five years ago than you do for a quad-core today, so we're rapidly gaining on it.
If things go as many in the industry are predicting, though, scaling up the power of a single core just isn't going to happen like it used to. Throwing a bunch of cores in a system does seem like the way computing is going, at least at this juncture. In other words, the cores will be there anyway, why not make use of them?
Finally, with the rise of GPGPU and the NVidia/ATI-specific counterparts, I imagine it actually wouldn't be too difficult to allow your standard GPU to assist in raytracing on newer titles while still handling legacy games. (I might be talking out of my ass on this one, so any graphics nerds, please feel free to correct me there).
I sympathize with your point about the intermittent step backwards. I doubt that it will happen that way; likely, rasterized graphics will be around for quite some time with a gradual ceding to raytraced graphics as 8 core and higher systems become more commonplace. I also agree that graphics look damned good, and I myself have expressed similar views about the costs and obstacles inherent in going even more detailed. In the meantime, though, you can't blame developers or hardware companies for trying to avoid running into the wall of the declining improvement in CPU/GPU speeds. As I said earlier, if the cores are going to be there anyway then we might as well use them.
Actually, no.
Rasterization is not embarrassingly parallel in the same way that raytracing is. Distributing tasks among those 800 "stream processors" is exceedingly complicated, because the underlying "task" involves iterating over every pixel that intersects with a given triangle rather than (as in raytracing) iterating over every triangle that could intersect with a given pixel.
-:sigma.SB
WARN
THERE IS ANOTHER SYSTEM
Honestly, I'm not that impressed with the raytraced Quake Wars. Some nicer textures and higher res models could make it a lot prettier with a lot less horse power. Yes, the reflections are impressive, but reflections aren't that important really.
Give me Classic Slashdot or give me death!
To take Ziakll's argument even further... One problem with today's game industry is how long it takes to make a video game. Back in the 80s games could be made with a small handful of people in less than a year. Now it takes about 10 times as many people and anywhere from 2 to 5 years to produce a game. The biggest time (and of course money) sink in this process is art and level development. If raytracing can make things simpler and quicker to get accomplished for an artist then that will equal less time for production, and less development cost (maybe even cheaper games for the consumer in the long run). Real time raytracing is only inevatable just as it's only a matter of time till tools like Natural Motion's Endorphin and Euphoria take over the animation aspect. Any aspect of the development process that can be simplified or even better automated, will eventually win out.
;)
I'm betting that AMD's upcoming Hybrid chips will greatly benefit from Real Time Ray Tracing taking off. I'd just love to see someone come out with an open source RTRT engine that we could all start playing with right now, no matter how rudimentary
"A truly wise man realizes he knows nothing."
Simple example: Portal. Right now, it involves all sorts of crazy tricks. As I understand it, objects (at least, cubes which fall through the portal) are duplicated at both ends of a portal (in case you can see both ends at once)... The "hall of mirrors" effect of two portals across the hallway from each other is apparently intensive (it causes lag), and there is a hard (adjustable) limit, which can't be set above, what, 7 layers?
If Portal had been done raytraced, there would still be tricky things to do with the physics, but at least the portal graphics themselves would require roughly a single line of code -- add a few more, and you could have it shimmer and distort -- and they'd perform about the same either way. And they'd look better -- the "hall of mirrors" would continue to the pixel (or sub-pixel, if antialiased) scale, with no huge lag when you turn towards those mirrors.
But if there's one thing we could use in games, it's simplifying the code. Consider that games have tight schedules as it is (even moreso with the knowledge that any problems can be patched via download), and that it's not as though you have to design for ten years worth of feature enhancements and bugfixes -- you generally won't carry much over to the next game, so if it runs, it's good enough.
Given that attitude, what kind of hiring pratices will you have? Even The Daily WTF doesn't like to talk about it.
Now add the absolute requirement for performance, and you get esoteric, incomprehensible hacks at every level. And this is considered normal -- celebrated, even. After all, John Carmack has a hack named after him.
This is an area which could really use some solid engineering. To liken it to Web development, it seems everyone's working with crusty old PHP (or even straight C), when what's needed is either Rails (for large projects) or Sinatra (for small projects).
Don't thank God, thank a doctor!
If you haven't, go take a look at the screenshots in the article. Scroll up there, click on the link, and scroll down the page a bit.
Seen them? Good. They demonstrate one thing very effectively: no matter what rendering engine you use, good art direction trumps technology, every time.
These games are using "cutting edge" technology, and the article blathers on about how ray-tracing allowed them to use ridiculous amounts of triangles and have "complex lighting and shadows." But they look like crap.
Contrast this with games like Twilight Princess, Super Mario Galaxy, Ico, Shadow of the Colossus, and Rez. All of them use rasterization on hardware between two and eight years old, but they look fantastic.
The point is that, in raytracing, you can assign each of your 800 "stream processors" different pixels. Done. You're parallel. When one finishes, give it another pixel to work on, and repeat until you've rendered the whole thing.
Each core still has to iterate over all (well, some, I'm oversimplifying) of the triangles, but it can do so COMPLETELY INDEPENDENTLY of the other cores and still come up with a good result. Your performance gains are almost linearly proportional to the number of cores.
You can even have a relatively high-latency connection (Gigabit Ethernet, for instance) between the various cores, broadcast the scene data over this connection, and then receive individual "chunks" of rendered pixels back. I defy you to do that with rasterization.
-:sigma.SB
WARN
THERE IS ANOTHER SYSTEM
This is a somewhat rose tinted view of ray tracing. You can't simply throw each pixel onto a different stream processor and expect it to work. Whilst this works for throwing a different pixel at a different CPU core, this does not work with the stream processors we currently have available to us.
The problem we have both in the cell, and in stream processors on a GPU is that you can't arbritrarily access large data sets. So, it is impossible to write any code for a triangle that allows it to fire off rays into the rest of the scene. End of story.
Now, these things are possible, but, it requires a hell of a lot of hacking - i.e. using indices into textures, writing output data back into textures, copying that data to a vertex array.. etc etc etc.
But, you have the exact same problems to overcome to get ray tracing to work on a stream processor, as you do with rasterisation. Those 800 stream processors you talk about, have to be running exactly the same code, have only a small amount of memory available to them, and are generally a PITA to get even the simplest code running.
You talk about distributing frames across seperate PC nodes, but we've been doing that for years in renderman - using the exact same system you describe (via alfred typically). 99% of the filmFX houses use renderman for their rendering, however renderman is not a ray traced renderer.
The simple reason why is that 99% of filmFX shots do not require raytracing....
The same is also true of Games. I'm willing to bet that in my lifetime I will never see a AAA game released that is 100% raytraced. Some games may use it for 2 to 5% of the effects, but that will be about it.... much like it is in the film industry.....
I know fully well 3DSMax and Maya are the defacto standard in big shop game developers. Blender is HUGE among open source in indy game shops.
But the "other" underdog is TrueSpace. I've been with them (Caligari) since version 1. They're now at 7.6. In the almost 10-15 years they've been around they've always been under one guy, Roman Ormandi. It says a lot to me, that he hasn't yet "cashed" out on this amazing 3D hand changing that's been going on with all the other apps.
3DS started with Autodesk, went to Discreet and i think another owner, Autodesk realizing their mistake bought Maya, and then grabbed 3DSMax back. TrueSpace never had any foster parents the way these apps has, and because of that, has remained "pure" and uncorrupted.
It may be lacking in a lot of the technologies the other "big guys" have, but it stays pure to their path. The interface (though a lot more clunky than the past) remains clean and efficient to use. Unparalleled customization and tons of features I can't remember and have never used. They incorporated Python into it for scripting.
I could rave on like a Squirrel crossing the road about TrueSpace. I'll get back on focus now. TrueSpace is a true underdog in the 3D graphics field and IMHO underappreciated. I tip my hat to the team at Caligari.
To put it bluntly, at the moment the industry has to invest in better tools to simplify the asset creation stage.
Raytracing is just as much of a hack as rasterizing. It's just a different hack. Both are nothing but rough approximations of the rendering equation.
Raytracing is better at rasterizing for rendering silver spheres on checkerboards, but the lack of those aren't the main problem with graphics these days. Raytracing is pretty much as bad at rasterizing at things that matter much more, such as decent global illumination.
But raytracing doesn't do realistic lighting at all!
It does more realistic lighting than rasterization, and it definitely will do caustics... you just need to shoot more rays. Whether you can shoot enough rays in realtime or not, well, that's where you need the speedup from an RPU.
"Global Illumination" isn't a lighting effect, it's a heuristic for rasterizing that fakes some effects that require additional rays to calculate. In some cases that's ludicrously many rays, in others it's not. There's also some very good (albeit still expensive) techniques to simulate radiance and other "global illumination" effects in raytracing. Again, how much you can do in realtime depends on your resources. And, again, an RPU would be a major win.
Indeed. Who cares about raytracing? The next big thing in games is procedural generation of content!
"[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz