[Bf-blender-cvs] [e1963dd] decklink: BGE: undo view matrix scaling but keep axis inverting.

Benoit Bolsee noreply at git.blender.org
Sat Feb 20 21:44:14 CET 2016


Commit: e1963ddc30476e4f9a833b0ab1f90ef6ce895d9b
Author: Benoit Bolsee
Date:   Sat Feb 20 21:17:50 2016 +0100
Branches: decklink
https://developer.blender.org/rBe1963ddc30476e4f9a833b0ab1f90ef6ce895d9b

BGE: undo view matrix scaling but keep axis inverting.

Previous commit 9d18fd11 introduced the possibility to scale the modelview
matrix by setting a scale on the camera but this caused undesirable lighting
and dynamic side effects.
This commit reverts the scaling effect but keeps the axis inversion effect,
which was the purpose of the first commit anyway.
A negative/positive scale on the camera is applied respectively as -1/+1 scale
on the modelview matrix.

===================================================================

M	source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

===================================================================

diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index d85bda0..6d82460 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -999,7 +999,13 @@ void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat,
 		}
 	}
 
-	m_viewmatrix.tscale(scale[0], scale[1], scale[2], 1.0);
+	bool negX = (scale[0] < 0.0f);
+	bool negY = (scale[0] < 0.0f);
+	bool negZ = (scale[0] < 0.0f);
+	if (negX || negY || negZ)
+	{
+		m_viewmatrix.tscale((negX)?-1.0f:1.0f, (negY)?-1.0f:1.0f, (negZ)?-1.0f:1.0f, 1.0);
+	}
 	m_viewinvmatrix = m_viewmatrix;
 	m_viewinvmatrix.invert();
 
@@ -1010,7 +1016,7 @@ void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat,
 	glMatrixMode(GL_MODELVIEW);
 	glLoadMatrixf(glviewmat);
 	m_campos = pos;
-	m_camnegscale = ((scale[0] < 0.0) ^ (scale[1] < 0.0) ^ (scale[2] < 0.0)) ? true : false;
+	m_camnegscale = negX ^ negY ^ negZ;
 }




More information about the Bf-blender-cvs mailing list