Use near/far in LightStage setFrustum

This commit is contained in:
Zach Pomerantz 2016-01-15 10:28:52 -08:00
parent 710fb5df53
commit e914f02445
2 changed files with 5 additions and 5 deletions

View file

@ -18,7 +18,7 @@ LightStage::Shadow::Shadow(model::LightPointer light) : _light{ light}, _frustum
map = framebuffer->getDepthStencilBuffer(); map = framebuffer->getDepthStencilBuffer();
} }
void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float zBack, float zFront) { void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float near, float far) {
// Orient the keylight frustum // Orient the keylight frustum
const auto& direction = glm::normalize(_light->getDirection()); const auto& direction = glm::normalize(_light->getDirection());
glm::quat orientation; glm::quat orientation;
@ -32,7 +32,7 @@ void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float zBac
_frustum->setOrientation(orientation); _frustum->setOrientation(orientation);
// Position the keylight frustum // Position the keylight frustum
_frustum->setPosition(viewFrustum->getPosition() - 21.0f * direction); _frustum->setPosition(viewFrustum->getPosition() - (glm::abs(near) + glm::abs(far))*direction);
_view = _frustum->getView(); _view = _frustum->getView();
const Transform viewInverse{ _view.getInverseMatrix() }; const Transform viewInverse{ _view.getInverseMatrix() };
@ -40,8 +40,8 @@ void LightStage::Shadow::setKeylightFrustum(ViewFrustum* viewFrustum, float zBac
viewFrustum->calculate(); viewFrustum->calculate();
//const auto nearCorners = viewFrustum->getCorners(0); //const auto nearCorners = viewFrustum->getCorners(0);
const auto nearClip = viewFrustum->getNearClip(); const auto nearClip = viewFrustum->getNearClip();
const auto nearCorners = viewFrustum->getCorners(nearClip - 1); const auto nearCorners = viewFrustum->getCorners(near);
const auto farCorners = viewFrustum->getCorners(nearClip + 20); const auto farCorners = viewFrustum->getCorners(far);
vec3 min{ viewInverse.transform(nearCorners.bottomLeft) }; vec3 min{ viewInverse.transform(nearCorners.bottomLeft) };
vec3 max{ min }; vec3 max{ min };

View file

@ -27,7 +27,7 @@ public:
Shadow(model::LightPointer light); Shadow(model::LightPointer light);
void setKeylightFrustum(ViewFrustum* viewFrustum, float zBack, float zFront); void setKeylightFrustum(ViewFrustum* viewFrustum, float near, float far);
const std::shared_ptr<ViewFrustum> getFrustum() const { return _frustum; } const std::shared_ptr<ViewFrustum> getFrustum() const { return _frustum; }
const glm::mat4& getProjection() const { return _projection; } const glm::mat4& getProjection() const { return _projection; }