Hacker News new | ask | show | jobs
by tomvbussel 2907 days ago
RenderMan traces ray streams of a few thousands rays (at least not millions like Disney's Hyperion), right? Does that really help that much with reducing the shading costs? It probably makes a large difference for shading the initial hit point, but nowadays it's not uncommon to trace paths of more than 10 bounces. It seems very unlikely to me that it gives a significant speed-up with that level of incoherence and the high complexity of production scenes.
1 comments

According to Per, the primary rays are traced per block, giving coherent accesses to the high resolution textures. Secondsry rays, especially with higher orders of reflections, are accessing higher mip map levels where it is safe, and as I understand it, these mostly fit into memory by virtue of being filtered down.

However, I don't think they actually do 10 bounces of diffuse reflections just yet. But this is just a guess. I simply doubt that it makes enough of a difference to bother with that.

I sit next to Per at work. :-)

Blocks of primary rays tend to be about 16x16 by default, though this is tunable. MIP maps do greatly help with textures for incoherent rays. But we are also able to use the same trick for geometry; secondary rays may use coarser tesselations than primary rays. Per wrote about this some time ago, but it's something we still leverage. [0]

The number of bounces we do is fairly flexible. [1] We actually default to an upper limit of 10 total rays per path, with an initial limit of 1 diffuse bounce and 2 specular bounces. Depending on the geometry that's hit these initial limits may get extended until the total hits the upper limit. There are cases where the higher limits make a noticeable difference to the look.

[0] https://graphics.pixar.com/library/RayTracingCars/paper.pdf, section 5.3

[1] https://rmanwiki.pixar.com/display/REN/Trace+Depth