top of page

Renderer on DIRT

A ray tracer implemented in C++ based on Dartmouth Introductory Ray Tracer (DIRT) framework.

​

As an advanced feature, it can perform Monte-Carlo simulations on layered materials in a fast and accurate way, based off work "Position-Free Monte Carlo Simulation for Arbitrary Layered BSDFs" by Guo etc.

 

This is an individual semester-long project for course "Physics-based rendering"  at Carnegie Mellon University, 2023 spring.

Final result submitted to the class rendering contest

all-2023-05-04-11-56-55.png

This submission was named as one of the three artistic awards.

Renderer Features

Aside from Position-free Monte Carlo, Below are a list of fundamental features built into the renderer by me along with the rendering results.

Screen Shot 2024-06-08 at 9.34.34 PM.png
Screen Shot 2024-06-08 at 9.36.34 PM.png

-Translucent Material +Procedural Perlin Noise 

-Ambient Occlusion 

Screen Shot 2024-06-08 at 9.46.31 PM.png

-Environment Maps

Screen Shot 2024-06-08 at 9.46.03 PM.png

-Mixed multiple importance sampling

Screen Shot 2024-06-08 at 10.29.29 PM.png

-Next-Event Estimation

Screen Shot 2024-06-08 at 9.47.39 PM.png

-Homogeneous Volumes

Screen Shot 2024-06-08 at 9.47.46 PM.png

-Heterogenous Volumes

Position-Free Monte Carlo Unidirectional Simulation

Assumptions:

  • The displacement of scattering event on surface is ignorable

  • The layer properties are locally uniform

​

Algorithm:

  • Perform Monte-Carlo simulations based on light paths generated by sampling the layers and volumes

  • Perform Next event estimation by inversely sampling the layers

  • Simplification of the model: a unidirectional path tracer with only opaque layered materials and in-between homogeneous medium

​

*A more detailed definition of the model can be found in the original paper.

Results : Validation

empty-cornell-box-nee-2023-05-03-09-31-14.png
layer-texture-simple-2023-05-03-09-22-55.png
layer-texture-nee-2023-05-03-11-46-55.png

              Ground Truth                       Position-free without NEE               Position-free with NEE

Validation Conclusions:

  • Our estimator matches the ground truth value 

  • Our estimator with NEE is significantly faster.

    • Ground truth uses 500 sample/pixel and takes 6 minutes to render

    • Pos-free with NEE uses 50 sample/pixel and tak​e only 8 seconds to render.

bottom of page