Software Ray Tracer

This software raytracer was made for the Graphics Programming 1 course. It is written in C++ and uses SDL. The program itself runs relatively slowly since everything is calculated on the CPU side, but it taught me the basics of how raytracing actually works. It taught us some basic hit detection on various types of geometry, with triangles being the most important. While working on this, I discovered the Möller-Trumbore intersection algorithm, a noteworthy improvement. Of course, shading was needed, and I implemented several techniques such as Lambert shading, Phong shading, Trowbridge-Reitz GGX, Schlick GGX, Fresnel, and Smith. I also added shadows, which had a significant impact on the performance of the raytracer, as you can see in the gif.
I implemented a small amount of threading to further improve its performance.

View on Github
Project 1 Image
Project 1 Image

Soft- and Hardware Rasterizer

This C++ implementation of a rasterizer was built using DX11-Effects, SDL and SDL_Image. As the title implies, there is a software implementation, which runs at a small 10 FPS, and a hardware implementation, which runs at around 2800 FPS. By creating a rasterizer entirely on the cpu side, it taught me a very great deal on how such a thing works. The hardware rasterizer then introduced us to DirectX11 and HLSL.

View on Github

Rick and Morty Tool

The objective of this project was to create a functional and easy-to-use tool to view an online API or a local repository. I chose to build my tool around the Rick and Morty API. I learned a great deal about tool development in this project, especially using C# and WPF. The tool starts by fetching everything from the online API in a multithreaded manner for better performance, as fetching such an amount of data can take a while. Everything is then presented in a list, which can be filtered based on various parameters. The user can then select a character and be taken to that character's detail page, where they can view information such as the character's location and episodes. The user can also view details of both, revealing more characters in either the same location or the same episode.

Lastly, there is also a button to switch to a local repository, to view a small portion of the offline API that is stored locally, requiring no internet connection.

View on Github
Project 1 Image