Path Tracing vs. Ray Tracing (2016)
dusterwald.com
dusterwald.com
This bit:
> but until path tracing times are measured in minutes per frame, as opposed to the hours or days they are now, ray tracing (or rasterization, especially micropolygon rasterizers like the one powering RenderMan) remains the better option for many classes of rendering tasks.
wasn't even true in 2016 - RenderMan (PRMan) 19 added a pathtracer and eventually in 21 removed entirely its REYES rasteriser, and pretty much the entire VFX film/animation industry is using pathtracing now.
Artist time is much more expensive than machine time, and not having to tweak things like materials / lights in the PBR realm that path tracing lives in per shot / sequence to fake things like GI (like the article mentions is a good alternative - it's not) is where a lot of the speedup has come from with iteration times.
If anyone's interested in state-of-the-art for film VFX, five papers on the five most used pathtracing renderers used in VFX were recently released:
https://jo.dreggn.org/home/2018_manuka.pdf
https://www.yiningkarlli.com/projects/hyperiondesign.html
https://www.arnoldrenderer.com/research/Arnold_TOG2018.pdf
https://graphics.pixar.com/library/RendermanTog2018/paper.pd...
https://fpsunflower.github.io/ckulla/data/2018_tog_spi_arnol...
http://on-demand.gputechconf.com/siggraph/2018/video/sig1813...
> It also requires light sources to have actual sizes, a bit of a departure from traditional point light sources that have a position but are treated like an infinitely small point in space
You don't wait for the ray to bounce into a light. Lights are typically sampled directly at each bounce point in a path tracer. If you waited for the beam to hit a light it would take a crazy amount of time (100k+ samples for complex scenes) to converge.
> how far you can trace them before giving up
You can use Russian roulette techniques to get unbiased sampling of arbitrary length paths.
> The crux of the problem is that with a path tracer you are locked into an all or nothing approach...
There's many more subtleties into getting convergence than simply 'tweaking quality settings', eg. volumetrics, types of lighting, types of material, denoising etc. Also it's MUCH more difficult to get a realistic result with simple raytracing than the author says.
> is it the future of high quality offline rendering?
Pathtracing has been used for almost all offline VFX rendering for a very long time now (although there's some new interesting developments in using rasterization for production now)
Interesting, do you have any links for further reading?
I'm biased, of course, being in the real-time space, but as time has passed I've really come to appreciate the simplicity and practicality of rasterization…
Did you mean Monte Carlo?
https://docs.redshift3d.com/display/RSDOCS/Optimizations?pro...
A notable example of that usage:
> When somebody says "ray tracing" it could mean many things. What I am going to describe is technically a path tracer ~ "Ray Tracing in a Weekend" by Peter Shirley
Ray tracing = ray casting from the camera and where an object intersects trace rays (with ray casting) to light sources and reflective materials (Turner Whitted).
Path tracing = ray tracing but when you hit an object start ray casting from that point as bounce and gather all energy so you can send it back to the camera (James Kajiya ?).
So to me path tracing is just a method (extension) of ray tracing.
The terminology just isn't 100% consistent.
While I only occasionally glance at new results in this area it seems that CNN-based denoising techniques look quite promising, possibly getting us close to viable real-time pathtracing at least for "suitable" scenes. I am more confident than ever that a shift to traced renderers could be next - this has nothing to do with RTX and the buzz around it though...
You mean you being confident or the shift has nothing to do with RTX?
The purpose of RTX is to solve the chicken-and-egg problem of hardware first or software first. It's much less likely for a company to invest the effort into developing a path traced renderer without hardware support, but without software support there's no demand for the hardware. RTX is supposed to kickstart real time path/ray traced graphics.
RTX can absolutely accelerate path tracers, even for non-realtime applications. The underlying framework is definitely flexible enough to support a variety of rendering algorithms, it's basically accelerated BVH and intersection, with shaders to control behavior.
The biggest advancement I've seen lately is advances in denoising - the ML-based denoisers are incredible, but others are also impressive.
How about realtime on a consumer PC ;)
http://www.pouet.net/prod.php?which=69642
http://www.pouet.net/prod.php?which=75720
To make things clear, these 4k intros are not at all representative of what is done in the film industry. It is made possible by using very simple mathematical shapes (a sphere or 8 cubes). But that's still bonafide pathtracing.
This demo is 4 years old, but the noise still seems to be a problem: https://youtu.be/BpT6MkCeP7Y
If anybody's got more recent impressive demos to link, I'd like to see how things have been developing.
It looks like this is part of Octane Render.
https://www.youtube.com/watch?v=YjjTPV2pXY0
video results start around 1:15
This one does not use a neural network:
That's what they do. See: http://drz.disneyresearch.com/~jnovak/publications/KPCN/inde...
The full rendering pipeline is much more than just finding ray-triangle intersections. It also involves material BRDFs/BSDFS (reflection/scatter properties), volumetric effects (fog, liquids, etc), motion-effects such as blurring, etc. Depending on what you are rendering, the render pipeline be vastly different from application to application.
I think most production path-tracers are still primarily CPU-based, which would be because of the required flexibility.
These, and any solution that generates an image, need a shit ton more information to generate an image than polygons and where the camera is.
Think of a GPU like a dozen really, really basic in-order, non-speculating CPUs, each one with a stupid huge wide SIMD unit. As long as the data is nicely packed, doing the same operations on each unit of data, boom - turbo mega ultra fast. That's rasterization. That's pixel shaders. That's modern GPU workloads.
ray-tracing, though? Rays bounce around. They branch. They don't all do the same thing on nicely packed data.
This would be where something like the Xeon Phi coprocessor would fit the bill in theory. Although it looks like maybe it didn't pan out all that well as Intel seems to have killed that product line?