Seasons Of Code

Monte Carlo Path Tracing Renderer    • Kumar Ayush   

WnCC - Seasons of Code

Seasons of Code is a programme launched by WnCC along the lines of the Google Summer of Code. It provides one with an opprtunity to learn and participate in a variety of interesting projects under the mentorship of the very best in our institute.


List of Running Projects

Monte Carlo Path Tracing Renderer

Monte Carlo Path Tracing Renderer


This internship involves the implementation of a Monte Carlo Path Tracer.

Monte Carlo Path Tracing Renderer

In this project, you will implement a Monte Carlo Path Tracer. A path tracer is a kind of renderer in computer graphics. A renderer is responsible for generating the image or the graphics that you see on your screen. Even this text that you are reading is displayed via a font renderer. Path tracers are often used for photorealistic rendering, which means generating an image indistinguishable from a photograph. At the end of the project, you can expect to have a code capable of producing such images.

As a primer, you should read Andrew Glassner’s Introduction to Ray Tracing

Pre-requisites

  • At least two years of experience with CPP, awareness of gcc and make
  • A basic course on DSA

Tentative Project Timeline

I expect about 100 hours of work spread over ten weeks.

Week Number Tasks to be Completed
Week 1 Read the book
Week 2 Write an XML parser. This is the submodule that reads the scene.
Week 3 Write the skeleton of the graphics pipeline. This involves implementing coordinate transformations
Week 4 Implement the Ray and Object class. Most of the Path Tracing routine can be summarised as measuring intersection of instances of Ray class with instances of the Object class.
Week 5 Implement Direct Lighting and Whitted Ray Tracing
Week 6 Implement Recursive Rays to capture higher order light paths
Week 7 Debugging buffer & Implement Jittering and Supersampling
Week 8 Monte Carlo enters. Learn Sampling. Implement Diffuse Sampling and Area lights. Effects like soft shadows and colour bleeding start to appear
Week 9 Debugging Buffer
Week 10 Documentation, Generating Scenes, Videos

Secondary Learning Goals

Apart from learning about path tracers and rendering, you can expect to learn about the following:

  • Monte Carlo Sampling
  • Basics of ImageMagick
  • OpenMP Parallelization.

Repositories

The project will be done in groups of two. We will consider minor variations in the raytracers, Swati (swati-rt) and Revati (revati-rt)