From 9cf0d6c8512a4249251a63f88d71ed2f0c4413ca Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Tue, 22 Jul 2014 19:19:13 -0700 Subject: [PATCH] Fix for shadows in close-up inset mirror. --- interface/src/Application.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8b00bface7..925f5aca3c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2981,6 +2981,13 @@ void Application::renderRearViewMirror(const QRect& region, bool billboard) { attachment->setTranslation(attachment->getTranslation() + delta); } + // and lo, even the shadow matrices + glm::mat4 savedShadowMatrices[CASCADED_SHADOW_MATRIX_COUNT]; + for (int i = 0; i < CASCADED_SHADOW_MATRIX_COUNT; i++) { + savedShadowMatrices[i] = _shadowMatrices[i]; + _shadowMatrices[i] = glm::transpose(glm::transpose(_shadowMatrices[i]) * glm::translate(-delta)); + } + displaySide(_mirrorCamera, true); // restore absolute translations @@ -2989,6 +2996,11 @@ void Application::renderRearViewMirror(const QRect& region, bool billboard) { for (int i = 0; i < absoluteAttachmentTranslations.size(); i++) { _myAvatar->getAttachmentModels().at(i)->setTranslation(absoluteAttachmentTranslations.at(i)); } + + // restore the shadow matrices + for (int i = 0; i < CASCADED_SHADOW_MATRIX_COUNT; i++) { + _shadowMatrices[i] = savedShadowMatrices[i]; + } } else { displaySide(_mirrorCamera, true); }