RTX Rendering Project

Course project for the Rendering course (Computer Science 591 at the University of Calgary) I took in winter 2019 and where I implemented ray tracing that made use of Nvidia’s RTX hardware through the Vulkan API.

ArtStation Link

Source code is self-hosted on my home Git-Gogs server which is only accessible from my home network.

Project Summary

Objective

Learn the Vulkan basics and implement ray tracing that is accelerated by Nvidia’s RTX hardware.

Justification

  • Just seemed like the coolest project idea I could think of that didn’t necessarily require a load of math.
  • It was a massive learning opportunity!
    • Went in not knowing Vulkan, came out at least knowing the basics.
    • This also translated to a better understanding of OpenGL and graphics APIs in general.
    • Learned how to implement RTX.
    • Got to experiment with RTX before it was supported by everything.
  • Self-justification…
    • I bought a RTX2080 very shortly after launch and had to somehow justify the early adopter fee.

Features

  • Normal Vulkan rasterization with z-fighting.
    • This wasn’t the main objective so I didn’t care enough to fix it.
  • Ray tracing using RTX in Vulkan.
    • Unfortunately only got direct lighting and simple shadows implemented.
  • Expected window options supported like resizing or minimizing the window are supported.
  • Can switch between rasterized and ray traced views.
  • User specified camera movement with the ability to unlock the mouse so you can take screenshots or resize the window.

Challenges

  • Learning Vulkan and how to implement RTX at the same time.

Screenshots

Ray Tracing

Final version

WIP renders

Rasterization

Videos

Ray Tracing

Rasterization


Credits

Vulkan Resources

RTX Resources

General Credits

  • The event system, logger, and window startup are all based on early versions of Yan Chernikov’s Hazel game engine since I was following his game engine series around the time of this project.