[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42739] branches/ge_harmony/source/blender /gpu/intern: Fixing up a hack that caused simple shadows not to work for ATI cards.

Daniel Stokes kupomail at gmail.com
Mon Dec 19 23:30:30 CET 2011


Revision: 42739
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42739
Author:   kupoman
Date:     2011-12-19 22:30:25 +0000 (Mon, 19 Dec 2011)
Log Message:
-----------
Fixing up a hack that caused simple shadows not to work for ATI cards.

Modified Paths:
--------------
    branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
    branches/ge_harmony/source/blender/gpu/intern/gpu_material.c

Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2011-12-19 20:38:45 UTC (rev 42738)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2011-12-19 22:30:25 UTC (rev 42739)
@@ -748,8 +748,6 @@
 	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attachment, 
 		tex->target, tex->bindcode, 0);
 
-	/* This breaks variance shadow maps. Disabling doesn't seem to break anything. */
-#if 0
 	if(tex->depth) {
 		glDrawBuffer(GL_NONE);
 		glReadBuffer(GL_NONE);
@@ -758,7 +756,6 @@
 		glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
 		glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
 	}
-#endif
 
 	status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
 

Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_material.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_material.c	2011-12-19 20:38:45 UTC (rev 42738)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_material.c	2011-12-19 22:30:25 UTC (rev 42739)
@@ -1666,21 +1666,6 @@
 			return lamp;
 		}
 
-		/* Shadow color map */
-		if(lamp->la->shadowmap_type == LA_SHADMAP_VARIANCE)
-			lamp->tex = GPU_texture_create_shadow_map(lamp->size, NULL);
-		else
-			lamp->tex = GPU_texture_create_depth(lamp->size, lamp->size, NULL);
-		if(!lamp->tex) {
-			gpu_lamp_shadow_free(lamp);
-			return lamp;
-		}
-
-		if(!GPU_framebuffer_texture_attach(lamp->fb, lamp->tex, NULL)) {
-			gpu_lamp_shadow_free(lamp);
-			return lamp;
-		}
-
 		if(lamp->la->shadowmap_type == LA_SHADMAP_VARIANCE) {
 			/* Shadow depth map */
 			lamp->depthtex = GPU_texture_create_depth(lamp->size, lamp->size, NULL);
@@ -1694,6 +1679,18 @@
 				return lamp;
 			}
 
+			/* Shadow color map */
+			lamp->tex = GPU_texture_create_shadow_map(lamp->size, NULL);
+			if(!lamp->tex) {
+				gpu_lamp_shadow_free(lamp);
+				return lamp;
+			}
+
+			if(!GPU_framebuffer_texture_attach(lamp->fb, lamp->tex, NULL)) {
+				gpu_lamp_shadow_free(lamp);
+				return lamp;
+			}
+
 			/* FBO and texture for blurring */
 			lamp->blurfb = GPU_framebuffer_create();
 			if(!lamp->blurfb) {
@@ -1712,7 +1709,18 @@
 				return lamp;
 			}
 		}
+		else {
+			lamp->tex = GPU_texture_create_depth(lamp->size, lamp->size, NULL);
+			if(!lamp->tex) {
+				gpu_lamp_shadow_free(lamp);
+				return lamp;
+			}
 
+			if(!GPU_framebuffer_texture_attach(lamp->fb, lamp->tex, NULL)) {
+				gpu_lamp_shadow_free(lamp);
+				return lamp;
+			}
+		}
 
 		GPU_framebuffer_restore();
 




More information about the Bf-blender-cvs mailing list