diff --git a/projects/bloom/src/BloomAndFlares.cpp b/projects/bloom/src/BloomAndFlares.cpp index e4ca93574cedd827179d6fd527f0b51540bc0d86..6f26db9de0f2c8334b6dd7e5dd6cf4b6f48baedc 100644 --- a/projects/bloom/src/BloomAndFlares.cpp +++ b/projects/bloom/src/BloomAndFlares.cpp @@ -30,7 +30,7 @@ BloomAndFlares::BloomAndFlares( }); for(uint32_t mipLevel = 0; mipLevel < m_Blur.getMipCount(); mipLevel++) { - m_DownsampleDescSets.push_back( + m_DownsampleDescSets.push_back( p_Core->createDescriptorSet(dsProg.getReflectedDescriptors()[0])); } m_DownsamplePipe = p_Core->createComputePipeline( @@ -109,7 +109,7 @@ void BloomAndFlares::execDownsamplePipe(const vkcv::CommandStreamHandle &cmdStre // downsample dispatches of blur buffer's mip maps float mipDispatchCountX = dispatchCountX; float mipDispatchCountY = dispatchCountY; - for(uint32_t mipLevel = 1; mipLevel < m_Blur.getMipCount(); mipLevel++) + for(uint32_t mipLevel = 1; mipLevel < m_DownsampleDescSets.size(); mipLevel++) { // mip descriptor writes vkcv::DescriptorWrites mipDescriptorWrites; @@ -151,7 +151,10 @@ void BloomAndFlares::execUpsamplePipe(const vkcv::CommandStreamHandle &cmdStream // upsample dispatch p_Core->prepareImageForStorage(cmdStream, m_Blur.getHandle()); - uint32_t upsampleMipLevels = std::min(m_Blur.getMipCount(), static_cast<uint32_t>(5)); + const uint32_t upsampleMipLevels = std::min( + static_cast<uint32_t>(m_UpsampleDescSets.size() - 1), + static_cast<uint32_t>(5) + ); // upsample dispatch for each mip map for(uint32_t mipLevel = upsampleMipLevels; mipLevel > 0; mipLevel--) diff --git a/projects/bloom/src/main.cpp b/projects/bloom/src/main.cpp index e2f3754468c3198e91bc09c55430cb08f32e7fbf..14a3533bd812dda4bb1fd30ccab89318440b1a1f 100644 --- a/projects/bloom/src/main.cpp +++ b/projects/bloom/src/main.cpp @@ -293,7 +293,6 @@ int main(int argc, const char** argv) { std::vector<vkcv::DrawcallInfo> drawcalls; std::vector<vkcv::DrawcallInfo> shadowDrawcalls; for (int i = 0; i < meshes.size(); i++) { - drawcalls.push_back(vkcv::DrawcallInfo(meshes[i], { vkcv::DescriptorSetUsage(0, core.getDescriptorSet(forwardShadingDescriptorSet).vulkanHandle), vkcv::DescriptorSetUsage(1, core.getDescriptorSet(perMeshDescriptorSets[i]).vulkanHandle) })); @@ -395,6 +394,7 @@ int main(int argc, const char** argv) { baf.execWholePipeline(cmdStream, colorBuffer); core.prepareImageForStorage(cmdStream, swapchainInput); + // gamma correction descriptor write vkcv::DescriptorWrites gammaCorrectionDescriptorWrites; gammaCorrectionDescriptorWrites.storageImageWrites = {