[Bf-blender-cvs] [6aeb5fc] strand_gpu: Start off with some very simple own code for vert/frag/geom strand shader.

Lukas Tönne noreply at git.blender.org
Tue Jul 5 09:57:06 CEST 2016


Commit: 6aeb5fc1f42240f1cc1566a0f79206053e610a54
Author: Lukas Tönne
Date:   Fri Jul 1 12:28:44 2016 +0200
Branches: strand_gpu
https://developer.blender.org/rB6aeb5fc1f42240f1cc1566a0f79206053e610a54

Start off with some very simple own code for vert/frag/geom strand shader.

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

M	source/blender/editors/space_view3d/drawstrands.c
M	source/blender/gpu/intern/gpu_strands.c

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

diff --git a/source/blender/editors/space_view3d/drawstrands.c b/source/blender/editors/space_view3d/drawstrands.c
index 3c3c3e9..4824725 100644
--- a/source/blender/editors/space_view3d/drawstrands.c
+++ b/source/blender/editors/space_view3d/drawstrands.c
@@ -68,8 +68,8 @@ void draw_strands(Strands *strands, StrandData *data, Object *ob, RegionView3D *
 	}
 	
 	if (show_strands) {
-//		GPU_strand_shader_bind_uniforms(gpu_shader, ob->obmat, rv3d->viewmat);
-//		GPU_strand_shader_bind(gpu_shader, rv3d->viewmat, rv3d->viewinv);
+		GPU_strand_shader_bind_uniforms(gpu_shader, ob->obmat, rv3d->viewmat);
+		GPU_strand_shader_bind(gpu_shader, rv3d->viewmat, rv3d->viewinv);
 		
 		GPU_strands_setup_verts(data);
 		GPUDrawStrands *gds = data->gpu_buffer;
@@ -78,6 +78,6 @@ void draw_strands(Strands *strands, StrandData *data, Object *ob, RegionView3D *
 		}
 		GPU_buffers_unbind();
 		
-//		GPU_strand_shader_unbind(gpu_shader);
+		GPU_strand_shader_unbind(gpu_shader);
 	}
 }
diff --git a/source/blender/gpu/intern/gpu_strands.c b/source/blender/gpu/intern/gpu_strands.c
index 6a4c7c7..bc569b7 100644
--- a/source/blender/gpu/intern/gpu_strands.c
+++ b/source/blender/gpu/intern/gpu_strands.c
@@ -54,9 +54,38 @@ struct GPUStrandsShader {
 	char *vertexcode;
 };
 
-extern char datatoc_gpu_shader_basic_vert_glsl[];
-extern char datatoc_gpu_shader_basic_frag_glsl[];
-extern char datatoc_gpu_shader_basic_geom_glsl[];
+const char *vertex_shader = STRINGIFY(
+	void main()
+	{
+		vec4 co = gl_ModelViewMatrix * gl_Vertex;
+		gl_Position = gl_ProjectionMatrix * co;
+	}
+);
+
+const char *fragment_shader = STRINGIFY(
+	out vec4 outColor;
+	
+	void main()
+	{
+		outColor = vec4(1.0, 0.0, 1.0, 1.0);
+	}
+);
+
+const char *geometry_shader = STRINGIFY(
+	layout(points) in;
+	layout(line_strip, max_vertices = 2) out;
+	
+	void main()
+	{
+		gl_Position = gl_in[0].gl_Position + vec4(-0.1, 0.0, 0.0, 0.0);
+		EmitVertex();
+		
+		gl_Position = gl_in[0].gl_Position + vec4(0.1, 0.0, 0.0, 0.0);
+		EmitVertex();
+		
+		EndPrimitive();
+	}
+);
 
 static char *codegen_vertex(void)
 {
@@ -70,7 +99,7 @@ static char *codegen_vertex(void)
 	
 	return code;
 #else
-	return BLI_strdup(datatoc_gpu_shader_basic_vert_glsl);
+	return BLI_strdup(vertex_shader);
 #endif
 }
 
@@ -86,7 +115,7 @@ static char *codegen_fragment(void)
 	
 	return code;
 #else
-	return BLI_strdup(datatoc_gpu_shader_basic_frag_glsl);
+	return BLI_strdup(fragment_shader);
 #endif
 }
 
@@ -102,7 +131,7 @@ static char *codegen_geometry(void)
 	
 	return code;
 #else
-	return BLI_strdup(datatoc_gpu_shader_basic_geom_glsl);
+	return BLI_strdup(geometry_shader);
 #endif
 }
 
@@ -116,7 +145,7 @@ GPUStrandsShader *GPU_strand_shader_get(struct Strands *strands)
 	/* TODO */
 	char *fragmentcode = codegen_fragment();
 	char *vertexcode = codegen_vertex();
-	char *geometrycode = false ? codegen_geometry() : NULL;
+	char *geometrycode = codegen_geometry();
 	
 	int flags = GPU_SHADER_FLAGS_NONE;




More information about the Bf-blender-cvs mailing list