[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