An open API service indexing awesome lists of open source software.

https://github.com/maxbrundev/rasterizer

WIP CPU Software Rasterizer - Basic and Advanced Rendering learning project
https://github.com/maxbrundev/rasterizer

Last synced: over 1 year ago
JSON representation

WIP CPU Software Rasterizer - Basic and Advanced Rendering learning project

Awesome Lists containing this project

README

          

## Realtime CPU Software Rasterizer
![rasterizer](https://github.com/maxbrundev/Rasterizer/assets/32653095/0c8099a7-6bdf-48cd-a0fb-d07e6d025843)

## Description
Basic and Advanced Rendering learning project.

## Features
- Triangle Rasterization
- Line Rasterization
- Texture Mapping
- Clipping (WIP need cleaning)
- Mipmapping (WIP need cleaning)
- MSAA (WIP need cleaning)
- Vertex pass
- Fragment pass
- Depth Writting
- Depth Testing
- OBJ Parsing

## To implement
- Improve architecture to mimic OpenGL API
- Profiling tools
...

⚠️ Optimization pass, architecture update and global project improvement is planned as soon as Mipmaps / Clipping / MSAA will be cleaned.

## Software
- Visual Studio 2022

## Dependencies
- SDL2 (Windowing and inputs)
- Assimp (3D model loader)
- GLM (Mathematics)
- stb_image (Image Loader)

## Compiling sources
Premake5 is used to generate project files.
To generate the project, execute `GenerateProject.bat`. By default, `GenerateProject.bat` will generate project files for Visual Studio 2022. If you want to use another version of Visual Studio you can execute `GenerateProject.bat` from the command line with the Visual Studio version as argument. (ex: `.\GeneratedProject.bat vs2019`)

## Licence
This project is licenced under an MIT Licence.

https://github.com/maxbrundev/Rasterizer/assets/32653095/d926e3d1-7a05-43bd-9327-5e661169e567

# Screenshots
![primitiveMode](https://github.com/maxbrundev/Rasterizer/assets/32653095/b64fe571-727d-4a26-b3eb-ddd2880add62)
*WIP Primitives Mode*

![TextureFilter](https://github.com/maxbrundev/Rasterizer/assets/32653095/b9a5a633-657d-4205-8575-53fdfb76b4b3)
*Texture Filter: Left Linear, Right Nearest.*

![mipmaps](https://github.com/maxbrundev/Rasterizer/assets/32653095/2aae379f-106f-4db3-85b7-4c7882392c71)
*Mipmapping: Left mipmaps off, Right mipmaps on.*

![clipping](https://github.com/maxbrundev/Rasterizer/assets/32653095/c23a9317-4718-475e-8232-5d0f201bc953)
![clipping](https://github.com/maxbrundev/Rasterizer/assets/32653095/f02a9ab8-7133-46ac-8207-5ba1e4d35e77)
*WIP Clipping*