From b423bc38ba83d19437d3f8b82731bd690f5b6c36 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Fri, 15 Jan 2016 10:46:01 -0800 Subject: [PATCH] Remove magic numbers --- libraries/render-utils/src/LightStage.cpp | 10 ++++++---- libraries/render-utils/src/RenderShadowTask.cpp | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/render-utils/src/LightStage.cpp b/libraries/render-utils/src/LightStage.cpp index 0ff83ca93e..3b8eddd3b4 100644 --- a/libraries/render-utils/src/LightStage.cpp +++ b/libraries/render-utils/src/LightStage.cpp @@ -18,7 +18,9 @@ LightStage::Shadow::Shadow(model::LightPointer light) : _light{ light}, _frustum map = framebuffer->getDepthStencilBuffer(); } -void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float near, float far) { +void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float nearDepth, float farDepth) { + assert(nearDepth >= 0 && farDepth > 0); + // Orient the keylight frustum const auto& direction = glm::normalize(_light->getDirection()); glm::quat orientation; @@ -32,7 +34,7 @@ void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float near _frustum->setOrientation(orientation); // Position the keylight frustum - _frustum->setPosition(viewFrustum->getPosition() - (glm::abs(near) + glm::abs(far))*direction); + _frustum->setPosition(viewFrustum->getPosition() - (nearDepth + farDepth)*direction); _view = _frustum->getView(); const Transform viewInverse{ _view.getInverseMatrix() }; @@ -40,8 +42,8 @@ void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float near viewFrustum->calculate(); //const auto nearCorners = viewFrustum->getCorners(0); const auto nearClip = viewFrustum->getNearClip(); - const auto nearCorners = viewFrustum->getCorners(near); - const auto farCorners = viewFrustum->getCorners(far); + const auto nearCorners = viewFrustum->getCorners(nearDepth); + const auto farCorners = viewFrustum->getCorners(farDepth); vec3 min{ viewInverse.transform(nearCorners.bottomLeft) }; vec3 max{ min }; diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 1447da624d..5735fe8318 100644 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -102,7 +102,6 @@ void RenderShadowTask::run(const SceneContextPointer& sceneContext, const Render return; } - // TODO: If we're not using the global keylight, bail const auto& lightStage = DependencyManager::get()->getLightStage(); const auto globalLight = lightStage.lights[0]; @@ -113,8 +112,11 @@ void RenderShadowTask::run(const SceneContextPointer& sceneContext, const Render ViewFrustum* viewFrustum = args->_viewFrustum; - const auto nearClip = viewFrustum->getNearClip(); - globalLight->shadow.setKeylightFrustum(viewFrustum, nearClip - 1, nearClip + 20); + auto nearClip = viewFrustum->getNearClip(); + const int SHADOW_NEAR_DEPTH = -1; + const int SHADOW_FAR_DEPTH = 20; + globalLight->shadow.setKeylightFrustum(viewFrustum, + glm::max(0.0f, nearClip - SHADOW_NEAR_DEPTH), nearClip + SHADOW_FAR_DEPTH); // Set the keylight frustum args->_viewFrustum = globalLight->shadow.getFrustum().get();