From 9366c6ff51ebae648cc13a999363c64655aeea8a Mon Sep 17 00:00:00 2001 From: Mark Oliver Mints <mmints@uni-koblenz.de> Date: Sat, 4 Sep 2021 14:08:34 +0200 Subject: [PATCH] [#71] update all compute pipeline create calls to new version with config --- .../src/vkcv/upscaling/FSRUpscaling.cpp | 23 ++++++----- projects/indirect_dispatch/src/AppSetup.cpp | 9 +++-- .../src/BloomAndFlares.cpp | 40 +++++++++++++++---- projects/particle_simulation/src/main.cpp | 17 ++++++-- projects/voxelization/src/BloomAndFlares.cpp | 39 +++++++++++++----- projects/voxelization/src/ShadowMapping.cpp | 26 ++++++++++-- projects/voxelization/src/Voxelization.cpp | 33 +++++++++------ projects/voxelization/src/main.cpp | 33 +++++++++------ 8 files changed, 157 insertions(+), 63 deletions(-) diff --git a/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp b/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp index b1105127..af3c8294 100644 --- a/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp +++ b/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp @@ -1,4 +1,3 @@ - #include "vkcv/upscaling/FSRUpscaling.hpp" #include <stdint.h> @@ -205,10 +204,13 @@ namespace vkcv::upscaling { const std::filesystem::path& path) { program.addShader(shaderStage, path); }); - - m_easuPipeline = m_core.createComputePipeline(program, { - m_core.getDescriptorSet(m_easuDescriptorSet).layout - }); + + ComputePipelineConfig easuComputePipelineConfig { + program, + { m_core.getDescriptorSet(m_easuDescriptorSet).layout } + }; + + m_easuPipeline = m_core.createComputePipeline(easuComputePipelineConfig); DescriptorWrites writes; writes.uniformBufferWrites.emplace_back( @@ -226,10 +228,13 @@ namespace vkcv::upscaling { const std::filesystem::path& path) { program.addShader(shaderStage, path); }); - - m_rcasPipeline = m_core.createComputePipeline(program, { - m_core.getDescriptorSet(m_rcasDescriptorSet).layout - }); + + ComputePipelineConfig rcasComputePipelineConfig { + program, + { m_core.getDescriptorSet(m_rcasDescriptorSet).layout } + }; + + m_rcasPipeline = m_core.createComputePipeline(rcasComputePipelineConfig); DescriptorWrites writes; writes.uniformBufferWrites.emplace_back( diff --git a/projects/indirect_dispatch/src/AppSetup.cpp b/projects/indirect_dispatch/src/AppSetup.cpp index 267ac6bd..ec113aa0 100644 --- a/projects/indirect_dispatch/src/AppSetup.cpp +++ b/projects/indirect_dispatch/src/AppSetup.cpp @@ -256,9 +256,12 @@ bool loadComputePass(vkcv::Core& core, const std::filesystem::path& path, Comput outComputePass->descriptorSet = core.createDescriptorSet(shaderProgram.getReflectedDescriptors()[0]); - outComputePass->pipeline = core.createComputePipeline( - shaderProgram, - { core.getDescriptorSet(outComputePass->descriptorSet).layout }); + vkcv::ComputePipelineConfig computePipelineConfig { + shaderProgram, + { core.getDescriptorSet(outComputePass->descriptorSet).layout } + }; + + outComputePass->pipeline = core.createComputePipeline(computePipelineConfig); if (!outComputePass->pipeline) { vkcv_log(vkcv::LogLevel::ERROR, "Compute shader pipeline creation failed"); diff --git a/projects/particle_simulation/src/BloomAndFlares.cpp b/projects/particle_simulation/src/BloomAndFlares.cpp index 5961aae6..f506b29b 100644 --- a/projects/particle_simulation/src/BloomAndFlares.cpp +++ b/projects/particle_simulation/src/BloomAndFlares.cpp @@ -33,8 +33,13 @@ BloomAndFlares::BloomAndFlares( m_DownsampleDescSets.push_back( p_Core->createDescriptorSet(dsProg.getReflectedDescriptors()[0])); } - m_DownsamplePipe = p_Core->createComputePipeline( - dsProg, { p_Core->getDescriptorSet(m_DownsampleDescSets[0]).layout }); + + vkcv::ComputePipelineConfig dsComputePipelineConfig { + dsProg, + {p_Core->getDescriptorSet(m_DownsampleDescSets[0]).layout} + }; + + m_DownsamplePipe = p_Core->createComputePipeline(dsComputePipelineConfig); // UPSAMPLE vkcv::ShaderProgram usProg; @@ -49,8 +54,15 @@ BloomAndFlares::BloomAndFlares( m_UpsampleDescSets.push_back( p_Core->createDescriptorSet(usProg.getReflectedDescriptors()[0])); } - m_UpsamplePipe = p_Core->createComputePipeline( - usProg, { p_Core->getDescriptorSet(m_UpsampleDescSets[0]).layout }); + + + vkcv::ComputePipelineConfig usComputePipelineConfig { + usProg, + {p_Core->getDescriptorSet(m_UpsampleDescSets[0]).layout} + }; + + + m_UpsamplePipe = p_Core->createComputePipeline(usComputePipelineConfig); // LENS FEATURES vkcv::ShaderProgram lensProg; @@ -60,9 +72,15 @@ BloomAndFlares::BloomAndFlares( { lensProg.addShader(shaderStage, path); }); + m_LensFlareDescSet = p_Core->createDescriptorSet(lensProg.getReflectedDescriptors()[0]); - m_LensFlarePipe = p_Core->createComputePipeline( - lensProg, { p_Core->getDescriptorSet(m_LensFlareDescSet).layout }); + + vkcv::ComputePipelineConfig lensComputePipelineConfig { + lensProg, + {p_Core->getDescriptorSet(m_LensFlareDescSet).layout} + }; + + m_LensFlarePipe = p_Core->createComputePipeline(lensComputePipelineConfig); // COMPOSITE vkcv::ShaderProgram compProg; @@ -72,9 +90,15 @@ BloomAndFlares::BloomAndFlares( { compProg.addShader(shaderStage, path); }); + m_CompositeDescSet = p_Core->createDescriptorSet(compProg.getReflectedDescriptors()[0]); - m_CompositePipe = p_Core->createComputePipeline( - compProg, { p_Core->getDescriptorSet(m_CompositeDescSet).layout }); + + vkcv::ComputePipelineConfig compComputePipelineConfig{ + compProg, + { p_Core->getDescriptorSet(m_CompositeDescSet).layout } + }; + + m_CompositePipe = p_Core->createComputePipeline(compComputePipelineConfig); } void BloomAndFlares::execDownsamplePipe(const vkcv::CommandStreamHandle &cmdStream, diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp index a3e34e70..f8d56c46 100644 --- a/projects/particle_simulation/src/main.cpp +++ b/projects/particle_simulation/src/main.cpp @@ -137,7 +137,12 @@ int main(int argc, const char **argv) { vkcv::PipelineHandle particlePipeline = core.createGraphicsPipeline(particlePipelineDefinition); - vkcv::ComputePipelineHandle computePipeline = core.createComputePipeline(computeShaderProgram, {core.getDescriptorSet(computeDescriptorSet).layout} ); + vkcv::ComputePipelineConfig computePipelineDefinition { + computeShaderProgram, + {core.getDescriptorSet(computeDescriptorSet).layout} + }; + + vkcv::ComputePipelineHandle computePipeline = core.createComputePipeline(computePipelineDefinition); vkcv::Buffer<glm::vec4> color = core.createBuffer<glm::vec4>( vkcv::BufferType::UNIFORM, @@ -228,9 +233,13 @@ int main(int argc, const char **argv) { }); vkcv::DescriptorSetHandle tonemappingDescriptor = core.createDescriptorSet(tonemappingShader.getReflectedDescriptors()[0]); - vkcv::ComputePipelineHandle tonemappingPipe = core.createComputePipeline( - tonemappingShader, - { core.getDescriptorSet(tonemappingDescriptor).layout }); + + vkcv::ComputePipelineConfig tonemappingConputePipelineConfig { + tonemappingShader, + { core.getDescriptorSet(tonemappingDescriptor).layout } + }; + + vkcv::ComputePipelineHandle tonemappingPipe = core.createComputePipeline(tonemappingConputePipelineConfig); std::uniform_real_distribution<float> rdm = std::uniform_real_distribution<float>(0.95f, 1.05f); std::default_random_engine rdmEngine; diff --git a/projects/voxelization/src/BloomAndFlares.cpp b/projects/voxelization/src/BloomAndFlares.cpp index 6cb02e90..a413c525 100644 --- a/projects/voxelization/src/BloomAndFlares.cpp +++ b/projects/voxelization/src/BloomAndFlares.cpp @@ -47,8 +47,13 @@ BloomAndFlares::BloomAndFlares( m_DownsampleDescSets.push_back( p_Core->createDescriptorSet(dsProg.getReflectedDescriptors()[0])); } - m_DownsamplePipe = p_Core->createComputePipeline( - dsProg, { p_Core->getDescriptorSet(m_DownsampleDescSets[0]).layout }); + + vkcv::ComputePipelineConfig dsCompPipeConfig { + dsProg, + { p_Core->getDescriptorSet(m_DownsampleDescSets[0]).layout } + }; + + m_DownsamplePipe = p_Core->createComputePipeline(dsCompPipeConfig); // UPSAMPLE vkcv::ShaderProgram usProg; @@ -68,8 +73,12 @@ BloomAndFlares::BloomAndFlares( p_Core->createDescriptorSet(usProg.getReflectedDescriptors()[0])); } - m_UpsamplePipe = p_Core->createComputePipeline( - usProg, { p_Core->getDescriptorSet(m_UpsampleDescSets[0]).layout }); + vkcv::ComputePipelineConfig usCompPipeConfig { + usProg, + { p_Core->getDescriptorSet(m_UpsampleDescSets[0]).layout } + }; + + m_UpsamplePipe = p_Core->createComputePipeline(usCompPipeConfig); // LENS FEATURES vkcv::ShaderProgram lensProg; @@ -80,8 +89,13 @@ BloomAndFlares::BloomAndFlares( lensProg.addShader(shaderStage, path); }); m_LensFlareDescSet = p_Core->createDescriptorSet(lensProg.getReflectedDescriptors()[0]); - m_LensFlarePipe = p_Core->createComputePipeline( - lensProg, { p_Core->getDescriptorSet(m_LensFlareDescSet).layout }); + + vkcv::ComputePipelineConfig lensCompPipeConfig { + lensProg, + { p_Core->getDescriptorSet(m_LensFlareDescSet).layout } + }; + + m_LensFlarePipe = p_Core->createComputePipeline(lensCompPipeConfig); // COMPOSITE vkcv::ShaderProgram compProg; @@ -92,8 +106,13 @@ BloomAndFlares::BloomAndFlares( compProg.addShader(shaderStage, path); }); m_CompositeDescSet = p_Core->createDescriptorSet(compProg.getReflectedDescriptors()[0]); - m_CompositePipe = p_Core->createComputePipeline( - compProg, { p_Core->getDescriptorSet(m_CompositeDescSet).layout }); + + vkcv::ComputePipelineConfig compPipeConfig { + compProg, + { p_Core->getDescriptorSet(m_CompositeDescSet).layout } + }; + + m_CompositePipe = p_Core->createComputePipeline(compPipeConfig); // radial LUT const auto texture = vkcv::asset::loadTexture("resources/RadialLUT.png"); @@ -339,6 +358,4 @@ void BloomAndFlares::updateImageDimensions(uint32_t width, uint32_t height) p_Core->getContext().getDevice().waitIdle(); m_Blur = p_Core->createImage(m_ColorBufferFormat, m_Width, m_Height, 1, true, true, false); m_LensFeatures = p_Core->createImage(m_ColorBufferFormat, m_Width, m_Height, 1, true, true, false); -} - - +} \ No newline at end of file diff --git a/projects/voxelization/src/ShadowMapping.cpp b/projects/voxelization/src/ShadowMapping.cpp index 32dd5457..9aa0bf8f 100644 --- a/projects/voxelization/src/ShadowMapping.cpp +++ b/projects/voxelization/src/ShadowMapping.cpp @@ -190,7 +190,13 @@ ShadowMapping::ShadowMapping(vkcv::Core* corePtr, const vkcv::VertexLayout& vert // depth to moments vkcv::ShaderProgram depthToMomentsShader = loadDepthToMomentsShader(); m_depthToMomentsDescriptorSet = corePtr->createDescriptorSet(depthToMomentsShader.getReflectedDescriptors()[0]); - m_depthToMomentsPipe = corePtr->createComputePipeline(depthToMomentsShader, { corePtr->getDescriptorSet(m_depthToMomentsDescriptorSet).layout }); + + vkcv::ComputePipelineConfig depthToMomentPipeConfig { + depthToMomentsShader, + { corePtr->getDescriptorSet(m_depthToMomentsDescriptorSet).layout } + }; + + m_depthToMomentsPipe = corePtr->createComputePipeline(depthToMomentPipeConfig); vkcv::DescriptorWrites depthToMomentDescriptorWrites; depthToMomentDescriptorWrites.sampledImageWrites = { vkcv::SampledImageDescriptorWrite(0, m_shadowMapDepth.getHandle()) }; @@ -201,7 +207,13 @@ ShadowMapping::ShadowMapping(vkcv::Core* corePtr, const vkcv::VertexLayout& vert // shadow blur X vkcv::ShaderProgram shadowBlurXShader = loadShadowBlurXShader(); m_shadowBlurXDescriptorSet = corePtr->createDescriptorSet(shadowBlurXShader.getReflectedDescriptors()[0]); - m_shadowBlurXPipe = corePtr->createComputePipeline(shadowBlurXShader, { corePtr->getDescriptorSet(m_shadowBlurXDescriptorSet).layout }); + + vkcv::ComputePipelineConfig shadowBlurXPipeConfig { + shadowBlurXShader, + { corePtr->getDescriptorSet(m_shadowBlurXDescriptorSet).layout } + }; + + m_shadowBlurXPipe = corePtr->createComputePipeline(shadowBlurXPipeConfig); vkcv::DescriptorWrites shadowBlurXDescriptorWrites; shadowBlurXDescriptorWrites.sampledImageWrites = { vkcv::SampledImageDescriptorWrite(0, m_shadowMap.getHandle()) }; @@ -212,9 +224,15 @@ ShadowMapping::ShadowMapping(vkcv::Core* corePtr, const vkcv::VertexLayout& vert // shadow blur Y vkcv::ShaderProgram shadowBlurYShader = loadShadowBlurYShader(); m_shadowBlurYDescriptorSet = corePtr->createDescriptorSet(shadowBlurYShader.getReflectedDescriptors()[0]); - m_shadowBlurYPipe = corePtr->createComputePipeline(shadowBlurYShader, { corePtr->getDescriptorSet(m_shadowBlurYDescriptorSet).layout }); - vkcv::DescriptorWrites shadowBlurYDescriptorWrites; + vkcv::ComputePipelineConfig shadowBlurYPipeConfig { + shadowBlurYShader, + { corePtr->getDescriptorSet(m_shadowBlurYDescriptorSet).layout } + }; + + m_shadowBlurYPipe = corePtr->createComputePipeline(shadowBlurYPipeConfig); + + vkcv::DescriptorWrites shadowBlurYDescriptorWrites; shadowBlurYDescriptorWrites.sampledImageWrites = { vkcv::SampledImageDescriptorWrite(0, m_shadowMapIntermediate.getHandle()) }; shadowBlurYDescriptorWrites.samplerWrites = { vkcv::SamplerDescriptorWrite(1, m_shadowSampler) }; shadowBlurYDescriptorWrites.storageImageWrites = { vkcv::StorageImageDescriptorWrite(2, m_shadowMap.getHandle()) }; diff --git a/projects/voxelization/src/Voxelization.cpp b/projects/voxelization/src/Voxelization.cpp index f7e03709..67acf852 100644 --- a/projects/voxelization/src/Voxelization.cpp +++ b/projects/voxelization/src/Voxelization.cpp @@ -173,11 +173,14 @@ Voxelization::Voxelization( const vkcv::DescriptorSetUsage voxelizationDescriptorUsage(0, m_corePtr->getDescriptorSet(m_visualisationDescriptorSet).vulkanHandle); vkcv::ShaderProgram resetVoxelShader = loadVoxelResetShader(); - m_voxelResetDescriptorSet = m_corePtr->createDescriptorSet(resetVoxelShader.getReflectedDescriptors()[0]); - m_voxelResetPipe = m_corePtr->createComputePipeline( - resetVoxelShader, - { m_corePtr->getDescriptorSet(m_voxelResetDescriptorSet).layout }); + + const vkcv::ComputePipelineConfig resetVoxelPipeConfig { + resetVoxelShader, + { m_corePtr->getDescriptorSet(m_voxelResetDescriptorSet).layout } + }; + + m_voxelResetPipe = m_corePtr->createComputePipeline(resetVoxelPipeConfig); vkcv::DescriptorWrites resetVoxelWrites; resetVoxelWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(0, m_voxelBuffer.getHandle()) }; @@ -185,11 +188,14 @@ Voxelization::Voxelization( // buffer to image vkcv::ShaderProgram bufferToImageShader = loadVoxelBufferToImageShader(); - m_bufferToImageDescriptorSet = m_corePtr->createDescriptorSet(bufferToImageShader.getReflectedDescriptors()[0]); - m_bufferToImagePipe = m_corePtr->createComputePipeline( - bufferToImageShader, - { m_corePtr->getDescriptorSet(m_bufferToImageDescriptorSet).layout }); + + const vkcv::ComputePipelineConfig bufferToImagePipeConfig { + bufferToImageShader, + { m_corePtr->getDescriptorSet(m_bufferToImageDescriptorSet).layout } + }; + + m_bufferToImagePipe = m_corePtr->createComputePipeline(bufferToImagePipeConfig); vkcv::DescriptorWrites bufferToImageDescriptorWrites; bufferToImageDescriptorWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(0, m_voxelBuffer.getHandle()) }; @@ -198,11 +204,14 @@ Voxelization::Voxelization( // secondary bounce vkcv::ShaderProgram secondaryBounceShader = loadSecondaryBounceShader(); - m_secondaryBounceDescriptorSet = m_corePtr->createDescriptorSet(secondaryBounceShader.getReflectedDescriptors()[0]); - m_secondaryBouncePipe = m_corePtr->createComputePipeline( - secondaryBounceShader, - { m_corePtr->getDescriptorSet(m_secondaryBounceDescriptorSet).layout }); + + const vkcv::ComputePipelineConfig secondaryBouncePipeConfig { + secondaryBounceShader, + { m_corePtr->getDescriptorSet(m_secondaryBounceDescriptorSet).layout } + }; + + m_secondaryBouncePipe = m_corePtr->createComputePipeline(secondaryBouncePipeConfig); vkcv::DescriptorWrites secondaryBounceDescriptorWrites; secondaryBounceDescriptorWrites.storageBufferWrites = { vkcv::BufferDescriptorWrite(0, m_voxelBuffer.getHandle()) }; diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp index 8ef294dc..96062e45 100644 --- a/projects/voxelization/src/main.cpp +++ b/projects/voxelization/src/main.cpp @@ -427,9 +427,11 @@ int main(int argc, const char** argv) { }); vkcv::DescriptorSetHandle tonemappingDescriptorSet = core.createDescriptorSet( tonemappingProgram.getReflectedDescriptors()[0]); - vkcv::ComputePipelineHandle tonemappingPipeline = core.createComputePipeline( - tonemappingProgram, - { core.getDescriptorSet(tonemappingDescriptorSet).layout }); + vkcv::ComputePipelineConfig tonemappingPipeConfig { + tonemappingProgram, + { core.getDescriptorSet(tonemappingDescriptorSet).layout } + }; + vkcv::ComputePipelineHandle tonemappingPipeline = core.createComputePipeline(tonemappingPipeConfig); // tonemapping compute shader vkcv::ShaderProgram postEffectsProgram; @@ -439,9 +441,11 @@ int main(int argc, const char** argv) { }); vkcv::DescriptorSetHandle postEffectsDescriptorSet = core.createDescriptorSet( postEffectsProgram.getReflectedDescriptors()[0]); - vkcv::ComputePipelineHandle postEffectsPipeline = core.createComputePipeline( - postEffectsProgram, - { core.getDescriptorSet(postEffectsDescriptorSet).layout }); + vkcv::ComputePipelineConfig postEffectsPipeConfig { + postEffectsProgram, + { core.getDescriptorSet(postEffectsDescriptorSet).layout } + }; + vkcv::ComputePipelineHandle postEffectsPipeline = core.createComputePipeline(postEffectsPipeConfig); // resolve compute shader vkcv::ShaderProgram resolveProgram; @@ -451,9 +455,11 @@ int main(int argc, const char** argv) { }); vkcv::DescriptorSetHandle resolveDescriptorSet = core.createDescriptorSet( resolveProgram.getReflectedDescriptors()[0]); - vkcv::ComputePipelineHandle resolvePipeline = core.createComputePipeline( - resolveProgram, - { core.getDescriptorSet(resolveDescriptorSet).layout }); + vkcv::ComputePipelineConfig resolvePipeConfig { + resolveProgram, + { core.getDescriptorSet(resolveDescriptorSet).layout } + }; + vkcv::ComputePipelineHandle resolvePipeline = core.createComputePipeline(resolvePipeConfig); vkcv::SamplerHandle resolveSampler = core.createSampler( vkcv::SamplerFilterType::NEAREST, @@ -939,9 +945,12 @@ int main(int argc, const char** argv) { [&](vkcv::ShaderStage shaderStage, const std::filesystem::path& path) { newProgram.addShader(shaderStage, path); }); - vkcv::ComputePipelineHandle newPipeline = core.createComputePipeline( - newProgram, - { core.getDescriptorSet(tonemappingDescriptorSet).layout }); + + vkcv::ComputePipelineConfig newPipeConfig { + newProgram, + { core.getDescriptorSet(tonemappingDescriptorSet).layout } + }; + vkcv::ComputePipelineHandle newPipeline = core.createComputePipeline(newPipeConfig); if (newPipeline) { tonemappingPipeline = newPipeline; -- GitLab