From f3daa9e1c58d81e08fde57553d7569255ea0c5c1 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 15 Mar 2016 14:35:43 -0700 Subject: [PATCH] Fixing the lighting issue in stereo --- libraries/entities-renderer/src/textured_particle.slv | 3 ++- libraries/gpu/src/gpu/Context.cpp | 5 +++-- libraries/gpu/src/gpu/Transform.slh | 6 +----- libraries/render-utils/src/DeferredLightingEffect.cpp | 4 +++- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/entities-renderer/src/textured_particle.slv b/libraries/entities-renderer/src/textured_particle.slv index bbd7a1daa7..d3747d21eb 100644 --- a/libraries/entities-renderer/src/textured_particle.slv +++ b/libraries/entities-renderer/src/textured_particle.slv @@ -125,7 +125,8 @@ void main(void) { vec4 quadPos = radius * UNIT_QUAD[twoTriID]; vec4 anchorPoint; - <$transformModelToEyePos(cam, obj, inPosition, anchorPoint)$> + vec4 _inPosition = vec4(inPosition, 1.0); + <$transformModelToEyePos(cam, obj, _inPosition, anchorPoint)$> vec4 eyePos = anchorPoint + quadPos; <$transformEyeToClipPos(cam, eyePos, gl_Position)$> diff --git a/libraries/gpu/src/gpu/Context.cpp b/libraries/gpu/src/gpu/Context.cpp index 46c07e4265..dd26ab2823 100644 --- a/libraries/gpu/src/gpu/Context.cpp +++ b/libraries/gpu/src/gpu/Context.cpp @@ -79,7 +79,7 @@ const Backend::TransformCamera& Backend::TransformCamera::recomputeDerived(const // Get the viewEyeToWorld matrix form the transformView as passed to the gpu::Batch // this is the "_viewInverse" fed to the shader - // Genetrate the "_view" matrix as wekll forom the xform + // Genetrate the "_view" matrix as well from the xform xformView.getMatrix(_viewInverse); _view = glm::inverse(_viewInverse); @@ -98,6 +98,7 @@ Backend::TransformCamera Backend::TransformCamera::getEyeCamera(int eye, const S // FIXME: If "skybox" the ipd is set to 0 for now, let s try to propose a better solution for this in the future } result._projection = _stereo._eyeProjections[eye]; - result.recomputeDerived(xformView); + result.recomputeDerived(offsetTransform); + return result; } diff --git a/libraries/gpu/src/gpu/Transform.slh b/libraries/gpu/src/gpu/Transform.slh index 5881b18066..52ddf92158 100644 --- a/libraries/gpu/src/gpu/Transform.slh +++ b/libraries/gpu/src/gpu/Transform.slh @@ -99,12 +99,8 @@ TransformObject getTransformObject() { { // transformModelToEyeAndClipPos vec4 eyeWAPos; <$transformModelToEyeWorldAlignedPos($cameraTransform$, $objectTransform$, $modelPos$, eyeWAPos)$> - <$clipPos$> = <$cameraTransform$>._projectionViewUntranslated * eyeWAPos; - vec4 _worldpos = (<$objectTransform$>._model * <$modelPos$>); - <$eyePos$> = (<$cameraTransform$>._view * _worldpos); - = vec4((<$cameraTransform$>._view * vec4(eyeWAPos.xyz, 0.0)).xyz, 1.0); !> + <$eyePos$> = vec4((<$cameraTransform$>._view * vec4(eyeWAPos.xyz, 0.0)).xyz, 1.0); } <@endfunc@> diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 82bd0e73d0..f3fa4a43b2 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -264,7 +264,9 @@ void DeferredLightingEffect::render(const render::RenderContextPointer& renderCo deferredTransforms[i].projection = projMats[i]; auto sideViewMat = monoViewMat * glm::inverse(eyeViews[i]); - viewTransforms[i].evalFromRawMatrix(sideViewMat); + // viewTransforms[i].evalFromRawMatrix(sideViewMat); + viewTransforms[i] = monoViewTransform; + viewTransforms[i].postTranslate(-glm::vec3((eyeViews[i][3])));// evalFromRawMatrix(sideViewMat); deferredTransforms[i].viewInverse = sideViewMat; deferredTransforms[i].stereoSide = (i == 0 ? -1.0f : 1.0f);