gemini-2.5-flash-preview-05-20| input-price: 0.15 output-price: 3.5 max-context-length: 128_000 (cost: $0.01) · Anfrage: 2025-06-04T08:42:45.842711
Generated by rs-summarizer Version unbekannt
Abstract:
This live stream documents Aerno's return to programming on the Hazel game engine, focusing on the "Renderer 2025" project. This major refactoring effort involves migrating Hazel's rendering backend from a direct Vulkan implementation to utilize Nvidia's NVRHI library, which serves as an abstraction layer for various graphics APIs (Vulkan, DirectX11, DirectX12). The stream meticulously details the process of porting core rendering components—including Index Buffers, Vertex Buffers, Pipelines, Images, FrameBuffers, Textures, and Compute Pipelines—by adapting Hazel's existing API to NVRHI's paradigms. Key challenges tackled include managing different resource creation patterns, handling API-specific nuances like framebuffer load/store operations, and addressing extensive compilation errors. A significant amount of Vulkan-specific code is deleted as part of this transition. Future major tasks identified include rewriting the ImGui renderer and overhauling the descriptor set management system to align with NVRHI. The overarching goal of this work is to modernize Hazel's renderer and pave the way for a free, binary release of the engine (Hazel 1.0).
Hazel Engine - Renderer 2025 Refactor with NVRHI (Live Stream)
renderer_2025 branch, aiming to modernize the renderer and enable Hazel's eventual free public release (Hazel 1.0).hazelengine.com/roadmap outlining NVRHI support for Vulkan and D3D12. This requires shader cross-compilation (SPIR-V for Vulkan, DXIL/DXBC for DX). He considers switching from GLSL to HLSL for easier cross-API shader management, despite his preference for GLSL.IndexBuffer.cpp and VertexBuffer.cpp.Create functions becoming the preferred way to instantiate objects. This simplifies the API for users, as NVRHI handles the backend-specific object creation.Pipeline implementation is migrated from its Vulkan-specific class (VulkanPipeline.cpp) to the base Pipeline.h/cpp as it now uses NVRHI. The old VulkanPipeline files are then deleted, marking significant progress.Image.cpp and Image2D.cpp from VulkanImage.cpp, adapting them to NVRHI's TextureSubresourceSet for image views. The VulkanImage files are subsequently deleted.FrameBuffer.cpp proves challenging. Hazel's FrameBufferSpecification combines color and depth attachments, while NVRHI's NVRHI::FrameBufferDescription separates them. A major "to-do" is identified regarding framebuffer load/store operations (clear vs. load), as NVRHI's default behavior needs explicit management.Texture.cpp and TextureCube.cpp are ported, involving NVRHI::TextureDescription and NVRHI::SamplerDesc for texture creation. Acknowledging a legacy design, each texture currently creates its own sampler, a practice that might be revisited. The VulkanTexture files are deleted.VulkanImGui.cpp) is deeply tied to Vulkan and will require a complete rewrite for NVRHI, presenting a significant upcoming challenge.DescriptorSetManager is heavily Vulkan-specific. A complete redesign is needed to align with NVRHI's BindingSetDescription and BindingSet concepts for resource management.ComputePipeline.cpp, mapping it to NVRHI::ComputePipelineDescription and ComputeState for dispatch. He notes NVRHI offers unexpected granularity and control for compute shaders.