[Bf-blender-cvs] [fdde2e17c76] temp-lineart-contained: LineArt: Correct handling when edge mark is on border.

YimingWu noreply at git.blender.org
Sun Jun 27 05:38:30 CEST 2021


Commit: fdde2e17c76f499827126fefa6e1447132962da8
Author: YimingWu
Date:   Wed Jun 23 21:58:36 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rBfdde2e17c76f499827126fefa6e1447132962da8

LineArt: Correct handling when edge mark is on border.

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

M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c

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

diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 87649e0b5f1..752e71b4bf4 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -1508,9 +1508,19 @@ static uint16_t lineart_identify_feature_line(LineartRenderBuffer *rb,
     }
   }
 
+  uint16_t edge_flag_result = 0;
+
+  if (use_freestyle_edge && rb->use_edge_marks) {
+    FreestyleEdge *fe;
+    fe = CustomData_bmesh_get(&bm_if_freestyle->edata, e->head.data, CD_FREESTYLE_EDGE);
+    if (fe->flag & FREESTYLE_EDGE_MARK) {
+      edge_flag_result |= LRT_EDGE_FLAG_EDGE_MARK;
+    }
+  }
+
   /* Mesh boundary */
   if (!lr || ll == lr) {
-    return LRT_EDGE_FLAG_CONTOUR;
+    return (edge_flag_result | LRT_EDGE_FLAG_CONTOUR);
   }
 
   LineartTriangle *tri1, *tri2;
@@ -1526,7 +1536,6 @@ static uint16_t lineart_identify_feature_line(LineartRenderBuffer *rb,
   double *view_vector = vv;
   double dot_1 = 0, dot_2 = 0;
   double result;
-  uint16_t edge_flag_result = 0;
 
   if (rb->use_contour) {
 
@@ -1577,16 +1586,11 @@ static uint16_t lineart_identify_feature_line(LineartRenderBuffer *rb,
       }
     }
   }
+
   if (rb->use_material && (ll->f->mat_nr != lr->f->mat_nr)) {
     edge_flag_result |= LRT_EDGE_FLAG_MATERIAL;
   }
-  else if (use_freestyle_edge && rb->use_edge_marks) {
-    FreestyleEdge *fe;
-    fe = CustomData_bmesh_get(&bm_if_freestyle->edata, e->head.data, CD_FREESTYLE_EDGE);
-    if (fe->flag & FREESTYLE_EDGE_MARK) {
-      edge_flag_result |= LRT_EDGE_FLAG_EDGE_MARK;
-    }
-  }
+
   return edge_flag_result;
 }



More information about the Bf-blender-cvs mailing list