Game Programming Journey Monthly – June 2019

Progress

  • Zooid Engine: Simple Render Graph System. This is a really simple system for now. Render Graph can contain multiple render passes. Each pass has input and output. Currently, input and output on the render graph only limited to Frame Buffer and Texture Buffer.
  • Zooid Engine: Implemented Deferred Shading using simple render graph. It is working now. Not really robust. There is still room from improvement.
  • Zooid Engine: Added some Render/GPU Debug group for debugging GPU calls on GPU Debugger tools.
  • Zooid Engine:Implemented Point light with shadow map. Current implementation of shadow map is using 4 2D texture separately instead of using them as a cubemap. It is easier for the current implementation of the engine. But I need to refactor the system to support cubemap to improve the performance.

Zooid Engine is a game engine that I’ve been working on since 2017 in my own free time as my personal project.

Below the deferred shading GBuffers (Note: Currently using the Lambertian model)

Position GBuffer
Normal GBuffer
Specular color (3 floats) + Specular power (1 float)
Ambient GBuffer – might not needed, or can be combined with other GBuffer
Color / Albedo GBuffer
Deferred shading result + Skybox rendered
Tonemapping + Gamma Correction

Learning/Tutorial

  • (Tutorial) LearnOpenGL (learnopengl.com): Finished Physically Based Rendering (PBR) – Image-Based Lighting computing Diffuse Irradiance.
  • (Book) Real-Time Rendering Third Edition: Chapter 7 – Advance Shading. The chapter contains physics introduction of shading and lighting, like Radiometry, Photometry, and Colorimetry. Then heavy part of all is the BRDF (Bidirectional Reflectance Distribution Function) Theory. This explains a basic math underlying of BRDF, type of BRDF and comparing both. Beside BRDF theory, there is also subchapter that explains how BRDF modeled and implemented. The last part of the chapter explains some practical techniques that can be used to implement shaders, such as forward shading, multi-pass light shading, and deferred light shading.
  • (Presentation) Deferred Shading by Shawn Hargreaves, GDC.

Tools

The one tool that I constantly use starting this month is NVIDIA NSight Graphics 2019.3. It’s a powerful debug tool to debug GPU draws/calls. I believe it supports various Graphics APIs, but now I’m only using it for OpenGL and DirectX 11.

NSight Graphics 2019.3 while working on ZooidEngine

In the tool, you can see the draw calls being made, the output of the draw calls (you can see on the top right of the UI), time needed to render certain draw call or program’s debug group, the graphic pipeline settings and shaders. Other helpful part is you can read and modify your shader on the fly. It’s really helpful if you want to tweak some value or fix a bug in the shader.

Leave a Reply

Your email address will not be published. Required fields are marked *