Two very interesting Render techniques within the field of computer graphics are Ray and Path tracing. These techniques calculate the path the light travels through the scene and rendering a Physically Based correct image. Since I wanted to improve my graphics programming knowledge and extend my knowledge of Physically Based lighting, I wanted to create a Ray and Path Tracer on the CPU. These techniques were implemented within my custom framework that was written in C++.
Ray Tracing was the first technique that I implemented where I mainly focussed on feature implementation in constrast to performance optimizations. I focussed on material and lighting types.
After the Ray Tracer was implemented, I started working on my Path Tracer implementation. In my Path Tracer, I implemented several features and BRDF's, while also doing performance optimizations, for example multithreading.
|Ray Tracer||Path Tracer|
|Point Lights with hard shadows||Multithreading|
|Lambertian BRDF||Lambertian BRDF|
|Blinn-Phong/Phong BRDF||Blinn-Phong/Phong BRDF|
|Refracted and Reflected Surfaces||Microfacet BRDF|
In this project I mainly learned about how Physically Based lighting works and how this relates to the Ray and Path tracing Rendering techniques. The next thing that I've learned was how BRDF's work with materials and how to apply them. Apart from these techniques, I've leanred the basics of multithreading, which I've never done before this project.
|Ray Tracing||Path Tracing||OpenGEX|