2D Ray Tracer

April 2023 - June 2023

2dtracer


Overview

Roles Graphics programmer
Gameplay programmer
Duration~8 weeks
PlatformWindows
EngineCustom engine template - Jacco Bikker
Team sizeSolo

Tools & Technologies

Languages & APIsC++
ToolsVisual studio, Very sleepy
WorkflowPerforce
LibrariesGLM, OpenMP

Project Overview

This 2D Ray Tracer was developed as a course project at BUAS during Block C of Year 1. The entire rendering pipeline runs on the CPU using C++, modifying a continuous pixel buffer that gets displayed at the end of each frame. To demonstrate the dynamic lighting capabilities, I made a small snake spinoff on top of the engine.


Goals and motivations

  • Explore fundamental ray-tracing concepts such as intersection checks, shadows, lighting.
  • Gain experience on CPU based renderers while improving C++ skills.
  • Get a basic understanding of optimization techniques in ray tracing

Biggest obstacles

  • Grasping ray tracing concepts for the first time
  • Optimizing such project to run on the CPU

Highlights

  • Support for point lights & spotlights
  • Soft shadows and hard shadows settings, with different level of graphics fidelity to choose from
  • Ray tracing intersection against basic shapes: Box, Circles, Lines
  • Various optimizations tricks
  • Denoising with last frame information
  • Temporal accumulation denoise
  • Snake game to show off the rendering capabilities

Gameplay using this renderer

  • Note: This gameplay is using the best settings in order to achieve ~60 FPS during gameplay in that scene on my laptop CPU
    • AMD Ryzen 7 6800H

2dtracer