3D Graphics Software Renderer

This project page includes a description of 3D graphics and 3D modeling features implemented in the program

View the Project on GitHub acjin21/graphics

3D Graphics Software Renderer

My Summer 2019 Software Engineering Internship Project at AMD


Utilized: C programming, 3D graphics algorithms

A simplified version of a 3D graphics API like OpenGL, with some 3D modeling application functionalities. Designed and built during my summer internship at AMD under the mentorship of Mac 3D Graphics Driver Director Chris Bentley.


Different Program Modes and How to Run Them

To avoid code duplication while separating features with different core functionalities, I created three main program modes: BASIC, SCENE, and IMAGE PROCESSING mode.

To make things easier (no pun intended), I included a make-file in the top-level directory.

Unfortunately, I have only gotten the program to compile and run properly on Mac OS machines, but I hope to extend the program to different platforms in the future.

After you cd into the 3d-renderer directory:

BASIC mode:

Use to test 3D rendering techniques on a single object at a time.
make run-basic

SCENE mode:

Use to test 3D rendering techniques and modeling application features on multi-object scenes.
make run-scene file="scenes/<file-name">

IMAGE PROCESSING mode:

Use to run various image processing algorithms on an image.
make run-image


Implemented Features

Basic Features

Rendering Optimizations

Additional Visual Effects

3D Modeling Features

Some Screenshots

Image of teapot frame
Teapot frame

Image of alpha-blended teapot
Teapot with alpha blending enabled

Texture Mapping

Image of bump-mapped teapot
Bump mapping

Image of cube-mapped teapot
Cube mapping

Shading

Image of teapot with flat shading
Flat shading

Image of teapot with phong shading
Phong shading

Image of teapot with phong shading with specular highlights
Phong shading with specular highlights

Post Processing

Image of teapot frame with post-processing pixelation effect
Pixelation (“Lincoln”) image processing effect

Image of teapot with depth of field post processing
Depth of field post processing


TODO: