mirror of
https://github.com/Kbz-8/42_vox.git
synced 2026-01-13 15:43:34 +00:00
initial commit
This commit is contained in:
50
ScopEngine/Runtime/Sources/Renderer/RenderPasses/Passes.cpp
git.filemode.normal_file
50
ScopEngine/Runtime/Sources/Renderer/RenderPasses/Passes.cpp
git.filemode.normal_file
@@ -0,0 +1,50 @@
|
||||
#include <Renderer/RenderPasses/Passes.h>
|
||||
#include <Renderer/Renderer.h>
|
||||
#include <Graphics/Scene.h>
|
||||
|
||||
namespace Scop
|
||||
{
|
||||
void RenderPasses::Init()
|
||||
{
|
||||
m_skybox.Init();
|
||||
m_2Dpass.Init();
|
||||
m_final.Init();
|
||||
|
||||
std::function<void(const EventBase&)> functor = [this](const EventBase& event)
|
||||
{
|
||||
if(event.What() == Event::ResizeEventCode)
|
||||
m_main_render_texture.Destroy();
|
||||
};
|
||||
EventBus::RegisterListener({ functor, "__ScopRenderPasses" });
|
||||
}
|
||||
|
||||
void RenderPasses::Pass(Scene& scene, Renderer& renderer)
|
||||
{
|
||||
if(!m_main_render_texture.IsInit())
|
||||
{
|
||||
auto extent = kvfGetSwapchainImagesSize(renderer.GetSwapchain().Get());
|
||||
m_main_render_texture.Init({}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_UNORM);
|
||||
}
|
||||
|
||||
m_main_render_texture.Clear(renderer.GetActiveCommandBuffer(), Vec4f{ 0.0f, 0.0f, 0.0f, 1.0f });
|
||||
scene.GetDepth().Clear(renderer.GetActiveCommandBuffer(), {});
|
||||
|
||||
if(scene.GetDescription().render_3D_enabled)
|
||||
m_forward.Pass(scene, renderer, m_main_render_texture);
|
||||
if(scene.GetDescription().render_skybox_enabled)
|
||||
m_skybox.Pass(scene, renderer, m_main_render_texture);
|
||||
if(scene.GetDescription().render_2D_enabled)
|
||||
m_2Dpass.Pass(scene, renderer, m_main_render_texture);
|
||||
|
||||
m_final.Pass(scene, renderer, m_main_render_texture);
|
||||
}
|
||||
|
||||
void RenderPasses::Destroy()
|
||||
{
|
||||
RenderCore::Get().WaitDeviceIdle();
|
||||
m_skybox.Destroy();
|
||||
m_2Dpass.Destroy();
|
||||
m_final.Destroy();
|
||||
m_main_render_texture.Destroy();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user