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