Skip to content

Damo12320/OptixPathtracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Physically based Pathtracer

This is a physically based Pathtracer using NVIDIA Optix. It uses an OpenGL Context for image preview and processing, but the rendered image is calculated using OptiX.

This implementation is based on the code and concepts presented by Matt Phar, Wenzel Jakob, and Greg Humphreys in the Physically Based Rendering Book.

PBRT Book: https://www.pbr-book.org/

PBRT Repository: https://github.com/mmp/pbrt-v4

Features

The Focus of this implementation lies on the BRDFs. This is reflected in the featureset:

  • Conductor BRDF
  • Diffuse BRDF
  • Dielectric BSDF
  • Layered BRDF
    • Diffuse base with a dielectric coating
  • glTF loading
  • OpenGL Window Preview

Analysis

Six scenes are used to compare this implementation to the PBRT and the Cycles Renderer. A mixed BRDF with a layered and a conductor part is used.

The images are captured in a linear color space with 32 bit OpenEXR file format. The PNGs presented in this repository, are in the sRGB Color Space. The comparisons where done in the linear color space.

PBRT comparison

The PBRT uses a custom format for the scene description. Since I couldn't find a good way to transform my scenes automatically, I could only transform the simple scenes.

Visually, the biggest differences seem to be the noise. The error and SSIM are really small, suggesting only small differences in color and structure. The bigger FLIP values can be explained by the goal of this metric: It wants to show the perceived difference, when a person flips between the images. Even small differences can be spotted more easily. Because of that, tge noise might interfer with this metric.

Other small differences are, that the shadows in this implementation seem to be a bit darker than these, from PBRT. The dragons are also showing differences in brightness.

Lower values are better.

Scene sqrtMSE 1 - SSIM FLIP
1 0.01202502009 0.01792103052 0.250635
2 - - -
3 0.01445801277 0.04922020435 0.073029
4 0.03006046265 0.05847674608 0.141579
5 0.02489062399 0.0711209178 0.14407
6 - - -

Cycles Renderer comparison

Visually, the Cycles Renderer and this implementation are close. In my opinion, the biggest differences are the brightness of the images, best seen in scene 2. There are also more pronounced light colorations in the Cycles Renderer, best seen in scene 3 on the white wall. Also the shadows seem to be brighter in the Cycles Renderer.

Despite these differences, the error and the SSIM still report only small differences. The values of the FLIP metric are reporting big differences, suggesting, that the FLIP metric is quite sensitive.

Lower values are better.

Scene sqrtMSE 1 - SSIM FLIP
1 0.01589946449 0.1082761288 0.532361
2 1.420880795 0.1060500145 0.426682
3 0.03453573585 0.2052038312 0.335402
4 0.05084366724 0.08756649494 0.290489
5 0.02088341489 0.09036129713 0.292399
6 0.07993540913 0.09254026413 0.439174

Images

Scene PBRT This implementation Cycles Renderer
1 PBRT Scene 1 Pathtracer Scene 1 Cycles Renderer Scene 1
2 - Pathtracer Scene 2 Cycles Renderer Scene 2
3 PBRT Scene 3 Pathtracer Scene 3 Cycles Renderer Scene 3
4 PBRT Scene 4 Pathtracer Scene 4 Cycles Renderer Scene 4
5 PBRT Scene 5 Pathtracer Scene 5 Cycles Renderer Scene 5
6 - Pathtracer Scene 6 Cycles Renderer Scene 6

About

A PBR Pathtracer build with NVIDIA OptiX 7

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published