|
|
@@ -209,7 +209,13 @@ void Ssao::populateRenderGraph(RenderingContext& ctx)
|
|
|
pass.newDependency({m_r->getDepthDownscale().getHiZRt(), TextureUsageBit::SAMPLED_COMPUTE, HIZ_HALF_DEPTH});
|
|
|
pass.newDependency({m_runCtx.m_rts[0], TextureUsageBit::IMAGE_COMPUTE_WRITE});
|
|
|
|
|
|
- pass.setWork(runMainCallback, this, 0);
|
|
|
+ pass.setWork(
|
|
|
+ [](RenderPassWorkContext& rgraphCtx) {
|
|
|
+ Ssao* const self = static_cast<Ssao*>(rgraphCtx.m_userData);
|
|
|
+ self->runMain(*self->m_runCtx.m_ctx, rgraphCtx);
|
|
|
+ },
|
|
|
+ this,
|
|
|
+ 0);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -226,7 +232,13 @@ void Ssao::populateRenderGraph(RenderingContext& ctx)
|
|
|
{m_r->getDepthDownscale().getHiZRt(), TextureUsageBit::SAMPLED_FRAGMENT, HIZ_HALF_DEPTH});
|
|
|
pass.newDependency({m_runCtx.m_rts[0], TextureUsageBit::FRAMEBUFFER_ATTACHMENT_WRITE});
|
|
|
|
|
|
- pass.setWork(runMainCallback, this, 0);
|
|
|
+ pass.setWork(
|
|
|
+ [](RenderPassWorkContext& rgraphCtx) {
|
|
|
+ Ssao* const self = static_cast<Ssao*>(rgraphCtx.m_userData);
|
|
|
+ self->runMain(*self->m_runCtx.m_ctx, rgraphCtx);
|
|
|
+ },
|
|
|
+ this,
|
|
|
+ 0);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -236,7 +248,13 @@ void Ssao::populateRenderGraph(RenderingContext& ctx)
|
|
|
{
|
|
|
ComputeRenderPassDescription& pass = rgraph.newComputeRenderPass("SSAO blur");
|
|
|
|
|
|
- pass.setWork(runBlurCallback, this, 0);
|
|
|
+ pass.setWork(
|
|
|
+ [](RenderPassWorkContext& rgraphCtx) {
|
|
|
+ Ssao* const self = static_cast<Ssao*>(rgraphCtx.m_userData);
|
|
|
+ self->runBlur(rgraphCtx);
|
|
|
+ },
|
|
|
+ this,
|
|
|
+ 0);
|
|
|
|
|
|
pass.newDependency({m_runCtx.m_rts[1], TextureUsageBit::IMAGE_COMPUTE_WRITE});
|
|
|
pass.newDependency({m_runCtx.m_rts[0], TextureUsageBit::SAMPLED_COMPUTE});
|
|
|
@@ -245,7 +263,13 @@ void Ssao::populateRenderGraph(RenderingContext& ctx)
|
|
|
{
|
|
|
GraphicsRenderPassDescription& pass = rgraph.newGraphicsRenderPass("SSAO blur");
|
|
|
|
|
|
- pass.setWork(runBlurCallback, this, 0);
|
|
|
+ pass.setWork(
|
|
|
+ [](RenderPassWorkContext& rgraphCtx) {
|
|
|
+ Ssao* const self = static_cast<Ssao*>(rgraphCtx.m_userData);
|
|
|
+ self->runBlur(rgraphCtx);
|
|
|
+ },
|
|
|
+ this,
|
|
|
+ 0);
|
|
|
pass.setFramebufferInfo(m_fbDescr, {{m_runCtx.m_rts[1]}}, {});
|
|
|
|
|
|
pass.newDependency({m_runCtx.m_rts[1], TextureUsageBit::FRAMEBUFFER_ATTACHMENT_WRITE});
|