bit-tech.net — After years of slow moving, it seems the whole industry went into a tizzy in July. Has this world lost its mind? The author of this article doesn't think so, and he thinks he's found the key that makes it all come together. Could Raytracing be the future, and will it be with us sooner than we think? Really insightful read.
Aug 28, 2006 View in Crawl 4
boojumAug 28, 2006
Ray tracing doesn't have to be an exponential problem. You can flatten the ray tree by approaching it stochastically as a Markovian walk. Path tracers have been doing this for years, though the scintillation from the variance when animated would be annoying.But I agree that 450M r/s is a little low. That leaves 11.4 rays per pixels per frame at 1280x1024 at 30fps. Not a whole lot. You'd only get maybe a little anti-aliasing, one bounce of reflection/refraction and a single hard-shadowed point light with standard Whitted-style ray tracing.
spazkakeAug 28, 2006
<a class="user" href="http://upload.wikimedia.org/wikipedia/en/thumb/7/77/3chromeballs.png/800px-3chromeballs.png">http://upload.wikimedia.org/wikipedia/en/thumb/7/77/3chromeballs.png/800px-3chromeballs.png</a>
dasil003Aug 29, 2006
Yeah, if you really wanna be impressed check out <a class="user" href="http://www.pbrt.org/gallery.php">http://www.pbrt.org/gallery.php</a>That's a lot more than raytracing though, and most of those scenes probably took days to render at a high resolution. I highly recommend the book if you're interested in what really goes into photorealism (caustics, diffuse reflection, depth of field, subsurface scattering, etc. etc.)
happyscrappyAug 29, 2006
It's O(N!) because you have to trace each ray until it reaches a light source or an object with no reflectivity. The ray could potentially hit every object in the scene before doing so. If it hits a partially reflective surface, it might even split and hit each object in the scene more than once. Yes, you might be able to use space division techniques (like octrees) to not have to search the ray against every object, but once the ray hits an object, it reflects off at a new angle and you have to clear your octrees and start searching again.Hence, it is O(N!), since you can hit every object, even more than once. In practice, you never do, but big O notation is about the general case, not specific cases.Cars doesn't use any raytracing, they use Renderman and only use scanline rasterization. Some of the objects have texture maps applied to them that approximate a view (reflection) of the world from their own location. This can require rendering the entire scene from the viewpoint of the object, which definitely increases the computational complexity of the scanline rasterization. In extreme cases, it can approach the complexity of raytracing the scene. But it still has massive advantages over raytracing, most notable the ability to use advanced texture antialiasing techniques that are difficult (at best) to implement with raytracing.Anyway, although Renderman may borrow a lot of techniques from raytracing, it (the Pixar implementation) isn't a raytracer.
dodger2020Aug 29, 2006
I think you might have meant earlier in the previous decade? There's not many people left that were even ALIVE earlier in the previous century. :)"I must say I was waiting for this moment from the first time I tried POV-Ray (which was in previous century actually... :)"
bitrotAug 29, 2006
Previous century = 20th Century (1901-2000)Current century = 21st Century (2001-2100)It's entirely possible that he first used POV-Ray in the previous century, as did I.
porkstackerAug 29, 2006
Wow, I can remember back in the early 1990s doing 640x480 renderings using a semi simple (low reflectivity recursion count, and 16 primary diffuse samples) raydiosity algorithm, and it took over a week to render the image.... now we're talking about real-time raytracing??? That is insane!
f00fbugDec 22, 2006
Actually there are a few things wrong with that. One thing is that you do not have to clear your octrees per reflection, you build them once per session as octrees (and most other spatial partitioning forms) are not view dependent. Also, about the reflectivity, raytracers don't bounce rays around the scene until they hit a light source, whenever a ray strikes an object it does what is called a "shadow test" where it shoots a ray from the light source to the object, if that ray is obstructed, then it is in shadow. Raytracers only behave in that manner for reflection (mirror-style) or refraction. Conventional raytracers also set a maximum depth, to avoid infinite loops.Another technique, developed to render lighting interactions between surfaces called "Path Tracing" does something similar to that, in taking a spherical sample of N rays per pixel, each ray taking non-branching paths of depth D through the scene. Each point of the path is "connected" to the light source by again looking for obstructions. Path tracing, derived from Ray Tracing, can render unbiased global illumination, however at the cost of extreme computational intensity.