The BrickGame repo on GitHub now supports UE 4.8, and my UnrealEngine repo has a branch of 4.8 with changes for BrickGame. With 4.8, Epic made material ambient occlusion work again if static lighting is disabled in the INI, so it’s no longer necessary to use the modified engine branch to get ambient occlusion. However, there’s still a small change in the engine code to prevent the material ambient occlusion from masking the LPV lighting, so the emissive bricks will work underground. It’s also still necessary to use a modified engine to get the per-component backface culling that helps BrickGame performance greatly. I changed how that code works to be a smaller modification of similar functionality that Epic has since added for Landscape LODs, and submitted a pull request to Epic, so hopefully that can be merged into the official UE4.
Apart from upgrading to 4.8, I made two other changes:
- I made the render component initialization use an asynchronous task to avoid blocking the game thread when a render component becomes visible. The initialization task will be kicked off when the render component’s scene proxy is created in the game thread, and the rendering thread will wait for it to finish before creating the RHI resources for the data it initializes (the vertex and index data).
- I fixed a bug that was causing the tangent and binormal vectors to be zero on bricks. Normal maps were broken for a long time, and nobody noticed, myself included!
I also spent some time playing with BrickGame combined with NVIDIA’s VXGI. By playing, I do mean playing. It requires a very powerful GPU to get good performance, but it looks much better than the light propagation volumes that BrickGame uses by default. I posted a binary build on GitHub: /releases/tag/v0.9-VXGI
Try it out if you have a fast GPU!