Adding simple visibility pass

This commit is contained in:
Dynamitos
2024-06-04 21:34:14 +02:00
parent 157368a241
commit ad00e16cf9
10 changed files with 160 additions and 25 deletions
@@ -0,0 +1,63 @@
#include "VisibilityPass.h"
using namespace Seele;
VisibilityPass::VisibilityPass(Gfx::PGraphics graphics, PScene scene)
: RenderPass(graphics, scene)
{
}
VisibilityPass::~VisibilityPass()
{
}
void VisibilityPass::beginFrame(const Component::Camera& cam)
{
RenderPass::beginFrame(cam);
visibilityDescriptor->reset();
visibilitySet = visibilityDescriptor->allocateDescriptorSet();
visibilitySet->updateTexture(0, visibilityAttachment->getTexture());
visibliitySet->updateBuffer(StaticMeshVertexData::getInstance()->get)
}
void VisibilityPass::render()
{
}
void VisibilityPass::endFrame()
{
}
void VisibilityPass::publishOutputs()
{
visibilityDescriptor = graphcis->createDescriptorLayout("pVisibilityParams");
visibilityDescriptor->addDescriptorBinding(Gfx::DescriptorBinding{ .binding = 0, .descriptorType = Gfx::SE_DESCRIPTOR_TYPE_SAMPLED_IMAGE, });
visibilityDescriptor->addDescriptorBinding(Gfx::DescriptorBinding{ .binding = 1, .descriptorType = Gfx::SE_DESCRIPTOR_TYPE_STORAGE_BUFFER, .access = Gfx::SE_DESCRIPTOR_ACCESS_READ_WRITE_BIT, });
visibilityDescriptor->create();
visibilityLayout = graphics->createPipelineLayout("VisibilityLayout");
visibilityLayout->addDescriptorLayout(viewParamsLayout);
visibilityLayout->addDescriptorLayout(visibilityDescriptor);
ShaderCreateInfo createInfo = {
.name = "Visibility",
.mainModule = "VisibilityCompute",
.entryPoint = "computeMain",
.rootSignature = visibilityLayout,
};
visibilityShader = graphics->createComputeShader(createInfo);
visibilityLayout->create();
Gfx::ComputePipelineCreateInfo pipelineInfo;
pipelineInfo.computeShader = visibilityShader;
pipelineInfo.pipelineLayout = std::move(visibilityLayout);
visibilityPipeline = graphics->createComputePipeline(std::move(pipelineInfo));
}
void VisibilityPass::createRenderPass()
{
visibilityAttachment = resources->requestRenderTarget("VISIBILITY");
}