Game Programming Journey Monthly – August 2019

This month is a really busy month for me. I had things going on almost every week. I got a small amount on time on reading books and working on my stuff. But, I managed to do some little works on my personal projects, did some small tutorials and read one rendering-related article.

Progress

  • Zooid Engine: Implemented and refactored how the light being processed in the light render pass. Previously, I rendered all lights in one draw call for each pixel. Now, I render each light per draw call and only process the pixels affected by light (rendering the shape of the light, e.g cone for spotlight and sphere for point light). Initially, I want to implement Light-Indexed Deferred Rendering. After reading the code provided, I don’t think it will do much on how Zooid Engine rendering works. I’ll probably save the implementation for later.
  • Zooid Engine: Now the project is using Premake to generate visual studio projects and solution. I tested to use it on my new machine, it worked perfectly great. There are several build systems for C++ projects other than Premake, such as CMake and Scons. I chose Premake because I have a history working with it and it perfectly fits the purpose here. Another reason, it’s using Lua to setup project meta. Since I’m already familiar with Lua, it’s less painful to me for setting up or extending the project’s build script.
  • Zooid UI: Implemented number stepper UI.
  • Zoo Ray Tracer: Refactored code to match my other project coding style. The code style was the same as Peter Shirley’s Ray Tracing tutorial code style as I followed the tutorial.

Zooid UI is my other personal project for Immediate-Mode Game UI after I watched a video from Casey Muratori about it here and looked at how far can it go from Dear ImgUI on Github. The project also has been integrated into Zooid Engine. The project now is very small and only has a couple of UI components implemented.

Zooid UI current state. From top to bottom inside of the panel: a button, a checkbox, 6 radio buttons belong to one group, a slider, a dropdown, a text input field, and a number stepper.

Tutorials/Learnings

  • (Tutorials) DirectX 11 from Rastertek.com: Finished multitexture and texture array tutorial.
  • (Tutorials) CUDA Tutorial series by Mark Harris (see here to start). The reason I go with CUDA is because I have NVIDIA graphics card that supports CUDA. It’s a bit of waste if I’m not leveraging it. I’m also thinking to integrate it on Zoo Ray Tracer (My ray tracer project) so I don’t need to wait hours just to render one scene.
  • (Article) Dues Ex: Human Revolution – Graphics Study by Andrian Courrèges. I’m starting to like reading Graphics studies from other different games. It amazes me how the rendering is done in a released game. I got some takeaway notes from reading this article. Some that I think I will implement on Zooid Engine, are how it generates the shadow screen-space information, creating silhouette effect and volumetric lights.

Leave a Reply

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