[Bf-blender-cvs] [907ea48a52a] soc-2018-npr: Fixed intersection missings when bounding area separation occurs.

Yiming Wu noreply at git.blender.org
Sun Dec 30 04:28:46 CET 2018


Commit: 907ea48a52add5189c3eef0c365a8c92f7ffcda7
Author: Yiming Wu
Date:   Sun Dec 30 11:28:36 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB907ea48a52add5189c3eef0c365a8c92f7ffcda7

Fixed intersection missings when bounding area separation occurs.

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

M	source/blender/draw/engines/lanpr/lanpr_ops.c

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 08f50a89f14..d898292ffd6 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -58,7 +58,7 @@ int use_smooth_contour_modifier_contour = 0; // debug purpose
 /* ====================================== base structures =========================================== */
 
 #define TNS_BOUND_AREA_CROSSES(b1, b2) \
-	((b1)[0] <= (b2)[1] && (b1)[1] >= (b2)[0] && (b1)[3] <= (b2)[2] && (b1)[2] >= (b2)[3])
+	((b1)[0] < (b2)[1] && (b1)[1] > (b2)[0] && (b1)[3] < (b2)[2] && (b1)[2] > (b2)[3])
 
 void lanpr_make_initial_bounding_areas(LANPR_RenderBuffer *rb) {
 	int sp_w = 4;//20;
@@ -1750,6 +1750,9 @@ void lanpr_make_render_geometry_buffers_object(Object *o, real *MVMat, real *MVP
 			//m = tnsGetIndexedMaterial(rb->Scene, f->MaterialID);
 			//if(m) m->Previewv_count += (f->TriangleCount*3);
 
+			if (BM_elem_flag_test(f, BM_ELEM_SELECT))
+				rt->MaterialID = 1;
+
 			rt = (LANPR_RenderTriangle *)(((unsigned char *)rt) + rb->TriangleSize);
 		}
 
@@ -2524,11 +2527,22 @@ void lanpr_triangle_enable_intersections_in_bounding_area(LANPR_RenderBuffer *rb
 	*FBC1 = rt->V[1]->FrameBufferCoord,
 	*FBC2 = rt->V[2]->FrameBufferCoord;
 
+	if (ba->Child){
+		lanpr_triangle_enable_intersections_in_bounding_area(rb,rt,&ba->Child[0]);
+		lanpr_triangle_enable_intersections_in_bounding_area(rb,rt,&ba->Child[1]);
+		lanpr_triangle_enable_intersections_in_bounding_area(rb,rt,&ba->Child[2]);
+		lanpr_triangle_enable_intersections_in_bounding_area(rb,rt,&ba->Child[3]);
+		return;
+	}
+
 	for (lip = ba->LinkedTriangles.first; lip; lip = next_lip) {
 		next_lip = lip->pNext;
 		TestingTriangle = lip->p;
-		if (TestingTriangle == rt || TestingTriangle->Testing == rt || lanpr_triangle_share_edge(rt, TestingTriangle))
+		if (TestingTriangle == rt || TestingTriangle->Testing == rt || lanpr_triangle_share_edge(rt, TestingTriangle)){
+			
 			continue;
+		}
+
 		TestingTriangle->Testing = rt;
 		real
 		*RFBC0 = TestingTriangle->V[0]->FrameBufferCoord,



More information about the Bf-blender-cvs mailing list