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: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

At last, just finished last book of @Peter_shirley's mini books. The last book has a really good introduction to the math required to make a better ray tracing renderer. Thanks for creating really good books!I still need to figure out why my reflected rays on sphere looks off. pic.twitter.com/iFyYIPHMHB

(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.

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.