REAL-TIME RENDERER
Computer Graphics ✶ C++, OpenGL
via Andy van Dam's Computer Graphics slides
The OpenGL rendering pipeline is a technique for real-time, responsive rendering. My implementation focuses on the vertex shader, fragment shader, and framebuffer operations.
Results
The key features of this renderer include:
Customizable tessellation -- This enables rendering in both low poly and high poly styles.
Camera and near/far plane interactibility -- Because the OpenGL rendering pipeline is so efficient, frames can be generated multiple times per second, enabling real-time camera movement (via keyboard/mouse input) and near/far plane adjustment.
Filters -- Using framebuffer operations, a per-pixel filter (black and white) and a kernel filter (blur) can be applied to any rendering.
This demo displays the aforementioned key features. The images below are stills from the demo.
Maximum tessellation applied
Per-pixel filter (black and white) applied
Minimum tessellation applied
Kernel filter (blur) applied
What's next?
There are lots of ways I could extend this project. I'm most interested in how I could make it more photorealistic.
I could implement some kind of mapping for the appearance of physical texture, such as:
normal mapping (I actually already did this in another project!)
tangent space normal mapping
bump mapping
displacement mapping
parallax mapping
I could compute shadows, perhaps using a method like:
projective shadows
stencil shadow volumes
shadow mapping
A project of much larger scope could be to combine the concepts from this project and my raytracer for super-fast, super-realistic, hybrid rendering!
Thank you Daniel Ritchie (for bestowing me with the knowledge to create this) and thank you to the CS1230 team (for providing scene files and code for the UI + file reader)!