[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44433] trunk/blender/source/blender: Changes in double side lighting usage

Sergey Sharybin sergey.vfx at gmail.com
Sat Feb 25 19:09:46 CET 2012


Revision: 44433
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44433
Author:   nazgul
Date:     2012-02-25 18:09:39 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
Changes in double side lighting usage

Disabled double-side lighting by default and changed areas which are using
double sided lighting to switch it off just after doing stuff which requires
double side.

This makes code a bit more simple to follow (no all that disabling double side
lighting all over the code and so).

This change also fixes crash of blender caused by intel gme965 driver which
leads to stack corruption in some place when double side lighting isn't
disabled (probably driver still kind of using double side in some areas or so).

Hopefully it'll also fix #30293: Converting Text to Mesh

Thanks to Campbell to assist writing this patch!

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawobject.c
    trunk/blender/source/blender/gpu/intern/gpu_extensions.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2012-02-25 16:49:59 UTC (rev 44432)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2012-02-25 18:09:39 UTC (rev 44433)
@@ -3021,6 +3021,7 @@
 
 			glFrontFace(GL_CCW);
 			glDisable(GL_LIGHTING);
+			glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 		}
 			
 		// Setup for drawing wire over, disable zbuffer
@@ -3365,6 +3366,8 @@
 			glFrontFace(GL_CCW);
 			glDisable(GL_LIGHTING);
 
+			glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
+
 			if (base->flag & SELECT) {
 				UI_ThemeColor(is_obact ? TH_ACTIVE : TH_SELECT);
 			}
@@ -3804,7 +3807,6 @@
 		GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL);
 
 		if (!glsl) {
-			glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 			glEnable(GL_LIGHTING);
 			dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material);
 			glDisable(GL_LIGHTING);
@@ -3866,7 +3868,6 @@
 				}
 				else {
 					GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
-					glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 					drawDispListsolid(lb, ob, 0);
 					GPU_end_object_materials();
 				}
@@ -3904,7 +3905,6 @@
 			}
 			else {
 				GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
-				glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 				drawDispListsolid(lb, ob, 0);
 				GPU_end_object_materials();
 			}
@@ -3929,7 +3929,6 @@
 				}
 				else {
 					GPU_begin_object_materials(v3d, rv3d, scene, ob, 0, NULL);
-					glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 					drawDispListsolid(lb, ob, 0);
 					GPU_end_object_materials();
 				}
@@ -7329,7 +7328,6 @@
 			glDisable(GL_COLOR_MATERIAL);
 		}
 		
-		glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
 		glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW);
 		glEnable(GL_LIGHTING);
 		

Modified: trunk/blender/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-02-25 16:49:59 UTC (rev 44432)
+++ trunk/blender/source/blender/gpu/intern/gpu_extensions.c	2012-02-25 18:09:39 UTC (rev 44433)
@@ -179,6 +179,10 @@
 			GG.npotdisabled = 1;
 	}
 
+	/* make sure double side isn't used by defautl and only getting enabled in places where it's
+	 * really needed to prevent different unexpected behaviors like with intel gme965 card (sergey) */
+	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
+
 	GG.os = GPU_OS_UNIX;
 #ifdef _WIN32
 	GG.os = GPU_OS_WIN;




More information about the Bf-blender-cvs mailing list