diff --git a/projects/voxelization/src/ShadowMapping.cpp b/projects/voxelization/src/ShadowMapping.cpp index 1e58b3c8f135f01e7467e4f8bc6aae4d1d8b1f40..9c81aa097a0dd4d7817927776ac3308efef38467 100644 --- a/projects/voxelization/src/ShadowMapping.cpp +++ b/projects/voxelization/src/ShadowMapping.cpp @@ -115,6 +115,10 @@ glm::mat4 computeShadowViewProjectionMatrix( getMinMaxView(voxelVolumeCorners); glm::vec3 scale = glm::vec3(2) / (maxView - minView); + + // rotationaly invariant to avoid swimming when moving camera + scale = glm::vec3(glm::max(glm::max(scale.x, scale.y), scale.z)); + glm::vec3 offset = -0.5f * (maxView + minView) * scale; glm::mat4 crop(1);