[Bf-blender-cvs] [8ec7db9] opensubdiv-modifier: OpenSubdiv: Fix for #version being defined multiple times for geometry shader

Sergey Sharybin noreply at git.blender.org
Mon Jul 20 14:21:10 CEST 2015


Commit: 8ec7db91f0fa33c6031e3643d689140df4eb006c
Author: Sergey Sharybin
Date:   Mon Jul 20 14:18:04 2015 +0200
Branches: opensubdiv-modifier
https://developer.blender.org/rB8ec7db91f0fa33c6031e3643d689140df4eb006c

OpenSubdiv: Fix for #version being defined multiple times for geometry shader

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

M	intern/opensubdiv/gpu_shader_opensubd_display.glsl
M	source/blender/gpu/intern/gpu_extensions.c

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

diff --git a/intern/opensubdiv/gpu_shader_opensubd_display.glsl b/intern/opensubdiv/gpu_shader_opensubd_display.glsl
index 0481265..fb46971 100644
--- a/intern/opensubdiv/gpu_shader_opensubd_display.glsl
+++ b/intern/opensubdiv/gpu_shader_opensubd_display.glsl
@@ -25,7 +25,6 @@
 
 /* ***** Vertex shader ***** */
 
-#version 130
 #extension GL_EXT_geometry_shader4 : enable
 #extension GL_ARB_gpu_shader5 : enable
 #extension GL_ARB_explicit_attrib_location : require
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c
index cc92768..297b695 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -1529,8 +1529,14 @@ static void shader_print_errors(const char *task, const char *log, const char **
 	fprintf(stderr, "%s\n", log);
 }
 
-static const char *gpu_shader_version(void)
+static const char *gpu_shader_version(bool use_opensubdiv)
 {
+#ifdef WITH_OPENSUBDIV
+	if (use_opensubdiv) {
+		return "#version 150";
+	}
+#endif
+
 	/* turn on glsl 1.30 for bicubic bump mapping and ATI clipping support */
 	if (GLEW_VERSION_3_0 &&
 	    (GPU_bicubic_bump_support() || GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_ANY, GPU_DRIVER_ANY)))
@@ -1670,7 +1676,10 @@ void GPU_program_parameter_4f(GPUProgram *program, unsigned int location, float
 
 GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const char *geocode, const char *libcode, const char *defines, int input, int output, int number)
 {
-	/* TODO(sergey): Use real check here. */
+	/* TODO(sergey): used to add #version 150 to the geometry shader.
+	 * Could safely be renamed to "use_geometry_code" since it's evry much
+	 * liely any of geometry code will want to use GLSL 1.5.
+	 */
 	bool use_opensubdiv = geocode != NULL;
 	GLint status;
 	GLcharARB log[5000];
@@ -1711,7 +1720,7 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
 		/* custom limit, may be too small, beware */
 		int num_source = 0;
 
-		source[num_source++] = gpu_shader_version();
+		source[num_source++] = gpu_shader_version(use_opensubdiv);
 		source[num_source++] = standard_extensions;
 		source[num_source++] = standard_defines;
 
@@ -1737,11 +1746,12 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
 		const char *source[7];
 		int num_source = 0;
 
-		source[num_source++] = gpu_shader_version();
+		source[num_source++] = gpu_shader_version(use_opensubdiv);
 		source[num_source++] = standard_extensions;
 		source[num_source++] = standard_defines;
 
 #ifdef WITH_OPENSUBDIV
+		/* TODO(sergey): Move to fragment shader source code generation. */
 		if (use_opensubdiv) {
 			source[num_source++] =
 			        "#ifdef USE_OPENSUBDIV\n"
@@ -1775,7 +1785,7 @@ GPUShader *GPU_shader_create(const char *vertexcode, const char *fragcode, const
 		const char *source[6];
 		int num_source = 0;
 
-		source[num_source++] = gpu_shader_version();
+		source[num_source++] = gpu_shader_version(use_opensubdiv);
 		source[num_source++] = standard_extensions;
 		source[num_source++] = standard_defines;




More information about the Bf-blender-cvs mailing list