211 [[nodiscard]]
bool is_initialized()
const {
return m_shader_foundry !=
nullptr; }
223 const std::vector<RenderPassAttachment>& attachments);
232 vk::Format format = vk::Format::eB8G8R8A8Unorm,
233 bool load_clear =
true);
272 void begin_render_pass(
274 const std::shared_ptr<Core::Window>& window,
275 const std::array<float, 4>& clear_color = { 0.0F, 0.0F, 0.0F, 1.0F });
281 void end_render_pass(CommandBufferID cmd_id);
288 void bind_pipeline(CommandBufferID cmd_id, RenderPipelineID pipeline);
296 void bind_vertex_buffers(
297 CommandBufferID cmd_id,
298 const std::vector<std::shared_ptr<Buffers::VKBuffer>>& buffers,
299 uint32_t first_binding = 0);
307 void bind_index_buffer(
308 CommandBufferID cmd_id,
309 const std::shared_ptr<Buffers::VKBuffer>& buffer,
310 vk::IndexType index_type = vk::IndexType::eUint32);
318 void bind_descriptor_sets(
319 CommandBufferID cmd_id,
320 RenderPipelineID pipeline,
321 const std::vector<DescriptorSetID>& descriptor_sets);
331 CommandBufferID cmd_id,
332 RenderPipelineID pipeline,
345 CommandBufferID cmd_id,
346 uint32_t vertex_count,
347 uint32_t instance_count = 1,
348 uint32_t first_vertex = 0,
349 uint32_t first_instance = 0);
361 CommandBufferID cmd_id,
362 uint32_t index_count,
363 uint32_t instance_count = 1,
364 uint32_t first_index = 0,
365 int32_t vertex_offset = 0,
366 uint32_t first_instance = 0);
373 void present_rendered_image(CommandBufferID cmd_id,
const std::shared_ptr<Core::Window>& window);
391 void register_window_for_rendering(
392 const std::shared_ptr<Core::Window>& window,
393 RenderPassID render_pass_id);
399 void unregister_window(
const std::shared_ptr<Core::Window>& window);
404 [[nodiscard]]
bool is_window_registered(
const std::shared_ptr<Core::Window>& window)
const;
409 [[nodiscard]] std::vector<std::shared_ptr<Core::Window>> get_registered_windows()
const;
420 std::vector<DescriptorSetID> allocate_pipeline_descriptors(RenderPipelineID pipeline);
433 std::shared_ptr<Core::VKGraphicsPipeline>
pipeline;
448 std::atomic<uint64_t> m_next_pipeline_id { 1 };
449 std::atomic<uint64_t> m_next_render_pass_id { 1 };