Personal Projects

Images rendered by my pathtracer.

Raytracer & Pathtracer (C++)

I followed a two week master class by Jacco Bikker (who's a pro in pathtracing).
The goal was to create a realtime pathtracer for very large scenes. This was a very difficult challenge since I had no prior experience with advanced graphics and now I had to do it in two weeks time. But I still managed to work on a lot of features:

  • Fast ray intersection algorithms (spheres and triangles)
  • BVH (Bounding Volume Hierarchy)
  • NEE (Next Event Estimation)
  • Textures
  • Reflection
  • Anti-aliasing
At the end of the master class I got some really pretty results. And I even managed to make it realtime for small scenes.

Download + Source

Reliable UDP (C++)

For this project I decided to take on another challenge: Realtime UDP. I noticed that a lot of games use this technique to minimize latency and gain more control over their packets. With this technique you can assign different priorities to packets. Not all packets have to be reliable. For example: player position data is sent every frame. By setting the priority to unreliable we lose the overhead that the TCP protocol has, thus sending packets quicker. It doesn't matter that the packet is unreliable, because if we lose one in the process another one will arive a second later.

However, we cannot lose packets that contain for example collision responses or the player's health. It is crucial that we receive that information. This is where the reliable udp comes into play. I used this great guide by Gaffer on Games. By using that guide as reference I managed to create a reliable connection. With this system I have to lose 100% of the packets for more than a second to break it.
Mission accomplished!

Download + Source
Click here to check out my Game Projects