[Bf-blender-cvs] [6034edfb416] soc-2019-npr: LANPR: Use root bounding area to allow longer chaining (need workarounds.)

Yiming Wu noreply at git.blender.org
Wed Jun 12 15:33:36 CEST 2019


Commit: 6034edfb416bd02da8d082a5c012fde4d65c0d59
Author: Yiming Wu
Date:   Wed Jun 12 21:33:27 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB6034edfb416bd02da8d082a5c012fde4d65c0d59

LANPR: Use root bounding area to allow longer chaining (need workarounds.)

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

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

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_chain.c b/source/blender/draw/engines/lanpr/lanpr_chain.c
index 5df0b79fbc4..90eaad5be80 100644
--- a/source/blender/draw/engines/lanpr/lanpr_chain.c
+++ b/source/blender/draw/engines/lanpr/lanpr_chain.c
@@ -428,20 +428,20 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
 LANPR_BoundingArea *lanpr_get_point_bounding_area(LANPR_RenderBuffer *rb, real x, real y);
 LANPR_BoundingArea *lanpr_get_point_bounding_area_recursive(
   LANPR_RenderBuffer *rb, LANPR_BoundingArea *root, LANPR_RenderLineChainItem* rlci){
-  if (!root->child) {
+  //if (!root->child) {
     return root;
-  }
-  else {
-    LANPR_BoundingArea* ch = root->child;
-    #define IN_BOUND(ba,rlci)\
-      ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
-    if     (IN_BOUND(ch[0],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[0],rlci);
-    else if(IN_BOUND(ch[1],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[1],rlci);
-    else if(IN_BOUND(ch[2],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[2],rlci);
-    else if(IN_BOUND(ch[3],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[3],rlci);
-    #undef IN_BOUND
-  }
-  return NULL;
+  //}
+  //else {
+  //  LANPR_BoundingArea* ch = root->child;
+  //  #define IN_BOUND(ba,rlci)\
+  //    ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
+  //  if     (IN_BOUND(ch[0],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[0],rlci);
+  //  else if(IN_BOUND(ch[1],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[1],rlci);
+  //  else if(IN_BOUND(ch[2],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[2],rlci);
+  //  else if(IN_BOUND(ch[3],rlci)) return lanpr_get_point_bounding_area_recursive(rb,&ch[3],rlci);
+  //  #undef IN_BOUND
+  //}
+  //return NULL;
 }
 LANPR_BoundingArea *lanpr_get_end_point_bounding_area(LANPR_RenderBuffer *rb, LANPR_RenderLineChainItem* rlci){
   LANPR_BoundingArea* root = lanpr_get_point_bounding_area(rb,rlci->pos[0],rlci->pos[1]);
@@ -453,21 +453,21 @@ LANPR_BoundingArea *lanpr_get_end_point_bounding_area(LANPR_RenderBuffer *rb, LA
 //      2) probably need to add it to root bounding area which has larger surface area then it will cover typical threshold values.
 void lanpr_link_point_with_bounding_area_recursive(
   LANPR_RenderBuffer *rb, LANPR_BoundingArea* root, LANPR_RenderLineChain* rlc, LANPR_RenderLineChainItem* rlci){
-  if (!root->child) {
+  //if (!root->child) {
     LANPR_ChainRegisterEntry* cre = list_append_pointer_static_sized(&root->linked_chains, &rb->render_data_pool, rlc, sizeof(LANPR_ChainRegisterEntry));
     cre->rlci = rlci;
     if(rlci==rlc->chain.first) cre->is_left = 1;
-  }
-  else {
-    LANPR_BoundingArea* ch = root->child;
-    #define IN_BOUND(ba,rlci)\
-      ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
-    if     (IN_BOUND(ch[0],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[0],rlc,rlci);
-    else if(IN_BOUND(ch[1],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[1],rlc,rlci);
-    else if(IN_BOUND(ch[2],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[2],rlc,rlci);
-    else if(IN_BOUND(ch[3],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[3],rlc,rlci);
-    #undef IN_BOUND
-  }
+  //}
+  //else {
+  //  LANPR_BoundingArea* ch = root->child;
+  //  #define IN_BOUND(ba,rlci)\
+  //    ba.l<=rlci->pos[0] && ba.r>=rlci->pos[0] && ba.b<=rlci->pos[1] && ba.u>=rlci->pos[1]
+  //  if     (IN_BOUND(ch[0],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[0],rlc,rlci);
+  //  else if(IN_BOUND(ch[1],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[1],rlc,rlci);
+  //  else if(IN_BOUND(ch[2],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[2],rlc,rlci);
+  //  else if(IN_BOUND(ch[3],rlci)) lanpr_link_point_with_bounding_area_recursive(rb,&ch[3],rlc,rlci);
+  //  #undef IN_BOUND
+  //}
 }
 
 void lanpr_link_chain_with_bounding_areas(LANPR_RenderBuffer *rb, LANPR_RenderLineChain* rlc)



More information about the Bf-blender-cvs mailing list