The Mango Software Renderer is an educational piece that provides a deep dive into the inner workings of the 3D rendering pipeline. This project showcases the rendering pipeline typically abstracted by graphics APIs like OpenGL, Vulkan, etc. This project expands further and implements features that you would typically do in a computer graphics course.
This software renderer is not intended for real-world use due to its CPU-bound nature. In contrast, modern rendering APIs leverage the GPU for high-performance computations.
- Rendering of 3D GameObjects
- Loading triangulated OBJ files
- Vertex / Fragment Shader pipeline
- View frustum clipping
- Model View Perspective transformations (MVP)
- Blinn-Phong shader for realistic lighting
- Multi-light fragment shader
- Texture Sampling
- Wireframe
- View Normals
- View UV map
- View only textures
- View only colors
- View only lighting
- Enable/Disable rasterization
- Enable/Disable Signed Distance Field rendering (SDF) (WIP)
- CMake 3.27.7 A cross-platform build system. You can download it here.
Once you have CMake installed, follow these steps to build the project:
cd Mango-Software-Renderer
git submodule update --init --recursive
mkdir build
cd build
cmake ..
Once built, you can run the renderer in the build folder as follows:
.\mango_renderer
This project is licensed under the MIT License.