[Bf-blender-cvs] [883cb583550] blender2.8: GWN: Add Line Adjacency primitive support.

Clément Foucault noreply at git.blender.org
Sun May 20 19:20:08 CEST 2018


Commit: 883cb583550596e0c2e3b809ec8de059d0b053ad
Author: Clément Foucault
Date:   Sat May 19 13:09:47 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB883cb583550596e0c2e3b809ec8de059d0b053ad

GWN: Add Line Adjacency primitive support.

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

M	intern/gawain/gawain/gwn_element.h
M	intern/gawain/gawain/gwn_primitive.h
M	intern/gawain/src/gwn_element.c
M	intern/gawain/src/gwn_primitive.c

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

diff --git a/intern/gawain/gawain/gwn_element.h b/intern/gawain/gawain/gwn_element.h
index 7a28ab183f8..a80da71e0e8 100644
--- a/intern/gawain/gawain/gwn_element.h
+++ b/intern/gawain/gawain/gwn_element.h
@@ -61,6 +61,7 @@ void GWN_indexbuf_add_primitive_restart(Gwn_IndexBufBuilder*);
 void GWN_indexbuf_add_point_vert(Gwn_IndexBufBuilder*, unsigned v);
 void GWN_indexbuf_add_line_verts(Gwn_IndexBufBuilder*, unsigned v1, unsigned v2);
 void GWN_indexbuf_add_tri_verts(Gwn_IndexBufBuilder*, unsigned v1, unsigned v2, unsigned v3);
+void GWN_indexbuf_add_line_adj_verts(Gwn_IndexBufBuilder*, unsigned v1, unsigned v2, unsigned v3, unsigned v4);
 
 Gwn_IndexBuf* GWN_indexbuf_build(Gwn_IndexBufBuilder*);
 void GWN_indexbuf_build_in_place(Gwn_IndexBufBuilder*, Gwn_IndexBuf*);
diff --git a/intern/gawain/gawain/gwn_primitive.h b/intern/gawain/gawain/gwn_primitive.h
index efcc67243ad..3359b3582bb 100644
--- a/intern/gawain/gawain/gwn_primitive.h
+++ b/intern/gawain/gawain/gwn_primitive.h
@@ -22,6 +22,7 @@ typedef enum {
 	GWN_PRIM_TRI_STRIP,
 	GWN_PRIM_TRI_FAN,
 
+	GWN_PRIM_LINES_ADJ,
 	GWN_PRIM_TRIS_ADJ,
 	GWN_PRIM_LINE_STRIP_ADJ,
 
diff --git a/intern/gawain/src/gwn_element.c b/intern/gawain/src/gwn_element.c
index c56516817d6..e2fbb657c78 100644
--- a/intern/gawain/src/gwn_element.c
+++ b/intern/gawain/src/gwn_element.c
@@ -63,6 +63,9 @@ void GWN_indexbuf_init(Gwn_IndexBufBuilder* builder, Gwn_PrimType prim_type, uns
 		case GWN_PRIM_TRIS:
 			verts_per_prim = 3;
 			break;
+		case GWN_PRIM_LINES_ADJ:
+			verts_per_prim = 4;
+			break;
 		default:
 #if TRUST_NO_ONE
 			assert(false);
@@ -127,6 +130,19 @@ void GWN_indexbuf_add_tri_verts(Gwn_IndexBufBuilder* builder, unsigned v1, unsig
 	GWN_indexbuf_add_generic_vert(builder, v3);
 	}
 
+void GWN_indexbuf_add_line_adj_verts(Gwn_IndexBufBuilder* builder, unsigned v1, unsigned v2, unsigned v3, unsigned v4)
+	{
+#if TRUST_NO_ONE
+	assert(builder->prim_type == GWN_PRIM_LINES_ADJ);
+	assert(v2 != v3); /* only the line need diff indices */
+#endif
+
+	GWN_indexbuf_add_generic_vert(builder, v1);
+	GWN_indexbuf_add_generic_vert(builder, v2);
+	GWN_indexbuf_add_generic_vert(builder, v3);
+	GWN_indexbuf_add_generic_vert(builder, v4);
+	}
+
 #if GWN_TRACK_INDEX_RANGE
 // Everything remains 32 bit while building to keep things simple.
 // Find min/max after, then convert to smallest index type possible.
diff --git a/intern/gawain/src/gwn_primitive.c b/intern/gawain/src/gwn_primitive.c
index 8ec2a102df1..c2638bcc8c8 100644
--- a/intern/gawain/src/gwn_primitive.c
+++ b/intern/gawain/src/gwn_primitive.c
@@ -24,6 +24,7 @@ Gwn_PrimClass GWN_primtype_class(Gwn_PrimType prim_type)
 		[GWN_PRIM_TRI_STRIP] = GWN_PRIM_CLASS_SURFACE,
 		[GWN_PRIM_TRI_FAN] = GWN_PRIM_CLASS_SURFACE,
 
+		[GWN_PRIM_LINES_ADJ] = GWN_PRIM_CLASS_LINE,
 		[GWN_PRIM_LINE_STRIP_ADJ] = GWN_PRIM_CLASS_LINE,
 		[GWN_PRIM_TRIS_ADJ] = GWN_PRIM_CLASS_SURFACE,
 
@@ -57,6 +58,7 @@ GLenum convert_prim_type_to_gl(Gwn_PrimType prim_type)
 		[GWN_PRIM_TRI_STRIP] = GL_TRIANGLE_STRIP,
 		[GWN_PRIM_TRI_FAN] = GL_TRIANGLE_FAN,
 
+		[GWN_PRIM_LINES_ADJ] = GL_LINES_ADJACENCY,
 		[GWN_PRIM_LINE_STRIP_ADJ] = GL_LINE_STRIP_ADJACENCY,
 		[GWN_PRIM_TRIS_ADJ] = GL_TRIANGLES_ADJACENCY,
 		};



More information about the Bf-blender-cvs mailing list