From 0ee2712029f53175552d459f908b163ad61de197 Mon Sep 17 00:00:00 2001 From: hachem Date: Sun, 23 Aug 2026 16:19:19 +0200 Subject: feat: RHI interface with shared scene and black hole renderers --- src/rendering/scene_renderer.h | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/rendering/scene_renderer.h (limited to 'src/rendering/scene_renderer.h') diff --git a/src/rendering/scene_renderer.h b/src/rendering/scene_renderer.h new file mode 100644 index 0000000..1f16afc --- /dev/null +++ b/src/rendering/scene_renderer.h @@ -0,0 +1,48 @@ +#pragma once + +#include "rhi.h" +#include "renderer_backend.h" +#include +#include + +namespace Donut +{ + struct CameraView + { + glm::mat4 view; + glm::mat4 projection; + glm::vec3 position; + int fb_width = 1; + int fb_height = 1; + }; + + class SceneRenderer + { + public: + auto init(RHI::Device& device) -> bool; + + auto render(RHI::CommandList& cmd, const CameraView& cam, + const std::vector& objects, int selected, + RHI::Texture* cubemap) -> void; + + private: + static constexpr int MAX_OBJECTS = 64; + + RHI::Device* m_device = nullptr; + + Ref m_grid_pipeline; + Ref m_grid_vb; + Ref m_grid_ubo; + int m_grid_vertex_count = 0; + + Ref m_sphere_pipeline; + Ref m_sphere_vb; + Ref m_sphere_ib; + int m_sphere_index_count = 0; + std::vector> m_sphere_ubos; + + Ref m_skybox_pipeline; + Ref m_skybox_vb; + Ref m_skybox_ubo; + }; +} -- cgit v1.3