[Bf-blender-cvs] [10098812d3c] soc-2019-npr: LANPR: Intersection cache now updates before lanpr_cache_finish().

YimingWu noreply at git.blender.org
Thu Jul 4 16:13:05 CEST 2019


Commit: 10098812d3c266ae9b01d1a60e641ee7e3b95344
Author: YimingWu
Date:   Thu Jul 4 22:12:07 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB10098812d3c266ae9b01d1a60e641ee7e3b95344

LANPR: Intersection cache now updates before lanpr_cache_finish().

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

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

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 99732b804be..564915ecce1 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -185,6 +185,8 @@ static void lanpr_engine_free(void)
 void lanpr_calculate_normal_object_vector(LANPR_LineLayer *ll, float *normal_object_direction);
 int lanpr_dpix_texture_size(SceneLANPR *lanpr);
 
+void lanpr_rebuild_all_command(SceneLANPR *lanpr);
+
 static void lanpr_cache_init(void *vedata)
 {
 
@@ -417,6 +419,24 @@ static void lanpr_cache_init(void *vedata)
   else if (lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE) {
     ;
   }
+
+  /* Intersection cache must be calculated before drawing. */
+  int updated = 0;
+  if (draw_ctx->scene->lanpr.auto_update &&
+      (!lanpr_share.render_buffer_shared ||
+       lanpr_share.render_buffer_shared->cached_for_frame != draw_ctx->scene->r.cfra)) {
+    if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_SOFTWARE) {
+      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 0);
+      updated = 1;
+    }
+    else if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_DPIX) {
+      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 1);
+    }
+  }
+
+  if (updated) {
+    lanpr_rebuild_all_command(&draw_ctx->scene->lanpr);
+  }
 }
 
 static void lanpr_cache_populate(void *vedata, Object *ob)
@@ -579,28 +599,9 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer *dfb, int is_rend
   }
 }
 
-void lanpr_rebuild_all_command(SceneLANPR *lanpr);
-
 static void lanpr_draw_scene(void *vedata)
 {
   DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
-  const DRWContextState *draw_ctx = DRW_context_state_get();
-  int updated = 0;
-  if (draw_ctx->scene->lanpr.auto_update &&
-      (!lanpr_share.render_buffer_shared ||
-       lanpr_share.render_buffer_shared->cached_for_frame != draw_ctx->scene->r.cfra)) {
-    if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_SOFTWARE) {
-      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 0);
-      updated = 1;
-    }
-    else if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_DPIX) {
-      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 1);
-    }
-  }
-
-  if (updated) {
-    lanpr_rebuild_all_command(&draw_ctx->scene->lanpr);
-  }
 
   lanpr_draw_scene_exec(vedata, dfbl->default_fb, 0);
 }



More information about the Bf-blender-cvs mailing list