Here are my Graphics Projects sorted from latest to oldest.


1. Bokeh Depth Of Field

[Blog Post, GitHub]

It's been a month since I decided to challenge my self with implementing Bokeh Depth of Field effect and began learning complex postfx pipelines.

I've learned a lot about post processing and I'm a lot more comfortable with Scatter-as-Gather thinking

There are 3 methods used to create Depth of Field Effect described briefly in this blog post


2. Graphics Projects

Motivations for these Projects were to get comfortable with TheForge API and gain more experience with some Graphics Techniques I'm interested in.

[Blog Post, GitHub]

  1. Bloom
  2. Tessellation
  3. Toon Shading
  4. Deffered Lighting
  5. Instancing

Bloom

Bloom gives noticeable visual cues about the brightness of objects as bloom tends to give the illusion objects are really bright.

The technique used is to render the bloom-affected objects to a 256x256 FBO and then blurred and added to the final scene. Technique based on GPU Pro 2 : Post-Processing Effects on Mobile Devices and SachaWilliens Vulkan Example

The Final pass is ToneMapping / Exposure Control and Gamma Correction and all the frame buffers before that are rendered as HDR (R16G16B16A16)


Tessellation

Tessellation using Hull/Control and Domain/Evaluation Shader in HLSL and GLSL. PN-Triangles is a method using Bezier Triangles and does not require a heightmap to improve quality of the geometry unlike the first technique which is simple and passthrough tessellation


Toon Shading

Simple Toon Shading with outlining. It uses Stencil Buffers to draw the cool outlines.


Deffered Lighting

Blinn-Phong Deferred Rendering. It writes to normal/position/color map in the 1st Pass, Then uses the Lights Data Passed to GPU as Uniform and Structured Buffers to calculate the colors using these textures.

Deferred Rendering doesn't work too well on High Resolution (2K/4K) devices such as consoles due to it's memory and It's suggested to use Visibility Buffers instead.

Also on Mobile devices it's good to uses subpasses for tile-based rendering instead of Render Passes, again because of high memory size.


3. SIMD and GPGPU Collision Detection

Implementing Different Methods of Circle to Circle Collision with Spatial Partitioning Techniques and Vulkan Graphics Compute and SIMD AVX2 Technologies

Resources and More Details and Charts are on Github Page.

[GitHub]

Motivation

This Project Is For Learning Purposes of Following Topics

Circles were chosen to focus more on Broad-Phase algorithms of the Collision Detection Pipeline.