[Bf-blender-cvs] [7d48a4629e7] hair_guides_grooming: Vertex normal attribute for section polys.

Lukas Tönne noreply at git.blender.org
Wed Jun 27 08:40:47 CEST 2018


Commit: 7d48a4629e74ba95102dca8b39cad23287edad06
Author: Lukas Tönne
Date:   Wed Jun 27 07:40:31 2018 +0100
Branches: hair_guides_grooming
https://developer.blender.org/rB7d48a4629e74ba95102dca8b39cad23287edad06

Vertex normal attribute for section polys.

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

M	source/blender/draw/intern/draw_cache_impl_groom.c

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

diff --git a/source/blender/draw/intern/draw_cache_impl_groom.c b/source/blender/draw/intern/draw_cache_impl_groom.c
index b94b1b9e53f..c6b4521abfb 100644
--- a/source/blender/draw/intern/draw_cache_impl_groom.c
+++ b/source/blender/draw/intern/draw_cache_impl_groom.c
@@ -480,6 +480,7 @@ static void groom_get_verts(
         bool use_curve_cache,
         Gwn_VertBuf *vbo,
         uint id_pos,
+        uint id_nor,
         uint id_flag)
 {
 	int vert_len = groom_count_verts(rdata->regions, parts, use_curve_cache);
@@ -555,6 +556,10 @@ static void groom_get_verts(
 						add_v3_v3(co, section->center);
 						GWN_vertbuf_attr_set(vbo, id_pos, idx, co);
 					}
+					if (id_nor != GM_ATTR_ID_UNUSED)
+					{
+						GWN_vertbuf_attr_set(vbo, id_nor, idx, section->mat[2]);
+					}
 					if (id_flag != GM_ATTR_ID_UNUSED)
 					{
 						char vflag = make_vertex_flag(active, vertex->flag & GM_VERTEX_SELECT);
@@ -789,16 +794,17 @@ static Gwn_VertBuf *groom_batch_cache_get_pos(GroomRenderData *rdata, GroomBatch
 {
 	if (cache->pos == NULL) {
 		static Gwn_VertFormat format = { 0 };
-		static struct { uint pos, col; } attr_id;
+		static struct { uint pos, nor; } attr_id;
 		
 		GWN_vertformat_clear(&format);
 		
 		/* initialize vertex format */
 		attr_id.pos = GWN_vertformat_attr_add(&format, "pos", GWN_COMP_F32, 3, GWN_FETCH_FLOAT);
+		attr_id.nor = GWN_vertformat_attr_add(&format, "nor", GWN_COMP_F32, 3, GWN_FETCH_FLOAT);
 		
 		cache->pos = GWN_vertbuf_create_with_format(&format);
 		
-		groom_get_verts(rdata, parts, true, cache->pos, attr_id.pos, GM_ATTR_ID_UNUSED);
+		groom_get_verts(rdata, parts, true, cache->pos, attr_id.pos, attr_id.nor, GM_ATTR_ID_UNUSED);
 	}
 
 	return cache->pos;
@@ -826,16 +832,17 @@ static void groom_batch_cache_create_overlay_batches(GroomRenderData *rdata, Gro
 {
 	if (cache->overlay_verts == NULL) {
 		static Gwn_VertFormat format = { 0 };
-		static struct { uint pos, data; } attr_id;
+		static struct { uint pos, nor, data; } attr_id;
 		if (format.attrib_ct == 0) {
 			/* initialize vertex format */
 			attr_id.pos = GWN_vertformat_attr_add(&format, "pos", GWN_COMP_F32, 3, GWN_FETCH_FLOAT);
+			attr_id.nor = GWN_vertformat_attr_add(&format, "nor", GWN_COMP_F32, 3, GWN_FETCH_FLOAT);
 			attr_id.data = GWN_vertformat_attr_add(&format, "data", GWN_COMP_U8, 1, GWN_FETCH_INT);
 		}
 		
 		Gwn_VertBuf *vbo = GWN_vertbuf_create_with_format(&format);
 		
-		groom_get_verts(rdata, parts, false, vbo, attr_id.pos, attr_id.data);
+		groom_get_verts(rdata, parts, false, vbo, attr_id.pos, attr_id.nor, attr_id.data);
 		
 		cache->overlay_verts = GWN_batch_create_ex(GWN_PRIM_POINTS, vbo, NULL, GWN_BATCH_OWNS_VBO);
 	}



More information about the Bf-blender-cvs mailing list