Started pipeline renderpass inputs

This commit is contained in:
antopilo
2025-01-07 23:25:16 -05:00
parent d2cd2a542c
commit 3e92a6c7f4
4 changed files with 41 additions and 10 deletions

View File

@@ -172,9 +172,25 @@ TextureAttachment& RenderPass::GetAttachment(const std::string& name)
return Attachments[0];
}
void RenderPass::AddInput(const TextureAttachment& name)
std::vector<TextureAttachment&> RenderPass::GetAttachments()
{
Inputs.push_back(name);
std::vector<TextureAttachment&> attachentRefs;
attachentRefs.reserve(Attachments.size());
for (auto& attachment : Attachments)
{
attachentRefs.push_back(attachment);
}
return attachentRefs;
}
void RenderPass::AddInput(const std::string& name)
{
InputNames.push_back(name);
}
void RenderPass::SetInput(const std::string& name, TextureAttachment& attachment)
{
Inputs[name] = attachment;
}
void RenderPass::SetShaders(Ref<VulkanShader> vertShader, Ref<VulkanShader> fragShader)
@@ -262,9 +278,21 @@ RenderPass& RenderPipeline::GetRenderPass(const std::string& name)
void RenderPipeline::Build()
{
std::map<std::string, TextureAttachment&> attachments;
for (auto& pass : RenderPasses)
{
pass.Build();
for (auto& attachment : pass.GetAttachments())
{
attachments[attachment.Name] = attachment;
}
}
for (auto& pass : RenderPasses)
{
}
Built = true;

View File

@@ -51,7 +51,8 @@ namespace Nuake
std::vector<TextureAttachment> Attachments;
TextureAttachment DepthAttachment;
std::vector<TextureAttachment> Inputs;
std::vector<std::string> InputNames;
std::map<std::string, TextureAttachment> Inputs;
std::any PushConstant;
size_t PushConstantSize;
@@ -78,8 +79,10 @@ namespace Nuake
std::string GetName() const { return Name; }
TextureAttachment& AddAttachment(const std::string& name, ImageFormat format, ImageUsage usage = ImageUsage::Default);
TextureAttachment& GetAttachment(const std::string& name);
std::vector<TextureAttachment&> GetAttachments();
void AddInput(const TextureAttachment& attachment);
void AddInput(const std::string& name);
void SetInput(const std::string& name, TextureAttachment& attachment);
void SetShaders(Ref<VulkanShader> vertShader, Ref<VulkanShader> fragShader);
template<typename T>
@@ -107,6 +110,7 @@ namespace Nuake
std::vector<RenderPass> RenderPasses;
public:
RenderPipeline();
~RenderPipeline() = default;

View File

@@ -73,10 +73,6 @@ void VkSceneRenderer::BeginScene(RenderContext inContext)
GBufferPipeline.Execute(passCtx);
}
ModelPushConstant modelPushConstant{};
void VkSceneRenderer::DrawScene()
{
}
void VkSceneRenderer::EndScene()
{
@@ -324,6 +320,11 @@ void VkSceneRenderer::CreatePipelines()
});
auto& shadingPass = GBufferPipeline.AddPass("Shading");
shadingPass.AddAttachment("Output", ImageFormat::RGBA16F);
GBufferPipeline.Build();
}
@@ -335,7 +336,6 @@ void VkSceneRenderer::SetGBufferSize(const Vector2& size)
void VkSceneRenderer::UpdateCameraData(const CameraData& data)
{
CameraData adjustedData = data;
adjustedData.View = Matrix4(1.0f); //data.View;
adjustedData.View = data.View;
adjustedData.Projection = data.Projection;

View File

@@ -101,7 +101,6 @@ namespace Nuake
void UpdateCameraData(const CameraData& data);
void BeginScene(RenderContext inContext);
void DrawScene();
void EndScene();
private: