Advanced Rendering Techniques

Subject: CS562 (Elective)
Instructor: Jon Sanchez
Language: C++ and OpenGL

Course Description

This course introduces students to data structures, algorithms, and techniques concerned with rendering images more accurately and efficiently in interactive computer simulations and video game software.

Deferred Shading and Bloom

This project was about implementing a deferred shading pipeline and the bloom post processing effect. In order to achieve this, I first had to create all of the framework… window, input detection, gui, gltf model loading, shaders, etc…

In the demo it is possible to visualize the diffuse, normal and specular buffers, the depth buffer and the final image. There are controls to enable and disable bloom, change the number of lights and their radius among other little things.

Cascade Shadow Maps

This project was about implementing cascade shadow maps, a technique used to reduce the amount of resources used to render shadows in large open worlds. In my rendering pipline I support up to three cascades but this can easily be changed to support different numbers. I also implemented cascade visualization through colors, shadow map visualization, blending between cascades, different kind of cascade splitting (uniform, exponential and hybrid) as well as some debugging tools to help me visualize the technique. In addition to that, it is possible to use Percentage Close Filtering (PCF) to have smoother edged shadows.

Screen Space Decals

I implemented decals (stickers) using a screen space technique, which allows to customize environments without needing to edit textures in an external program.

Alchemy Ambient Obscurance

Alchemy Ambient Obscurance is a technique done in screen space that tries to approximate the effect of indirect lighting on shading an object. Apart from implementing ambient occlusion, I also implemented Bilateral Filtering to blur the noisy texture generated by the ambient pass (with low samples) and created a program that generated random Halton Numbers in order to randomly rotate vectors.

Final Project: Volumetric Shadows

I decided to implement Volumetric Shadows using Polygonal Light Volumes (based on a paper) because it is an effect I find very spectacular and helpful in order to add depth and dramatism to scenes, overhauling the overall image. After completing the project I wrote a report explaining what the technique was about, how I implemented it and things I struggled with and would like to improve.