top of page
final_edited.jpg

Engine programming

 

As the final project for an advanced computer graphics course at uni, I developed an engine using OpenGL and C++. It supports PBR shading, deferred rendering and SSAO. 

For the physically-based shading, I used the approximations chosen by Brian Karis for UE4's shading model. That is, GGX (Trowbridge-Reitz) for the specular distribution, Schlick's approximation for Fresnel and Schlick-GGX for geometric shadowing.

My implementation of deferred rendering utilizes four buffers for the final light shading: albedo, normals, roughness/metalness/AO packed in RGB and world-space positions.

The SSAO uses a normal-oriented hemisphere sampling and is based on John Chapman's and learnopengl tutorials.

Rasterizer

In the same course, I also implemented a rasterizer (C++), in order to better understand the underlying workings of OpenGL and other graphics APIs.

Below, I compare the rendering of a cow using my rasterizer (Close2GL) and OpenGL. Apart from some minor differences at the borders of the object, the two images generated are visually alike.

bottom of page