This video introduces a new live-coding series for "Big Hazel," a 3D game engine, alternating with the existing "Hazel 2D" series. The creator details the ongoing renderer rewrite, focusing on implementing a robust render graph-like system in Vulkan. Key technical discussions revolve around optimizing descriptor management, automating rendering dependencies through explicit pass definitions, and navigating the complexities of Vulkan's render pass and pipeline compatibility. The video also touches on the project's community-supported model and future plans for game development.
Summary:
0:00 - Introduction to "Big Hazel" Live-Coding: The creator announces a new format for his "Cherno Unplugged" channel: dedicated live-coding sessions for "Big Hazel," his 3D game engine, alternating every other Monday with the "Hazel 2D" series. This change aims to allocate more development time to the larger 3D engine project.
2:07 - Deep Dive into a Complex Project: The new series provides a transparent look into the development of a more serious, 3D game engine that has previously shipped games, showcasing the intricacies of a complex software project beyond tutorial series.
2:56 - Focus: Renderer Rewrite for Optimization: The immediate development task is a "renderer rewrite" for Hazel 3D, a significant undertaking aimed at modernizing and optimizing the rendering pipeline. The creator notes this task has seen limited dedicated time (approximately 12 hours) since its inception.
4:54 - New Render Pass System (Render Graph Concept): The core of the rewrite introduces a render graph-like system where render passes are explicitly declared with inputs and outputs.
Key Detail: Each render pass takes a pipeline and debug name, defining required inputs (e.g., uniform buffer sets, shadow data) and receiving outputs from previous passes (e.g., shadow map depth textures).
Key Takeaway: This approach is designed to improve descriptor management by avoiding per-frame reallocations for static descriptors and automatically handling rendering dependencies (like image memory barriers) between passes, making Vulkan layout transitions more seamless.
11:06 - Navigating Vulkan Render Pass Complexities: The creator explains the challenges inherent in Vulkan's render pass system, particularly how render passes are tied to frame buffers and can dictate image loading behavior (e.g., clearing vs. loading existing data).
Key Detail: The ability to bind multiple pipelines within a single render pass is discussed as a potentially functional approach, though not always optimal.
Challenge: Hazel's new design ties a render pass to a single pipeline, which creates a "pickle" for compositing scenarios (like rendering a grid over a 3D scene) that traditionally might use multiple pipelines within one render pass without clearing the frame buffer.
20:36 - Decision Against Vulkan Dynamic Rendering: The creator confirms he will not adopt Vulkan's Dynamic Rendering (a Vulkan 1.3 extension), citing the significant rewrite required for existing code and the need to maintain Vulkan 1.2 compatibility for broader game distribution to users with lower-end hardware and drivers.
23:46 - Hazel's Business Model and Future: Hazel is primarily supported by Patreon, offering patrons early access to source code and supporting the development team. The long-term plan includes a free binary release of "Big Hazel" by the end of the year, while code access remains exclusive to patrons. The engine also serves as a teaching tool and a platform for the team's own commercial game development (a "premium game" is in talks).
27:46 - Engine Philosophy vs. Godot: The creator expresses a personal preference for Hazel's straightforward usability over Godot (specifically prior versions like 3.5), noting Hazel's focus on PC/console development rather than mobile, and its cleaner visual aesthetic out-of-the-box.
29:05 - Future Technical Features: Ray tracing (path tracing via Vulkan) is actively being experimented with on a separate branch. DDGI (Dynamic Global Illumination) integration is also considered feasible.
36:07 - Live Debugging and Code Refinement: The video transitions into practical coding and debugging, addressing issues like incorrectly specified input resources for pipelines (e.g., camera for grid rendering), null textures, and validation errors related to fragment shader outputs and attachment mismatches. The process involves refactoring code to align with the new render pass design, particularly around uniform and storage buffers.
1:06:09 - Upcoming Schedule: The alternating schedule of "Big Hazel" and "Hazel 2D" streams will continue every two weeks. The creator plans to start future "Big Hazel" streams earlier to allow for longer coding sessions (aiming for a three-hour block).