What is ray tracing?

Conventional 3D rendering has used a process called rasterization since the 1990’s. Rasterization uses objects created from a mesh of triangles or polygons to represent a 3D model of an object. The rendering pipeline then converts each triangle of the 3D models into pixels on a 2D screen. These pixels may then be further processed or “shaded” before final display on the screen.

Ray tracing, which has long been used for non-real-time rendering, provides realistic lighting by simulating the physical behavior of light. Ray tracing calculates the color of pixels by tracing the path that light would take if it were to travel from the eye of the viewer through the virtual 3D scene. As it traverses the scene, the light may reflect from one object to another (causing reflections), be blocked by objects (causing shadows), or pass through transparent or semi-transparent objects (causing refractions). All of these interactions are combined to produce the final color of a pixel that then displayed on the screen.

While ray tracing has long been "the future" or holy grail of computer rendering, we are now seeing the advent of consumer GPUs which have enough compute capability to do interesting ray tracing workloads in real-time. It is expected that many use cases will employ hybrid renderers which combine rasterization and ray tracing, so tight integration with an existing rendering API is very important. For more information on this topic please see our blog on the left.

RTX platform ray tracing APIs

NVIDIA OptiX

10 years ago OptiX introduced the programmable shader model for ray tracing (OptiX GPU Ray Tracing ACM paper). NVIDIA has continued to invest in hardware, software and algorithms to accelerate that programming model on our GPUs.

The OptiX API is an application framework that leverages RTX Technology to achieve optimal ray tracing performance on the GPU. It provides a simple, recursive, and flexible pipeline for accelerating ray tracing algorithms. Additionally the post processing API includes an AI-accelerated denoiser, which also leverages RTX Technology. The post processing API can be used independently from the ray tracing portion of the pipeline.

Learn how to set up your Windows development environment to start writing ray tracing code using DXR. You’ll learn about adding required components plus work through an existing DirectX 12 sample to prep it for ray tracing.

Add ray tracing features to an existing DirectX 12 sample application. This step-by-step guide walks you through the major building blocks required for adding ray tracing to your code. The guide also includes extensive code snippets you can drop into your code or modify as needed.

The GameWorks Ray Tracing SDK consists of a suite of tools and resources for developers, enabling dramatically increased realism while shortening product cycles in titles developed using the new Microsoft DXR API and NVIDIA RTX.

NVIDIA is developing a ray-tracing extension to the Vulkan cross-platform graphics and compute API. Available soon, this extension will enable Vulkan developers to access the full power of RTX. NVIDIA is also contributing the design of this extension to the Khronos Group as an input to potentially bringing a cross-vendor ray-tracing capability to the Vulkan standard.