[Bf-blender-cvs] [6c54cdaab53] lanpr-under-gp: LineArt: Limit near-by bounding area look up to only one level.
YimingWu
noreply at git.blender.org
Mon Oct 19 14:38:44 CEST 2020
Commit: 6c54cdaab53044293cff3bd42d738c25c5c34dc3
Author: YimingWu
Date: Mon Oct 19 20:38:27 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB6c54cdaab53044293cff3bd42d738c25c5c34dc3
LineArt: Limit near-by bounding area look up to only one level.
===================================================================
M source/blender/editors/lineart/lineart_chain.c
===================================================================
diff --git a/source/blender/editors/lineart/lineart_chain.c b/source/blender/editors/lineart/lineart_chain.c
index b2ca98e9a0b..289b2cc0b10 100644
--- a/source/blender/editors/lineart/lineart_chain.c
+++ b/source/blender/editors/lineart/lineart_chain.c
@@ -716,7 +716,8 @@ static LineartChainRegisterEntry *lineart_chain_get_closest_cre(LineartRenderBuf
unsigned char transparency_mask,
float dist,
int do_geometry_space,
- float *result_new_len)
+ float *result_new_len,
+ LineartBoundingArea *caller_ba)
{
LineartChainRegisterEntry *cre, *next_cre, *closest_cre = NULL;
@@ -776,14 +777,15 @@ static LineartChainRegisterEntry *lineart_chain_get_closest_cre(LineartRenderBuf
#define LRT_TEST_ADJACENT_AREAS(dist_to, list)\
if(dist_to<dist && dist_to>0){\
LISTBASE_FOREACH(LinkData* ,ld,list){\
- adjacent_closest = lineart_chain_get_closest_cre(rb,(LineartBoundingArea*)ld->data,rlc,rlci,occlusion,transparency_mask,dist,do_geometry_space,&adjacent_new_len);\
+ LineartBoundingArea* sba = (LineartBoundingArea*)ld->data;\
+ adjacent_closest = lineart_chain_get_closest_cre(rb,sba,rlc,rlci,occlusion,transparency_mask,dist,do_geometry_space,&adjacent_new_len, ba);\
if(adjacent_new_len < dist){\
dist= adjacent_new_len;\
closest_cre = adjacent_closest;\
}\
}\
}
- if(!do_geometry_space){
+ if(!do_geometry_space && !caller_ba){
LRT_TEST_ADJACENT_AREAS(rlci->pos[0] - ba->l, &ba->lp);
LRT_TEST_ADJACENT_AREAS(ba->r - rlci->pos[0], &ba->rp);
LRT_TEST_ADJACENT_AREAS(ba->u - rlci->pos[1], &ba->up);
@@ -834,9 +836,9 @@ void ED_lineart_chain_connect(LineartRenderBuffer *rb, const int do_geometry_spa
while ((ba_l = lineart_bounding_area_get_end_point(rb, rlci_l)) &&
(ba_r = lineart_bounding_area_get_end_point(rb, rlci_r))) {
closest_cre_l = lineart_chain_get_closest_cre(
- rb, ba_l, rlc, rlci_l, occlusion, transparency_mask, dist, do_geometry_space, &dist_l);
+ rb, ba_l, rlc, rlci_l, occlusion, transparency_mask, dist, do_geometry_space, &dist_l, NULL);
closest_cre_r = lineart_chain_get_closest_cre(
- rb, ba_r, rlc, rlci_r, occlusion, transparency_mask, dist, do_geometry_space, &dist_r);
+ rb, ba_r, rlc, rlci_r, occlusion, transparency_mask, dist, do_geometry_space, &dist_r, NULL);
if (closest_cre_l && closest_cre_r) {
if (dist_l < dist_r) {
closest_cre = closest_cre_l;
More information about the Bf-blender-cvs
mailing list