Fix render pass not clearing

This commit is contained in:
antopilo
2025-01-13 01:45:11 -05:00
parent 21150ba091
commit d5e987a89d
5 changed files with 30 additions and 32 deletions

View File

@@ -25,18 +25,22 @@ using namespace Nuake;
Ref<VkMesh> VkSceneRenderer::QuadMesh;
void VkSceneRenderer::Init()
{
LoadShaders();
SetGBufferSize({ 1280, 720 });
sceneRenderPipeline = CreateRef<SceneRenderPipeline>();
const std::vector<Vertex> quadVertices
{
{ Vector3(-1.0f, 1.0f, 1.0f), 0.0f, Vector3(0, 0, 1), 1.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3(1.0f, 1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 1.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3( 1.0f, 1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 1.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3(-1.0f, -1.0f, 1.0f), 0.0f, Vector3(0, 0, 1), 0.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3(1.0f, -1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 0.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3( 1.0f, -1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 0.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3(-1.0f, -1.0f, 1.0f), 0.0f, Vector3(0, 0, 1), 0.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) },
{ Vector3(1.0f, 1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 1.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) }
{ Vector3( 1.0f, 1.0f, 1.0f), 1.0f, Vector3(0, 0, 1), 1.0f, Vector4(1, 0, 0, 0), Vector4(0, 1, 0, 0) }
};
const std::vector<uint32_t> quadIndices
@@ -47,6 +51,19 @@ void VkSceneRenderer::Init()
QuadMesh = CreateRef<VkMesh>(quadVertices, quadIndices);
}
void VkSceneRenderer::LoadShaders()
{
// TODO: load embedded shaders in the future
VkShaderManager& shaderMgr = VkShaderManager::Get();
ShaderCompiler& shaderCompiler = ShaderCompiler::Get();
shaderMgr.AddShader("basic_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/triangle.frag"));
shaderMgr.AddShader("basic_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/triangle.vert"));
shaderMgr.AddShader("shading_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shading.frag"));
shaderMgr.AddShader("shading_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shading.vert"));
shaderMgr.AddShader("shadow_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shadow.frag"));
shaderMgr.AddShader("shadow_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shadow.vert"));
}
void VkSceneRenderer::SetGBufferSize(const Vector2& size)
{
Context.Size = size;
@@ -59,6 +76,9 @@ void VkSceneRenderer::BeginScene(RenderContext inContext)
Context.CurrentScene = inContext.CurrentScene;
Context.CameraID = inContext.CameraID;
// TODO: We shouldnt recopy everything if nothing has changed.
auto& scene = Context.CurrentScene;
auto& gpu = GPUResources::Get();
@@ -235,12 +255,6 @@ void VkSceneRenderer::BeginScene(RenderContext inContext)
}
// Copy CSM split depths
for (int i = 0; i < CSM_AMOUNT; i++)
{
//shadingPushConstant.CascadeSplits[i] = LightComponent::mCascadeSplitDepth[i];
}
// Update transforms, materials and lights.
// We need to push lights first to have bindless mapping for CSM
gpu.UpdateBuffers();
@@ -295,6 +309,8 @@ void VkSceneRenderer::BeginScene(RenderContext inContext)
//GBufferPipeline.Execute(passCtx);
// Set back the camera ID to the actual desired camera.
passCtx.cameraID = GPUResources::Get().GetBindlessCameraID(inContext.CameraID);
sceneRenderPipeline->Render(passCtx);
@@ -313,16 +329,3 @@ void VkSceneRenderer::EndScene()
cmd.TransitionImageLayout(drawImage, VK_IMAGE_LAYOUT_GENERAL);
cmd.TransitionImageLayout(output, VK_IMAGE_LAYOUT_GENERAL);
}
void VkSceneRenderer::LoadShaders()
{
// TODO: load embedded shaders in the future
VkShaderManager& shaderMgr = VkShaderManager::Get();
ShaderCompiler& shaderCompiler = ShaderCompiler::Get();
shaderMgr.AddShader("basic_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/triangle.frag"));
shaderMgr.AddShader("basic_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/triangle.vert"));
shaderMgr.AddShader("shading_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shading.frag"));
shaderMgr.AddShader("shading_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shading.vert"));
shaderMgr.AddShader("shadow_frag", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shadow.frag"));
shaderMgr.AddShader("shadow_vert", shaderCompiler.CompileShader("../Resources/Shaders/Vulkan/shadow.vert"));
}