[Bf-blender-cvs] [c422033ff8f] temp-lanpr-cleanup2: LANPR: Fix max_occ wrong value on first ever calculation.

YimingWu noreply at git.blender.org
Wed Oct 30 15:07:28 CET 2019


Commit: c422033ff8f2bbc1dd2ae053c2e8603d6c22b5ff
Author: YimingWu
Date:   Wed Oct 30 22:05:50 2019 +0800
Branches: temp-lanpr-cleanup2
https://developer.blender.org/rBc422033ff8f2bbc1dd2ae053c2e8603d6c22b5ff

LANPR: Fix max_occ wrong value on first ever calculation.

Due to the copy on write, the max_occ value needs to be accessed from
the original scene.

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

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

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 4bd868cfcf6..5efd2d93ec8 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -161,7 +161,7 @@ static void lanpr_engine_init(void *ved)
 void DRW_scene_freecache(Scene *sce)
 {
   LANPR_LineLayer *ll;
-  
+
   for (ll = sce->lanpr.line_layers.first; ll; ll = ll->next) {
     if (ll->batch) {
       GPU_batch_discard(ll->batch);
@@ -490,7 +490,8 @@ static void lanpr_cache_init(void *vedata)
     }
   }
 
-  if (ED_lanpr_calculation_flag_check(LANPR_RENDER_FINISHED) || ED_lanpr_calculation_flag_check(LANPR_RENDER_IDLE)) {
+  if (ED_lanpr_calculation_flag_check(LANPR_RENDER_FINISHED) ||
+      ED_lanpr_calculation_flag_check(LANPR_RENDER_IDLE)) {
     ED_lanpr_rebuild_all_command(&draw_ctx->scene->lanpr);
     ED_lanpr_calculation_set_flag(LANPR_RENDER_IDLE);
   }
diff --git a/source/blender/editors/lanpr/lanpr_cpu.c b/source/blender/editors/lanpr/lanpr_cpu.c
index 2c9fc9939fd..ec79c4d5dac 100644
--- a/source/blender/editors/lanpr/lanpr_cpu.c
+++ b/source/blender/editors/lanpr/lanpr_cpu.c
@@ -2719,7 +2719,7 @@ static int lanpr_max_occlusion_in_targets(Depsgraph *depsgraph)
 static int lanpr_get_max_occlusion_level(Depsgraph *dg)
 {
   Scene *s = DEG_get_evaluated_scene(dg);
-  SceneLANPR *lanpr = &s->lanpr;
+  SceneLANPR *lanpr = s->id.orig_id ? &((Scene *)s->id.orig_id)->lanpr : &s->lanpr;
   if (!strcmp(s->r.engine, RE_engine_id_BLENDER_LANPR)) {
     /* Use the line layers in scene LANPR settings */
     return ED_lanpr_max_occlusion_in_line_layers(lanpr);



More information about the Bf-blender-cvs mailing list