[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59858] trunk/blender/source/gameengine: Fixing a problem with variance shadow maps blurring out on transparent receivers in the Game Engine reported by Sam Cameron on the IRC .

Daniel Stokes kupomail at gmail.com
Fri Sep 6 00:05:52 CEST 2013


Revision: 59858
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59858
Author:   kupoman
Date:     2013-09-05 22:05:52 +0000 (Thu, 05 Sep 2013)
Log Message:
-----------
Fixing a problem with variance shadow maps blurring out on transparent receivers in the Game Engine reported by Sam Cameron on the IRC.

Also correcting some slight blurring over time by making sure the color buffer is cleared for shadows.

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2013-09-05 21:45:05 UTC (rev 59857)
+++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2013-09-05 22:05:52 UTC (rev 59858)
@@ -1201,6 +1201,7 @@
 
 			/* render */
 			m_rasterizer->ClearDepthBuffer();
+			m_rasterizer->ClearColorBuffer();
 			scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
 
 			/* unbind framebuffer object, restore drawmode, free camera */

Modified: trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2013-09-05 21:45:05 UTC (rev 59857)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp	2013-09-05 22:05:52 UTC (rev 59858)
@@ -1010,7 +1010,11 @@
 
 void RAS_OpenGLRasterizer::SetAlphaBlend(int alphablend)
 {
-	GPU_set_material_alpha_blend(alphablend);
+	/* Variance shadow maps don't handle alpha well, best to not allow it for now  */
+	if (m_drawingmode == KX_SHADOW && m_usingoverrideshader)
+		GPU_set_material_alpha_blend(GPU_BLEND_SOLID);
+	else
+		GPU_set_material_alpha_blend(alphablend);
 /*
 	if (alphablend == m_last_alphablend)
 		return;




More information about the Bf-blender-cvs mailing list