Skip to content

A lightweight rendering system designed for basic graphics tasks, including rasterization, shading, and texturing. It provides essential features for handling transformations, lighting, and pixel management - written in C++.

Notifications You must be signed in to change notification settings

AaryaDevnani/3D-Renderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gz Graphics Library

Overview

The Gz Graphics Library is a basic rendering system designed to support various rendering tasks including pixel management, rasterization, transformations, shading, and texturing. Below are the key features implemented:

  • Display and Pixel Management: Created and managed a pixel-based display using a frame buffer. Supported writing display content to PPM format and visualizing results in a Windows frame buffer.

  • Triangle Rasterization with Z-Buffer: Implemented a triangle rasterizer using scan-line conversion techniques. Performed Z-buffering for hidden surface removal. Interpolated Z-values for each pixel within triangles.

  • Transformations and Camera Setup: Supported rotation, translation, and scaling transformations using matrix operations. Utilized a matrix stack for incremental transformation management. Provided camera setup with field-of-view, position, and orientation controls. Clipped triangles behind the view plane for optimal rendering.

  • Shading Techniques: Added flat shading, Gouraud shading (vertex color interpolation), and Phong shading (per-pixel normal interpolation). Enabled interpolation of colors and normals across triangle surfaces. Supported ambient and directional lighting with customizable light properties.

  • Texturing and Procedural Textures: Enabled texture mapping with PPM image support. Applied perspective-corrected texture interpolation for accurate mapping. Implemented bilinear texture interpolation for enhanced visual quality. Created procedural textures with user-defined patterns.

Samples

Transformations:

Transformation Sample

Shading:

Shading Sample

Texturing:

Texturing Samples

About

A lightweight rendering system designed for basic graphics tasks, including rasterization, shading, and texturing. It provides essential features for handling transformations, lighting, and pixel management - written in C++.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published