From e0bd818e8b7c54364a94988c9765af09b6770d4b Mon Sep 17 00:00:00 2001 From: Alexander Gauggel <agauggel@uni-koblenz.de> Date: Thu, 24 Jun 2021 01:02:58 +0200 Subject: [PATCH] [#82] Add mipmapping to moment shadow mapping - still not convinced --- projects/voxelization/resources/shaders/depthToMoments.comp | 2 +- projects/voxelization/resources/shaders/shadowBlur.comp | 2 +- projects/voxelization/src/ShadowMapping.cpp | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/projects/voxelization/resources/shaders/depthToMoments.comp b/projects/voxelization/resources/shaders/depthToMoments.comp index 401f399f..5a78d0cb 100644 --- a/projects/voxelization/resources/shaders/depthToMoments.comp +++ b/projects/voxelization/resources/shaders/depthToMoments.comp @@ -21,7 +21,7 @@ void main(){ if(any(greaterThanEqual(gl_GlobalInvocationID.xy, imageSize(outImage)))){ return; } - ivec2 uv = ivec2(gl_GlobalInvocationID.xy); + ivec2 uv = ivec2(gl_GlobalInvocationID.xy); float z = 0; for(int i = 0; i < msaaCount; i++){ diff --git a/projects/voxelization/resources/shaders/shadowBlur.comp b/projects/voxelization/resources/shaders/shadowBlur.comp index 5daf72c6..f5c38340 100644 --- a/projects/voxelization/resources/shaders/shadowBlur.comp +++ b/projects/voxelization/resources/shaders/shadowBlur.comp @@ -16,7 +16,7 @@ void main(){ } ivec2 coord = ivec2(gl_GlobalInvocationID.xy); - int blurRadius = 0; + int blurRadius = 5; int minOffset = -(blurRadius-1) / 2; int maxOffset = -minOffset; diff --git a/projects/voxelization/src/ShadowMapping.cpp b/projects/voxelization/src/ShadowMapping.cpp index 8b5a51fb..e0f5567a 100644 --- a/projects/voxelization/src/ShadowMapping.cpp +++ b/projects/voxelization/src/ShadowMapping.cpp @@ -130,7 +130,7 @@ const vkcv::Multisampling msaa = vkcv::Multisampling::MSAA4 ShadowMapping::ShadowMapping(vkcv::Core* corePtr, const vkcv::VertexLayout& vertexLayout) : m_corePtr(corePtr), - m_shadowMap(corePtr->createImage(shadowMapFormat, shadowMapResolution, shadowMapResolution, 1, false, true)), + m_shadowMap(corePtr->createImage(shadowMapFormat, shadowMapResolution, shadowMapResolution, 1, true, true)), m_shadowMapIntermediate(corePtr->createImage(shadowMapFormat, shadowMapResolution, shadowMapResolution, 1, false, true)), m_shadowMapDepth(corePtr->createImage(shadowMapDepthFormat, shadowMapResolution, shadowMapResolution, 1, false, false, false, msaa)), m_lightInfoBuffer(corePtr->createBuffer<LightInfo>(vkcv::BufferType::UNIFORM, sizeof(glm::vec3))){ @@ -161,7 +161,7 @@ ShadowMapping::ShadowMapping(vkcv::Core* corePtr, const vkcv::VertexLayout& vert m_shadowSampler = corePtr->createSampler( vkcv::SamplerFilterType::LINEAR, vkcv::SamplerFilterType::LINEAR, - vkcv::SamplerMipmapMode::NEAREST, + vkcv::SamplerMipmapMode::LINEAR, vkcv::SamplerAddressMode::CLAMP_TO_EDGE ); @@ -261,6 +261,7 @@ void ShadowMapping::recordShadowMapRendering( dispatchCount, { vkcv::DescriptorSetUsage(0, m_corePtr->getDescriptorSet(m_shadowBlurDescriptorSet).vulkanHandle) }, vkcv::PushConstantData(nullptr, 0)); + m_shadowMap.recordMipChainGeneration(cmdStream); m_corePtr->prepareImageForSampling(cmdStream, m_shadowMap.getHandle()); } -- GitLab