Skip to content

C++ real-time software rasterizer (w/ OpenGL impl for comparison). A great starting point to understand the graphics pipeline. (WIP)

Notifications You must be signed in to change notification settings

krisp3t/RetroRenderer

Repository files navigation

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 --

Screenshots

Screenshot 2024-12-08 230126

Table of Contents

Motivation

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.

Features

  • 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.

Build Instructions

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]

Run Instructions

Launch the project with launch profile "Launch RetroRenderer in workspaceRoot" to assure assets will be found correctly.

References

About

C++ real-time software rasterizer (w/ OpenGL impl for comparison). A great starting point to understand the graphics pipeline. (WIP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages