Commit: 6c7358a7e90d000999f0d66752af70ca2db18c4a
Author: Benoit Bolsee
Date:   Mon Jul 13 21:51:39 2015 +0200
Branches: decklink
https://developer.blender.org/rB6c7358a7e90d000999f0d66752af70ca2db18c4a

BGE: ImageRender for other types of stereo.

Stereo mode disturbs ImageRender by changing some OGL state.
It was already fixed for Quadbuffer mode, but not yet for anaglyph and
interlaced mode. This fix simply clears the color mask and stipple mode
that are specific to these stereo mode. In any case, the correct state
is restored prior the render of each eye.

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

M       source/gameengine/VideoTexture/DeckLink.cpp
M       source/gameengine/VideoTexture/ImageRender.cpp

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

diff --git a/source/gameengine/VideoTexture/DeckLink.cpp 
b/source/gameengine/VideoTexture/DeckLink.cpp
index d13c8ae..7012392 100644
--- a/source/gameengine/VideoTexture/DeckLink.cpp
+++ b/source/gameengine/VideoTexture/DeckLink.cpp
@@ -687,7 +687,7 @@ static PyObject *DeckLink_getRight(DeckLink *self, PyObject 
*value, void *closur
 
 
 // set source object
-int DeckLink_setRight(DeckLink *self, PyObject *value, void *closure)
+static int DeckLink_setRight(DeckLink *self, PyObject *value, void *closure)
 {
        // check new value
        if (value == NULL || !pyImageTypes.in(Py_TYPE(value)))
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp 
b/source/gameengine/VideoTexture/ImageRender.cpp
index 2f85122..4687fe0 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -291,12 +291,14 @@ void ImageRender::Render()
        // restore the stereo mode now that the matrix is computed
        m_rasterizer->SetStereoMode(stereomode);
 
-    if (stereomode == RAS_IRasterizer::RAS_STEREO_QUADBUFFERED) {
-        // In QUAD buffer stereo mode, the GE render pass ends with the right 
eye on the right buffer
-        // but we need to draw on the left buffer to capture the render
-        // TODO: implement an explicit function in rasterizer to restore the 
left buffer.
-        m_rasterizer->SetEye(RAS_IRasterizer::RAS_STEREO_LEFTEYE);
-    }
+       if (m_rasterizer->Stereo())     {
+               // stereo mode change render settings that disturb this render, 
cancel them all
+               // we don't need to restore them as they are set before each 
frame render.
+               glDrawBuffer(GL_BACK_LEFT);
+               glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE);
+               glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+               glDisable(GL_POLYGON_STIPPLE);
+       }
 
        m_scene->CalculateVisibleMeshes(m_rasterizer,m_camera);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to