A Ray-Tracing Pioneer Explains How He Stumbled into Global Illumination
blogs.nvidia.com
blogs.nvidia.com
[1]: https://www.researchgate.net/figure/Man-drawing-a-lute-by-Al...
"An Improved Illumination Model for Shaded Display" (1978):
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.107...
"A 3-Dimensional Representation for Fast Rendering of Complex Scenes" (1980):
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.133...
Path tracing is not good for 'real-time' computer graphics at the moment, because GPUs need to be still more computationally powerful, though I think 2018 or 2019 is the year we'll have the first computer game based on path tracing. On the other hand, ray tracing is already easily doable in GPUs, since it's computationally less expensive than path tracing, but IMO, no one is interested in it since games either want maximum possible realism, or if they want "cartoonish graphics," they want a certain look, not the look imposed on them by the renderer, and ray tracing cannot give enough control to produce any look the artist has in mind (without massive hacks).
EDIT: I just realized, nVidia is promoting ray-tracing as the future of CG, and everything they're describing are actually qualities/features of path tracing and have nothing to do with ray tracing (except for this historical article). I'm seriously perplexed. Maybe nVidia's marking department thought the word 'ray tracing' is more catchy, and more people know about it, so they should use it everywhere. It's common knowledge in CG research community that ray tracing cannot do global illumination.
EDIT 2: Another possible reason is that if they start mentioning path tracing, people will start asking questions about the difference between ray tracing and path tracing, and sales people don't want to get into that. It's a bit like calling LCD displays thin CRTs out of fear that if they mention LCD, people would start asking about the difference between CRT and LCD.
- What you said is true of any rendering method you use. If you have a complex scene, it'll take more time to render one frame.
- What I said about 2018 or 2019 is what nVidia's promotion is all about. See the demos linked at the bottom of my comment. They keep calling it 'real-time ray tracing' but it's really 'real-time path tracing'. And it's already happening.
[1] https://www.youtube.com/watch?v=Vdnwrt3Xdak
[1] Looks really good but only one light source and barely even a bounce of light. Nice backlight halo, but that’s not ray-tracing.
[2] Obviously a lot going on here and some progress of some sort but if only all the reflections weren’t so blurry. What’s up with that?
[3] 99% of what makes this scene look good is the PBR texture tuning. This lighting does not look good and nothing is moving. Very few reflections and small but they do look proper.
If you're trying to demonstrate the 'real world usefulness' of raytracing in games, the appearance of shiny ball bearings is a clear sign that you've run out of ideas.
That said, I'm not convinced that path tracing and physically-based rendering methods will ever completely replace rasterization. For some applications (especially games), the kinds of non-realistic effects you want to achieve are actually very hard to model and render using techniques that aim for realism. Probably for games we will end up with hybrid rendering that uses both at the same time.
"Many people use the terms somewhat interchangeably."
That is true. If we want to discuss the differences, it's important to know that sometimes people are using two terms to discuss the same thing.
I feel that the "ray tracing" vs. "path tracing" question is nit-picking for a very specialized audience at best. Most people simply understand ray tracing as being about tracing rays through geometry in some way (so both ray casting and path tracing are a form of using ray tracing). How you combine this tracing to give you pixel values is a higher-level question. If you look at ray-tracing frameworks / APIs like Optix or DXR, it's clear that this combination of tracing is left up to the programmer (for good reasons). What's important for the API to expose is the primitive operation of tracing a single ray, after all.
A ray tracer and a path tracer are very similar and are based on the same foundation of ray-object intersection tests, render the same kinds of geometry, and use the same kinds of acceleration structures. Lighting and textures are a little different, and the process of tracing a ray into the scene is a little different, but a ray tracer is really just a simplified path tracer.
Calling it an obsolete method seems strange, since about 90% of the code in a typical ray tracer could be re-used directly to make a path tracer, and a person setting out to create a path tracer in 2018 would probably start by making a ray tracer and then enabling path tracing once they've verified that ray tracing is working. Path tracing is more like a feature you enable than a completely different method.
"Whitted ray tracing" or "recursive ray tracing" are sometimes used to refer to a complete renderer or complete shading technique used in the 80s that is not global illumination. That sounds like what you're thinking of. But that's not today's meaning of ray tracing. "Ray tracing" can (and these days normally does) refer to a visibility primitive that is used in many different kinds of renderers, and that's what NVIDIA is promoting, that's what graphics people mean by "ray tracing" these days.
> ray tracing is largely an obsolete method
Recursive ray tracing as a rendering technique might be out of fashion, but tracing rays is far from obsolete. Exactly the opposite, it's about to challenge rasterization.
> In fact ray tracing cannot do global illuminuation and any ray tracing engine that does that is essentially including a hack on top of its core ray tracer.
Not true at all. Path tracing is done using a ray tracing engine. There are several other popular techniques for GI on top of ray tracing engines as well, e.g., photon mapping. There aren't many GI renderers that don't use ray tracing these days. It's possible to avoid ray tracing, but not at all common in practice.
> I just realized, nVidia is promoting ray-tracing as the future of CG, and everything they're describing are actually qualities/features of path tracing and have nothing to do with ray tracing (except for this historical article). I'm seriously perplexed.
I think you're perplexed because you don't quite understand what "ray tracing" means. NVIDIA is promoting ray tracing as a visibility primitive that can replace rasterization. The implications of this are that 1) path tracing and other forms of global illumination using the GPU are now possible, 2) visibility queries & acceleration structures will have GPU support and can be done very fast. 3) We get things like instancing at a much lower cost than with rasterization. 4) Lots of ad-hoc special effects can be done in a simpler and more principled and complete way. I'm referring to, for example, screen space effects that games are using. AO, reflections, bounce lighting, shadows, etc. All these techniques are tricky and separate from each other. With ray tracing they can be unified. 5) Ray tracing queries can be used in games for all kinds of other things including collision detection, path planning, and audio.
Even on slow computers you will get a real time photorealistic result. You will have to wait long before all noise is gone but you will notice lighting problems in a sec.
My guess is that it's one of the features Autodesk doesn't want to put in Fusion360 so they retain a market for the more expensive Inventor.
That said, I think Fusion shows you a really low resolution image in real time, if I remember correctly.
The only examples I have where real-time raytracing is used are demoscene productions where shapes are defined using simple mathematical primitives. (see the 4k intros "absolute territory" and "zetsubo", both from prismbeings for example).
Maya+Vray spits out a preview within seconds on my machine.
Fusion has some sort of simpler preview, my guess is that its some closed form lighting solver and in certain contexts it can look ok but for photorealism of a scene, its nowhere close.
I see a decent number of suggestions that people have really fast renders but I'm suspicious that we are talking about very different things.
Here is what I am typically rendering:
-Full screen on a 15" retina MBP
-Ray Traced
-In additional to the product, whole rooms/scenes that contextualize including 3D textured woods, books with Decals that are wrapped, elements of various opacity/transmissiveness, objects with some luminance, etc.
- Some objects with very high numbers of points (there is a technical name I'm forgetting), but essentially, circles render with enough polygons to not appear as a collection of lots of small/slightly noticeable line segments