feat: revamp 2D pipeline to use SDF's for rendering
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include <destrum/Graphics/Renderer.h>
|
||||
|
||||
#include <destrum/Graphics/Managers/LineRenderingManager.h>
|
||||
#include <destrum/Graphics/Managers/QuadRenderingManager.h>
|
||||
#include <destrum/Graphics/Managers/Renderer2D.h>
|
||||
#include <destrum/Graphics/Util.h>
|
||||
|
||||
#include <algorithm>
|
||||
@@ -50,8 +50,8 @@ void GameRenderer::init(GfxDevice& gfxDevice, RenderResources& _resources, glm::
|
||||
lineRenderingPass = std::make_unique<LineRenderingPass>();
|
||||
lineRenderingPass->init(gfxDevice, drawImageFormat);
|
||||
|
||||
quadRendererPass = std::make_unique<QuadRendererPass>();
|
||||
quadRendererPass->init(gfxDevice, _resources, drawImageFormat);
|
||||
renderer2DPass = std::make_unique<Renderer2DPass>();
|
||||
renderer2DPass->init(gfxDevice, _resources, drawImageFormat);
|
||||
|
||||
GameState::GetInstance().SetRenderer(this);
|
||||
initialized = true;
|
||||
@@ -70,7 +70,7 @@ void GameRenderer::beginDrawing(GfxDevice& gfxDevice)
|
||||
skinningPipeline->beginDrawing(gfxDevice.getCurrentFrameIndex());
|
||||
lightCullingPipeline->beginDrawing(gfxDevice.getCurrentFrameIndex());
|
||||
shadowLightDirection.reset();
|
||||
QuadRenderingManager::GetInstance().ClearQuads();
|
||||
Renderer2D::GetInstance().Clear();
|
||||
}
|
||||
|
||||
void GameRenderer::endDrawing()
|
||||
@@ -330,28 +330,25 @@ void GameRenderer::draw(VkCommandBuffer cmd, GfxDevice& gfxDevice, const Camera&
|
||||
}
|
||||
|
||||
{
|
||||
TracyVkZone(gfxDevice.getTracyVkCtx(), cmd, "QuadRendererPass::draw");
|
||||
vkutil::ScopedCmdLabel label(cmd, "QuadRendererPass::draw", vkutil::labelColors::ui);
|
||||
TracyVkZone(gfxDevice.getTracyVkCtx(), cmd, "Renderer2DPass::draw");
|
||||
vkutil::ScopedCmdLabel label(cmd, "Renderer2DPass::draw", vkutil::labelColors::ui);
|
||||
|
||||
quadRendererPass->draw(
|
||||
renderer2DPass->draw(
|
||||
cmd,
|
||||
gfxDevice,
|
||||
*resources,
|
||||
drawImage,
|
||||
glm::ortho(0.0f,
|
||||
static_cast<float>(drawImage.extent.width),
|
||||
static_cast<float>(drawImage.extent.height),
|
||||
0.0f, -1.0f, 1.0f));
|
||||
Renderer2DPass::screenProjection(drawImage));
|
||||
}
|
||||
}
|
||||
|
||||
void GameRenderer::drawQuads(
|
||||
void GameRenderer::draw2D(
|
||||
VkCommandBuffer cmd,
|
||||
GfxDevice& gfxDevice,
|
||||
const glm::mat4& projection)
|
||||
{
|
||||
const auto& drawImage = resources->getImage(drawImageId);
|
||||
quadRendererPass->draw(cmd, gfxDevice, *resources, drawImage, projection);
|
||||
renderer2DPass->draw(cmd, gfxDevice, *resources, drawImage, projection);
|
||||
}
|
||||
|
||||
void GameRenderer::cleanup(GfxDevice& gfxDevice)
|
||||
@@ -369,8 +366,8 @@ void GameRenderer::cleanup(GfxDevice& gfxDevice)
|
||||
if (lineRenderingPass)
|
||||
lineRenderingPass->cleanup(gfxDevice);
|
||||
|
||||
if (quadRendererPass)
|
||||
quadRendererPass->cleanup(gfxDevice);
|
||||
if (renderer2DPass)
|
||||
renderer2DPass->cleanup(gfxDevice);
|
||||
|
||||
if (lightCullingPipeline)
|
||||
lightCullingPipeline->cleanup(gfxDevice);
|
||||
@@ -399,7 +396,7 @@ void GameRenderer::cleanup(GfxDevice& gfxDevice)
|
||||
skyboxPipeline.reset();
|
||||
skinningPipeline.reset();
|
||||
lineRenderingPass.reset();
|
||||
quadRendererPass.reset();
|
||||
renderer2DPass.reset();
|
||||
lightCullingPipeline.reset();
|
||||
shadowMapPipeline.reset();
|
||||
shadowLightDirection.reset();
|
||||
|
||||
Reference in New Issue
Block a user