[Bf-blender-cvs] [a230ab1571f] soc-2019-npr: LANPR: first-time chain only includes the same type of lines.

YimingWu noreply at git.blender.org
Thu Jun 27 08:28:58 CEST 2019


Commit: a230ab1571f79a9f37ef6e89a4103210553daa0d
Author: YimingWu
Date:   Thu Jun 27 14:00:15 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBa230ab1571f79a9f37ef6e89a4103210553daa0d

LANPR: first-time chain only includes the same type of lines.

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

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

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_chain.c b/source/blender/draw/engines/lanpr/lanpr_chain.c
index 467ea0c6816..7e7568c18c2 100644
--- a/source/blender/draw/engines/lanpr/lanpr_chain.c
+++ b/source/blender/draw/engines/lanpr/lanpr_chain.c
@@ -38,7 +38,8 @@ LANPR_BoundingArea *lanpr_get_point_bounding_area(LANPR_RenderBuffer *rb, real x
 
 LANPR_RenderLine *lanpr_get_connected_render_line(LANPR_BoundingArea *ba,
                                                   LANPR_RenderVert *rv,
-                                                  LANPR_RenderVert **new_rv)
+                                                  LANPR_RenderVert **new_rv,
+                                                  int match_flag)
 {
   LinkData *lip;
   LANPR_RenderLine *nrl;
@@ -52,6 +53,10 @@ LANPR_RenderLine *lanpr_get_connected_render_line(LANPR_BoundingArea *ba,
       continue;
     }
 
+    if(match_flag && ((nrl->flags & LANPR_EDGE_FLAG_ALL_TYPE)&match_flag)==0){
+      continue;
+    }
+
     /*  always chain connected lines for now. */
     /*  simplification will take care of the sharp points. */
     /*  if(cosine whatever) continue; */
@@ -259,7 +264,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb)
                                        N,
                                        rl->flags,
                                        rls->occlusion);
-    while (ba && (new_rl = lanpr_get_connected_render_line(ba, new_rv, &new_rv))) {
+    while (ba && (new_rl = lanpr_get_connected_render_line(ba, new_rv, &new_rv,rl->flags))) {
       new_rl->flags |= LANPR_EDGE_FLAG_CHAIN_PICKED;
 
       N[0] = N[1] = N[2] = 0;
@@ -357,7 +362,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb)
     /*  below already done in step 2 */
     /*  lanpr_push_render_line_chain_point(rb,rlc,new_rv->fbcoord[0],new_rv->fbcoord[1],rl->flags,0);
      */
-    while (ba && (new_rl = lanpr_get_connected_render_line(ba, new_rv, &new_rv))) {
+    while (ba && (new_rl = lanpr_get_connected_render_line(ba, new_rv, &new_rv,rl->flags))) {
       new_rl->flags |= LANPR_EDGE_FLAG_CHAIN_PICKED;
 
       /*  fix leading vertex type */
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index f07488f05e7..0ec9647e77c 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -4150,7 +4150,8 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
 int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph)
 {
   LANPR_RenderBuffer *rb;
-  SceneLANPR *lanpr;
+  Scene* s = DEG_get_evaluated_scene(depsgraph);
+  SceneLANPR *lanpr = &s->lanpr;
 
   if (!lanpr->enabled) {
     return OPERATOR_CANCELLED;
@@ -4160,10 +4161,9 @@ int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph)
 
   lanpr_share.render_buffer_shared = rb;
 
-  rb->scene = DEG_get_evaluated_scene(depsgraph);
-  rb->w = rb->scene->r.xsch;
-  rb->h = rb->scene->r.ysch;
-  lanpr = &rb->scene->lanpr;
+  rb->scene = s;
+  rb->w = s->r.xsch;
+  rb->h = s->r.ysch;
   rb->enable_intersections = lanpr->enable_intersections;
 
   rb->triangle_size = lanpr_get_render_triangle_size(rb);



More information about the Bf-blender-cvs mailing list