[Bf-blender-cvs] [cb50697d893] lineart-shadow: LineArt: Versioning and guarding for shadow camera

YimingWu noreply at git.blender.org
Mon Aug 2 08:31:38 CEST 2021


Commit: cb50697d893ca8f19dcbfd0bdcab354985a1ec8b
Author: YimingWu
Date:   Mon Aug 2 14:01:08 2021 +0800
Branches: lineart-shadow
https://developer.blender.org/rBcb50697d893ca8f19dcbfd0bdcab354985a1ec8b

LineArt: Versioning and guarding for shadow camera

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

M	source/blender/blenloader/intern/versioning_300.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c

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

diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index a632c8c7fde..c694be2b7f6 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -704,6 +704,16 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
         }
       }
     }
+    LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
+      LISTBASE_FOREACH (GpencilModifierData *, gpd, &ob->greasepencil_modifiers) {
+        if (gpd->type == eGpencilModifierType_Lineart) {
+          LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)gpd;
+          lmd->shadow_camera_near = 0.1f;
+          lmd->shadow_camera_far = 200.0f;
+          lmd->shadow_camera_size = 200.0f;
+        }
+      }
+    }
   }
 
   /**
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 00712763767..ab8eaf7e603 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -5092,6 +5092,14 @@ static bool lineart_main_try_generate_shadow(Depsgraph *depsgraph,
   rb->far_clip = lmd->shadow_camera_far;
   rb->w = lmd->shadow_camera_size;
   rb->h = lmd->shadow_camera_size;
+  /* Need to prevent wrong camera configuration so that shadow computation won't stall. */
+  if (!rb->w || !rb->h) {
+    rb->w = rb->h = 200;
+  }
+  if (!rb->near_clip || !rb->far_clip) {
+    rb->near_clip = 0.1f;
+    rb->far_clip = 200.0f;
+  }
   rb->tile_recursive_level = is_persp ? LRT_TILE_RECURSIVE_PERSPECTIVE : LRT_TILE_RECURSIVE_ORTHO;
   rb->use_crease = rb->use_material = rb->use_edge_marks = rb->use_intersections =
       rb->use_light_contour = rb->use_loose = false;



More information about the Bf-blender-cvs mailing list