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); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs