My Ray Tracer Journey

Eren Dere -- 25 September, 2021
 2 min read
headImage

Overview

This project was implemented during Spring 2020-2021 for Advanced Ray Tracing course. We first started with basic intersections and got simple images but after a while, we have studied more advanced techniques and our rendering results got a lot realistic. I opened a repository in github. And we also had to record our progress with blog posts.


I first tried to implement this project with GLSL compute shaders but failed to follow the homeworks on time. So when I saw that it was tackling my progress, I immediately implemented a CPU version and carried on from there (This happened after 2nd Homework).


At the end of the semester, I have a pet ray tracer as a programmer :D. I want to thank to our professor Ahmet Oğuz Akyüz for this amazing course and also to my classmates (I've learnt a lot reading their blog posts).

Feature list:

  • [x] Parallelism with C++ Async/Future
  • [x] BVH trees for mesh intersections
  • [x] Diffuse, Dielectric, Conductor materials
  • [x] Multisampling
  • [x] Motion Blur
  • [x] Glossy Reflections
  • [x] Depth Of Field
  • [x] Texture support
  • [x] Procedural Textures and Perlin Noise generator
  • [x] Advanced Lighting (Directional, Point, Area, Environment, Spot lights)
  • [x] HDR imaging and tone mapping
  • [x] BRDF models
  • [x] Object lights ( Light meshes and Light spheres)
  • [x] Path tracing support

During the course we recorded our progress with blog posts. Here are my blog posts in order;

  1. First Images intersections, Implemented with GLSL Compute Shaders
  2. Parallelism C++ Async/Future, BVH trees, Dielectric, Conductor materials, problems with GPU, Soft Shading
  3. Motion Blur, Glossy Reflections, Depth of Field, Area Lights, Multisampling
  4. Texture Mapping, Procedural Textures
  5. Advanced Lighting, HDR Imaging and Tone Mapping
  6. BRDF Models
  7. Object Lights and Path Tracing

Some rendering results;


DiffusePathTracingCornellbox

Diffuse Path Tracing Cornellbox


GlassPathTracingCornellbox

Glass Path Tracing Cornellbox


Leviating Dragon

Leviating Dragon - Kadir Cenk Alpay's scene


I have learnt a lot with this project. It's not much but honest work :D. In the next blog post. I'll start explaining my journey. Part 1 is about baby steps of my pet ray tracer.

Copyright © 2024 --- Eren Dere