Iris is a fully functional software rasterizer written in C.
It implements the fundamentals of a 3D rendering pipeline without relying on external graphics libraries or hardware acceleration.
⚠️ Status: Work in Progress (WIP)
This project is under active development. Many features are incomplete or experimental.
- Perspective-correct projection using projection matrices
- Geometry and Models
- Camera and Transformations
- Loading and parsing OBJ files (vertices, faces, textures)
- Back-face culling
- Translation, scaling, and rotation matrices for world transforms
- Lighting and Shading
- Flat shading
- Texture loading and mapping (PNG loading using uPNG)
- Perspective-correct interpolation of UV coordinates
- Depth-based rendering using a Z-buffer
- Camera space and Movement
- Frustum clipping
- Rendering multiple meshes simultaneously
🚧 This section lists upcoming changes and improvements targeted for the next minor version 🚧
- Refactoring and Code comments
- Texture mapping
- Implement PNG decoding
- Textured OBJ files
- Update painter's algorithm to Z-buffering
iris/
├── assets/ # 3D models, textures, and other resource files
├── build/ # Compiled binaries (ignored by Git)
├── src/ # All source code for the renderer
├── .clang-format # Code style configuration
├── .gitignore # Untracked files
├── LICENSE # Project license
├── Makefile # Build script
└── README.md # This file
This project is licensed under the MIT License.