[Bf-blender-cvs] [181e4ba1cf4] soc-2019-npr: LANPR: Fixing chaining occlusion values for GPencil to use.

YimingWu noreply at git.blender.org
Tue Jun 4 07:53:36 CEST 2019


Commit: 181e4ba1cf49560f2d9d94880d882a9f5d765462
Author: YimingWu
Date:   Tue Jun 4 13:48:40 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB181e4ba1cf49560f2d9d94880d882a9f5d765462

LANPR: Fixing chaining occlusion values for GPencil to use.

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

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 a648bccb58d..953d316990a 100644
--- a/source/blender/draw/engines/lanpr/lanpr_chain.c
+++ b/source/blender/draw/engines/lanpr/lanpr_chain.c
@@ -281,6 +281,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
                                              N,
                                              new_rl->flags,
                                              rls->occlusion);
+          last_occlusion = rls->occlusion;
         }
       }
       else if (new_rv == new_rl->r) {
@@ -318,6 +319,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
     }
 
     // step 2: this line
+    int last_occlusion;
     rls = rl->segments.first;
     for (rls = (LANPR_RenderLineSegment *)rls->item.next; rls;
          rls = (LANPR_RenderLineSegment *)rls->item.next) {
@@ -326,6 +328,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
       lanpr_LinearInterpolate3dv(rl->l->gloc, rl->r->gloc, rls->at, gpos);
       lanpr_append_render_line_chain_point(
           rb, rlc, lpos[0], lpos[1], gpos[0], gpos[1], gpos[2], N, rl->flags, rls->occlusion);
+          last_occlusion = rls->occlusion;
     }
     lanpr_append_render_line_chain_point(rb,
                                          rlc,
@@ -336,7 +339,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
                                          rl->r->gloc[2],
                                          N,
                                          rl->flags,
-                                         0);
+                                         last_occlusion);
 
     // step 3: grow right
     ba = lanpr_get_point_bounding_area(rb, rl->r->fbcoord[0], rl->r->fbcoord[1]);
@@ -356,16 +359,16 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
         rls = new_rl->segments.last;
         last_occlusion = rls->occlusion;
         rlci->occlusion = last_occlusion;
-        rls = (LANPR_RenderLineSegment *)rls->item.prev;
+        //rls = (LANPR_RenderLineSegment *)rls->item.prev;
         if (rls)
           last_occlusion = rls->occlusion;
         for (rls = new_rl->segments.last; rls; rls = (LANPR_RenderLineSegment *)rls->item.prev) {
           double gpos[3], lpos[3];
           lanpr_LinearInterpolate3dv(new_rl->l->fbcoord, new_rl->r->fbcoord, rls->at, lpos);
           lanpr_LinearInterpolate3dv(new_rl->l->gloc, new_rl->r->gloc, rls->at, gpos);
-          last_occlusion = (LANPR_RenderLineSegment *)rls->item.prev ?
-                               ((LANPR_RenderLineSegment *)rls->item.prev)->occlusion :
-                               0;
+          last_occlusion = (LANPR_RenderLineSegment *)rls->item.next ?
+                               ((LANPR_RenderLineSegment *)rls->item.next)->occlusion :
+                               last_occlusion;
           lanpr_append_render_line_chain_point(rb,
                                                rlc,
                                                lpos[0],
@@ -397,6 +400,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
                                                N,
                                                new_rl->flags,
                                                rls->occlusion);
+          last_occlusion = rls->occlusion;
         }
         lanpr_append_render_line_chain_point(rb,
                                              rlc,
@@ -407,7 +411,7 @@ void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thre
                                              new_rl->r->gloc[2],
                                              N,
                                              new_rl->flags,
-                                             100);
+                                             last_occlusion);
       }
       ba = lanpr_get_point_bounding_area(rb, new_rv->fbcoord[0], new_rv->fbcoord[1]);
     }



More information about the Bf-blender-cvs mailing list