SDEngine
Game Engine
Loading...
Searching...
No Matches
VulkanRenderer.hpp
Go to the documentation of this file.
1// TODO(docs): Add file-level Doxygen header
2// - @file VulkanRenderer.hpp
3// - @brief Frame rendering orchestration
4// - Relationship to VulkanContext, VulkanWindow, PipelineFactory, ShaderLibrary
5#pragma once
6
8#include "SD/core/base.hpp"
11#include "VulkanContext.hpp"
12#include "VulkanWindow.hpp"
13#include "vulkan_config.hpp"
14
15namespace sd {
16// TODO(docs): Document VulkanRenderer class
17// - Purpose: Orchestrates frame rendering (BeginFrame, BeginRenderPass, EndFrame)
18// - Command buffer management
19// - Clear color and render state
20// - Subsystems (ShaderLibrary, PipelineFactory)
21// - Example rendering loop
23public:
25 void init();
26
27 vk::CommandBuffer begin_command_buffer(VulkanWindow& vw);
29 vk::CommandBuffer begin_frame(VulkanWindow& vw); // Legacy, calls both
30 vk::Result end_frame(VulkanWindow& vw);
31
32 void set_clear_color(const std::array<float, 4>& color) { m_clear_color = color; }
33
34 void reload_shaders();
35
36 //~ Subsystems
39
40private:
44
45 std::array<float, 4> m_clear_color{0.1f, 0.1f, 0.1f, 1.0f};
46
47 std::unique_ptr<ShaderLibrary> m_shaders;
48 std::unique_ptr<PipelineFactory> m_pipelines;
49};
50} // namespace sd
Tracks frame timing, fixed timestep accumulation, and CPU work time.
Definition FrameTimer.hpp:21
Creates and owns graphics pipelines. Handles cleanup on destruction.
Definition PipelineFactory.hpp:23
Compiles HLSL → SPIR-V and caches VkShaderModules.
Definition ShaderLibrary.hpp:24
Definition VulkanContext.hpp:22
Definition VulkanRenderer.hpp:22
ShaderLibrary & get_shader_library()
Definition VulkanRenderer.hpp:37
vk::CommandBuffer begin_command_buffer(VulkanWindow &vw)
Definition VulkanRenderer.cpp:20
std::unique_ptr< PipelineFactory > m_pipelines
Definition VulkanRenderer.hpp:48
vk::CommandBuffer begin_frame(VulkanWindow &vw)
Definition VulkanRenderer.cpp:78
std::unique_ptr< ShaderLibrary > m_shaders
Definition VulkanRenderer.hpp:47
VkDevice m_device
Definition VulkanRenderer.hpp:42
VulkanContext & ctx
Definition VulkanRenderer.hpp:41
PipelineFactory & get_pipeline_factory()
Definition VulkanRenderer.hpp:38
void begin_render_pass(VulkanWindow &vw)
Definition VulkanRenderer.cpp:49
void set_clear_color(const std::array< float, 4 > &color)
Definition VulkanRenderer.hpp:32
std::array< float, 4 > m_clear_color
Definition VulkanRenderer.hpp:45
vk::Result end_frame(VulkanWindow &vw)
Definition VulkanRenderer.cpp:84
void reload_shaders()
Definition VulkanRenderer.cpp:126
FrameTimer & m_timer
Definition VulkanRenderer.hpp:43
void init()
Definition VulkanRenderer.cpp:13
Definition VulkanWindow.hpp:35
Definition Application.hpp:28
constexpr T g_type_max
Definition types.hpp:21