HIPRT-Path-Tracer

HIPRT & Orochi Monte Carlo Path Tracer


Overview

Physically based Monte Carlo path tracer written with the HIPRT and Orochi libraries.

HIPRT is AMD’s equivalent to OptiX. It allows the use of the ray tracing accelerators of RDNA2+ AMD GPUs and can run on NVIDIA devices as well (although it wouldn’t take advatange of RT cores) as it is not AMD specific.

The Orochi library allows the loading of HIP and CUDA libraries at runtime meaning that the application doesn’t have to be recompiled to be used on a GPU from a different vendor (unlike HIP which would require a recompilation + linking).


Features

BSDFs

  • Disney BSDF (Diffuse, fake subsurface, metallic, roughness, anisotropy + anisotropy rotation, clearcoat, sheen, glass, volumetric Beer-Lambert absorption, …) [Burley, 2015]
  • Cook Torrance BRDF (metallic & roughness)
  • Oren Nayar diffuse model
  • Specular dielectrics

Sampling

  • Light sampling (emissive geometry):
    • Uniform light sampling for direct lighting
    • Resampled Importance Sampling (RIS) [Talbot, 2005]+ Weighted Reservoir Sampling (WRS) for many light sampling + [M. T. Chao, 1982]
    • HDR Environment map + Multiple Importance Sampling using
      • CDF-inversion binary search
  • BSDF sampling:
    • Importance sampling
    • Multiple importance sampling
    • Smith GGX Sampling:

Other rendering features:

UI

  • Interactive ImGui interface
    • Asynchronous interface to guarantee smooth UI interactions even with heavy path tracing kernels
  • Interactive first-person camera
  • Different frame-buffer visualization (visualize the adaptive sampling map, the denoiser normals / albedo, …)

Other features

  • Use of the [ASSIMP] library to support many scene file formats.
  • Optimized application startup time with:
    • Multithreaded texture loading
    • Asynchronous path tracing kernel compilation
    • Shader cache to avoid recompiling kernels unnecessarily

Gallery


Live YouTube Showcases

Material Editor

OIDN AOVs Quality


hiprt-path-tracer


Github

This project is open-source on Github: HIPRT-Path-Tracer