Left title bumper.

Raytracer

Right title bumper.

Development span: January - February 2022 (~2 weeks)

Project Type

  • Individual

My Roles

  • Programmer

Source Code

Made For

  • CAP 4730 Computational Structures in Computer Graphics (UF)
The first frame of the movie, which shows off several implemented features (specular highlights on the eyes, diffuse shading on the body, glazed ice) A better view of the tetrahedron of ice in the scene, implemented as its own object type using Triangles. A clear view of my implementation of a glazed surface that is highly reflective.

About the Project

The first project in UF's computer graphics course is to program a raytracing application purely in C++ (with OpenGL being used only to display the final result). Over the course of this project, I created programatic structures that implemented mathematical representations of rays, points, various surfaces like spheres and tris, and lights, and implemented the equations that allow all of those things to interact with each other and correctly render in a perspective or orthographic view based on the position of a camera object I created.

I also implemented backface culling for my triangles, both for debugging purposes and to create a more complete project, and added some object animation to my final video render (the snowman watches you!).

This is a progress screenshot I took; it was the first time I successfully casted light onto an object. This is another progress screenshot; it was my first successful triangle. Surface normals will get you every time! This is another progress screenshot; it's of my first successful implementation of a specular material.

Programming Accomplishments

  • Implemented fundamentals of the raytracing algorithm (rays, points, surfaces) in C++
  • Implemented backface culling for triangles
  • Implemented point and ambient lighting and materials with tunable diffuse, specular, and ambient properties
  • Implemented glazed surfaces
  • Moved the position of the camera and objects in the scene to create a short movie

Other Accomplishments

  • Wrote a report detailing my implementation of the project (accessible via GitHub)

< Previous

Next >

Want to get in touch? Find me in all of these places!

Link up on my LinkedIn profile

Scratch an itch on my Itch.io page

Send me an email at awk481@gmail.com

© 2024 Andrew Kohler