**Software Renderer & Ray Tracer (2019)** ![Ray traced scene with reflective and refractive materials.](images/swrender_ray_tracing_1.png width="384px") # What Is It? As part of my final year project at university, I developed a non real-time software rasteriser and ray-tracer from scratch in C++. (Only the C standard library was used) The program could render scenes using rasterisation or ray tracing depending on a compile-time switch. I used this program to help write my dissertation, which was a comparison and evaluation of the two different rendering methods. ![Investigating the result of varying the size of the shadow map.](images/swrender_shadows.png width="384px") # Features Implemented: * Rasteriser with Phong shading and shadow mapping. * Ray tracer with Phong shading and support for reflective and refractive materials. * Math library with support for 4x4 matrices and vectors. * Scene composition with multiple objects with their own transforms. * Loading OBJ models. * Writing output to TGA image files. ![Rasterised scene with shadow mapping.](images/swrender_rasterisation.png width="384px") ![Investigating the result of varying the refractive index of a material. (Click for fullscreen)](images/swrender_refraction_comparison.png width="512px")