[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55853] branches/ge_harmony/source/blender /gpu: GPU_shaders now print warnings from compiling, and not just errors.

Daniel Stokes kupomail at gmail.com
Sat Apr 6 21:46:16 CEST 2013


Revision: 55853
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55853
Author:   kupoman
Date:     2013-04-06 19:46:16 +0000 (Sat, 06 Apr 2013)
Log Message:
-----------
GPU_shaders now print warnings from compiling, and not just errors.

Also the following shaders will now display the line number from their file when an error occurs, even when mixed with other shaders (this improves debugging):
* gpu_shader_light_frag.glsl
* gpu_shader_light_vert.glsl
* gpu_shader_prepass_frag.glsl
* gpu_shader_prepass_vert.glsl

Modified Paths:
--------------
    branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
    branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_frag.glsl
    branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_vert.glsl
    branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl
    branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_vert.glsl

Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2013-04-06 19:42:58 UTC (rev 55852)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c	2013-04-06 19:46:16 UTC (rev 55853)
@@ -1223,14 +1223,16 @@
 		glShaderSourceARB(shader->vertex, num_source, source, NULL);
 
 		glCompileShaderARB(shader->vertex);
-		glGetObjectParameterivARB(shader->vertex, GL_OBJECT_COMPILE_STATUS_ARB, &status);
 
-		if (!status) {
-			glGetInfoLogARB(shader->vertex, sizeof(log), &length, log);
+		glGetInfoLogARB(shader->vertex, sizeof(log), &length, log);
+		if (length > 0) {
 			shader_print_errors("compile", log, vertexcode);
 
-			GPU_shader_free(shader);
-			return NULL;
+			glGetObjectParameterivARB(shader->vertex, GL_OBJECT_COMPILE_STATUS_ARB, &status);
+			if (!status) {
+				GPU_shader_free(shader);
+				return NULL;
+			}
 		}
 	}
 
@@ -1248,14 +1250,16 @@
 		glShaderSourceARB(shader->fragment, num_source, source, NULL);
 
 		glCompileShaderARB(shader->fragment);
-		glGetObjectParameterivARB(shader->fragment, GL_OBJECT_COMPILE_STATUS_ARB, &status);
 
-		if (!status) {
-			glGetInfoLogARB(shader->fragment, sizeof(log), &length, log);
+		glGetInfoLogARB(shader->fragment, sizeof(log), &length, log);
+		if (length > 0) {
 			shader_print_errors("compile", log, fragcode);
-
-			GPU_shader_free(shader);
-			return NULL;
+			
+			glGetObjectParameterivARB(shader->fragment, GL_OBJECT_COMPILE_STATUS_ARB, &status);
+			if (!status) {
+				GPU_shader_free(shader);
+				return NULL;
+			}
 		}
 	}
 
@@ -1269,8 +1273,18 @@
 		glShaderSourceARB(shader->geometry, 1, (const char**)&geomcode, NULL);
 
 		glCompileShaderARB(shader->geometry);
-		glGetObjectParameterivARB(shader->geometry, GL_OBJECT_COMPILE_STATUS_ARB, &status);
+	
+		glGetInfoLogARB(shader->geometry, sizeof(log), &length, log);
+		if (length > 0) {
+			shader_print_errors("compile", log, geomcode);
 
+			glGetObjectParameterivARB(shader->geometry, GL_OBJECT_COMPILE_STATUS_ARB, &status);
+			if (!status) {
+				GPU_shader_free(shader);
+				return NULL;
+			}
+		}
+
 		// Set the geometry intput type
 		if (geomin == SHADER_GEOM_IN_POINTS)
 			temp = GL_POINTS;
@@ -1309,14 +1323,6 @@
 
 		glGetIntegerv(GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT, &temp);
 		glProgramParameteriEXT(shader->object, GL_GEOMETRY_VERTICES_OUT_EXT, temp);
-	
-		if (!status) {
-			glGetInfoLogARB(shader->geometry, sizeof(log), &length, log);
-			shader_print_errors("compile", log, geomcode);
-
-			GPU_shader_free(shader);
-			return NULL;
-		}
 	}
 
 	glLinkProgramARB(shader->object);

Modified: branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_frag.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_frag.glsl	2013-04-06 19:42:58 UTC (rev 55852)
+++ branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_frag.glsl	2013-04-06 19:46:16 UTC (rev 55853)
@@ -1,6 +1,6 @@
 //#define ALL_SHADERS
+#line 2
 
-
 #define SPOT	0
 #define SUN		1
 #define HEMI	2

Modified: branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_vert.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_vert.glsl	2013-04-06 19:42:58 UTC (rev 55852)
+++ branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_light_vert.glsl	2013-04-06 19:46:16 UTC (rev 55853)
@@ -1,4 +1,4 @@
-
+#line 1
 varying vec3 varposition;
 
 void main()

Modified: branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl	2013-04-06 19:42:58 UTC (rev 55852)
+++ branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_frag.glsl	2013-04-06 19:46:16 UTC (rev 55853)
@@ -1,3 +1,4 @@
+#line 1
 #define MAX_TEX 8
 struct TextureInfo {
 	bool enabled;

Modified: branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_vert.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_vert.glsl	2013-04-06 19:42:58 UTC (rev 55852)
+++ branches/ge_harmony/source/blender/gpu/shaders/gpu_shader_prepass_vert.glsl	2013-04-06 19:46:16 UTC (rev 55853)
@@ -1,3 +1,4 @@
+#line 1
 varying vec3 varposition;
 varying vec3 varnormal;
 varying vec4 varuv[8];




More information about the Bf-blender-cvs mailing list