Graphics Programming Self-Tuition (OpenGL)

(Personal Project)

Multiple sphere meshes rendered with increasing roughness (left to right) and decreasing metallic (top to bottom), lit using four point lights and an environment map.

Description

In my spare time I have been teaching myself foundational graphics programming concepts like shader programming, simple lighting and texturing, through to more advanced topics, all in OpenGL. The techniques I’ve covered include:

Physically-Based Rendering w/ Image-Based Lighting:

Realistic rendering of multiple material types and meshes using the Cook-Torrance BRDF, using convoluted and filtered environment maps for ambient diffuse and specular lighting.

Deferred Rendering + SSAO:

+

+

=

A scene lit by 32 point lights, rendered efficiently by packing lighting information into buffers, generating ambient occlusion results and then performing lighting once using all buffers, rather than 32 times per model.

Soft Shadows via Exponential and Variance Shadow Mapping:

Soft shadows rendered using Exponential Shadow Mapping (left) and Variance Shadow Mapping (right).

Normal Mapping + Parallax-Occlusion Mapping:

A flat plane built from two triangles, with faked geometric detail via parallax-occlusion mapping and realistic lighting via normal mapping.

All this work and more gave me the knowledge and skills necessary to tackle volumetric fog rendering, which I worked on for my honours project. Of course this is only scratching the surface of what’s possible with modern graphics programming, I’ll be updating this website with more sophisticated graphics demos built with other graphics APIs like Direct3D and Vulkan in the near future. Watch this space!