C++ real-time software rasterizer. The primary goal of this project is to deepen understanding of 3D graphics fundamentals, rendering pipeline and graphics hardware.
Full OpenGL implementation (hardware rendering) is also available as a comparison.
-- Work in progress, actively being worked on --
A great starting point to understand the graphics pipeline, since all stages have to be manually programmed in a software rasterizer, whereas they are run hardwired in GPUs when using hardware acceleration.
- 3D scene loading with scene graph inspector, where you can manipulate nodes runtime.
- Orbiting, free moving camera.
- Fully customizable vertex and fragment shader with texture binding. Flat and varying interpolation available.
- Frustum, backface culling, depth test with z-buffer.
- Customizable pipeline with many configuration options, available runtime in Dear Imgui windows.
- Perspective correct, affine texture mapping.
- Rasterization rules adhering rasterizer.
- Flat, Gourard, Phong, Blinn-Phong shading.
- Gamma correction.
This project uses cmake as a build system and vcpkg as a package manager. [More build instructions will be available as the project will be closer to stable status]
Launch the project with launch profile "Launch RetroRenderer in workspaceRoot" to assure assets will be found correctly.