With the big announcement of new GPU ray-tracing hardware, Vlado explains what this breakthrough means for the future of rendering.



For nearly 20 years we've researched and implemented the highest end of photorealistic rendering with our ray-traced renderer V-Ray. Ray tracing is the most natural method to achieve true photorealism since it is based on the physical behavior of light. It's for this reason that the Academy of Motion Picture Arts and Sciences recognized our contribution to ray-traced rendering with a Sci-Tech Award for its widespread adoption in visual effects. A challenge with ray tracing, however, is that true photorealism takes a lot of computing power. We've always strived to make ray tracing faster, and ten years ago we began harnessing the power of GPUs in V-Ray. Now we're looking forward to leveraging new GPU hardware that is specifically designed for ray tracing calculations. What this means is that now we have the ability to do ray-traced rendering in real-time.

The announcement of NVIDIA’s upcoming Turing GPU and the RTX product line that will use it is an important milestone in the history of computer graphics and ray tracing in particular. The professional Quadro RTX series was announced at SIGGRAPH 2018 and the consumer GeForce RTX series was announced at Gamescom 2018. These new GPUs will include dedicated hardware (called an RT Core) for helping us accelerate our ray tracing solutions as well as greatly extending the availability and affordability of NVLink to double how much memory is available for your scenes. With the full line up announced, it’s worth spending a few minutes to understand what this means to your future rendering.



RT Cores within RTX Cards

Before we get to what the RT Cores provide, let’s briefly explain a few important things about ray tracing. The process of tracing a ray path through a scene can be generally split into two very distinct parts — ray casting and shading.



Ray Casting

Ray casting is the process of intersecting a ray with all the objects in the scene. Objects consist of different geometric primitives — triangles, curve segments (for hair), particles, etc. Objects may also be instanced across the scene. In a typical production scene, there may be many thousands of object instances that total hundreds of millions of unique geometric primitives. Intersecting a ray with all these primitives is a complex operation that involves advanced data structures like bounding volume hierarchies (BVH) that help to minimize the number of calculations.



Shading

Shading is the process of determining the appearance of an object — including calculation of texture maps and material properties — and the way the object reacts to light. Shading is also responsible for determining which particular rays to trace to compute the object’s appearance — these can be rays for shadows from light sources, reflections, global illumination, etc. In a production scene, shading networks can be quite complicated and may include the calculation of procedural textures, bitmap lookups, and various ways to combine them in order to determine the material properties of the surface — like its diffuse color, reflection strength and roughness, normal (through bump mapping), etc. Lighting calculations are also included here.

Depending on the amount of geometry in the scene and the complexity of the shaders, the balance between ray casting and shading can vary a lot. In typical scenes, ray casting may take as much as 80% for very simple scenes while heavy production scenes may only spend 20% of their time on it. The RTX graphics cards include specialized “RT Cores” to accelerate the ray casting process specifically. Since ray casting is a relatively complex algorithm, implementing it directly in hardware can lead to substantial speed increases. Note, however, that even if ray casting is infinitely fast and takes zero time, there is still the shading component of the ray tracing process, so speed increases from using the RT Cores will vary from scene to scene depending on how much time is spent on ray casting. In general, scenes with simple shaders and lots of geometry spend more time on ray casting and less time on shading and will benefit the most from the RT Cores. In contrast, scenes with complicated shading networks and lots of procedural textures, but relatively simple geometry, may see a smaller speed boost.



To illustrate the above points, we rendered the same scene with V-Ray GPU and with an experimental version that implements support for NVIDIA RTX. We rendered the same scene with a grey material override, and then again with the original materials. The scene has 95,668,638,333 triangles in total and was rendered with a fixed sampling rate of 512 samples per pixel.