[Bf-blender-cvs] [442f269a72e] lineart-bvh: Merge remote-tracking branch 'origin/master' into lineart-bvh

YimingWu noreply at git.blender.org
Sun Jul 4 08:10:36 CEST 2021


Commit: 442f269a72e8f07393fd246f642e210171a1c9bc
Author: YimingWu
Date:   Sun Jul 4 13:23:52 2021 +0800
Branches: lineart-bvh
https://developer.blender.org/rB442f269a72e8f07393fd246f642e210171a1c9bc

Merge remote-tracking branch 'origin/master' into lineart-bvh

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



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

diff --cc release/scripts/startup/bl_ui/properties_material.py
index 6c7837237e4,b217e33de12..5df58f8ac4c
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@@ -291,18 -291,19 +291,24 @@@ class MATERIAL_PT_lineart(MaterialButto
          mat = context.material
          lineart = mat.lineart
  
-         layout.prop(lineart, "use_transparency")
+         layout.prop(lineart, "use_material_mask")
  
          row = layout.row(align=True, heading="Masks")
-         row.active = lineart.use_transparency
-         for i in range(6):
-             row.prop(lineart, "use_transparency_mask", text=str(i), index=i, toggle=True)
+         row.active = lineart.use_material_mask
+         for i in range(8):
+             row.prop(lineart, "use_material_mask_bits", text=str(i), index=i, toggle=True)
+ 
+         row = layout.row(align=True, heading="Custom Occlusion")
+         row.prop(lineart, "use_mat_occlusion", text="")
+         sub = row.row(align=False)
+         sub.active = lineart.use_mat_occlusion
+         sub.prop(lineart, "mat_occlusion", slider=True, text="Levels")
  
 +        row = layout.row(align=True, heading="Custom occlusion effectiveness")
 +        row.active = lineart.use_occlusion_effectiveness
 +        row.prop(lineart, "use_occlusion_effectiveness", text="")
 +        row.prop(lineart, "occlusion_effectiveness", slider=True)
 +
  
  classes = (
      MATERIAL_MT_context_menu,
diff --cc source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index ba5b1a5cb31,9593a1364e7..f58de44b04c
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@@ -258,18 -254,10 +258,11 @@@ static void updateDepsgraph(GpencilModi
    else {
      add_this_collection(ctx->scene->master_collection, ctx, mode);
    }
-   if (lmd->calculation_flags & LRT_USE_CUSTOM_CAMERA) {
-     DEG_add_object_relation(
-         ctx->node, lmd->source_camera, DEG_OB_COMP_TRANSFORM, "Line Art Modifier");
-     DEG_add_object_relation(
-         ctx->node, lmd->source_camera, DEG_OB_COMP_PARAMETERS, "Line Art Modifier");
-   }
-   else {
-     DEG_add_object_relation(
-         ctx->node, ctx->scene->camera, DEG_OB_COMP_TRANSFORM, "Line Art Modifier");
-     DEG_add_object_relation(
-         ctx->node, ctx->scene->camera, DEG_OB_COMP_PARAMETERS, "Line Art Modifier");
-   }
++
+   DEG_add_object_relation(
+       ctx->node, ctx->scene->camera, DEG_OB_COMP_TRANSFORM, "Line Art Modifier");
+   DEG_add_object_relation(
+       ctx->node, ctx->scene->camera, DEG_OB_COMP_PARAMETERS, "Line Art Modifier");
  }
  
  static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
@@@ -434,28 -425,24 +441,28 @@@ static void occlusion_panel_draw(const 
    }
  }
  
- static void transparency_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
+ static void material_mask_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
  {
    uiLayout *layout = panel->layout;
-   PointerRNA ob_ptr;
-   PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
+   PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
  
    const bool is_baked = RNA_boolean_get(ptr, "is_baked");
-   const bool show_in_front = RNA_boolean_get(&ob_ptr, "show_in_front");
- 
    uiLayoutSetEnabled(layout, !is_baked);
-   uiLayoutSetActive(layout, show_in_front);
  
-   uiItemR(layout, ptr, "use_transparency", 0, IFACE_("Transparency"), ICON_NONE);
+   uiItemR(layout, ptr, "use_material_mask", 0, IFACE_("Material Mask"), ICON_NONE);
  }
  
- static void transparency_panel_draw(const bContext *UNUSED(C), Panel *panel)
+ static void material_mask_panel_draw(const bContext *UNUSED(C), Panel *panel)
  {
    uiLayout *layout = panel->layout;
--  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
++  PointerRNA ob_ptr;
++  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
  
    const bool is_baked = RNA_boolean_get(ptr, "is_baked");
++  const bool show_in_front = RNA_boolean_get(&ob_ptr, "show_in_front");
++
    uiLayoutSetEnabled(layout, !is_baked);
++  uiLayoutSetActive(layout, show_in_front);
  
    uiLayoutSetPropSep(layout, true);
  
@@@ -473,24 -460,9 +480,24 @@@
    uiItemL(row, "", ICON_BLANK1); /* Space for decorator. */
  
    uiLayout *col = uiLayoutColumn(layout, true);
-   uiItemR(col, ptr, "use_transparency_match", 0, IFACE_("Match All Masks"), ICON_NONE);
+   uiItemR(col, ptr, "use_material_mask_match", 0, IFACE_("Match All Masks"), ICON_NONE);
  }
  
 +static void intersection_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
 +{
 +  uiLayout *layout = panel->layout;
 +  PointerRNA ob_ptr;
 +  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
 +
 +  const bool is_baked = RNA_boolean_get(ptr, "is_baked");
 +  const bool use_isec = RNA_boolean_get(ptr, "use_intersection");
 +
 +  uiLayoutSetEnabled(layout, !is_baked);
 +  uiLayoutSetActive(layout, use_isec);
 +
 +  uiItemR(layout, ptr, "use_intersection_filter", 0, IFACE_("Filter Intersection"), ICON_NONE);
 +}
 +
  static void intersection_panel_draw(const bContext *UNUSED(C), Panel *panel)
  {
    uiLayout *layout = panel->layout;
@@@ -565,8 -542,9 +572,9 @@@ static void chaining_panel_draw(const b
    uiLayout *layout = panel->layout;
  
    const bool is_baked = RNA_boolean_get(ptr, "is_baked");
 -  const bool use_cache = RNA_boolean_get(ptr, "use_cache");
 +  const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
    const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
+   const bool is_geom = RNA_boolean_get(ptr, "use_geometry_space_chain");
  
    uiLayoutSetPropSep(layout, true);
    uiLayoutSetEnabled(layout, !is_baked);
@@@ -579,12 -557,17 +587,18 @@@
    uiLayout *col = uiLayoutColumnWithHeading(layout, true, IFACE_("Chain"));
    uiItemR(col, ptr, "use_fuzzy_intersections", 0, NULL, ICON_NONE);
    uiItemR(col, ptr, "use_fuzzy_all", 0, NULL, ICON_NONE);
-   uiItemR(col, ptr, "chain_floating_edges", 0, NULL, ICON_NONE);
-   uiItemR(col, ptr, "chain_geometry_space", 0, NULL, ICON_NONE);
+   uiItemR(col, ptr, "use_loose_edge_chain", 0, IFACE_("Loose Edges"), ICON_NONE);
+   uiItemR(col, ptr, "use_loose_as_contour", 0, NULL, ICON_NONE);
+   uiItemR(col, ptr, "use_geometry_space_chain", 0, NULL, ICON_NONE);
  
-   uiItemR(layout, ptr, "chaining_image_threshold", 0, NULL, ICON_NONE);
+   uiItemR(layout,
+           ptr,
+           "chaining_image_threshold",
+           0,
+           is_geom ? IFACE_("Geometry Threshold") : NULL,
+           ICON_NONE);
  
 +  uiItemR(layout, ptr, "smooth_tolerance", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
    uiItemR(layout, ptr, "split_angle", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
  }
  
@@@ -687,19 -648,15 +703,23 @@@ static void panelRegister(ARegionType *
    PanelType *occlusion_panel = gpencil_modifier_subpanel_register(
        region_type, "occlusion", "Occlusion", NULL, occlusion_panel_draw, panel_type);
    gpencil_modifier_subpanel_register(region_type,
-                                      "transparency",
+                                      "material_mask",
                                       "",
-                                      transparency_panel_draw_header,
-                                      transparency_panel_draw,
+                                      material_mask_panel_draw_header,
+                                      material_mask_panel_draw,
                                       occlusion_panel);
 +  gpencil_modifier_subpanel_register(region_type,
 +                                     "intersection",
 +                                     "",
 +                                     intersection_panel_draw_header,
 +                                     intersection_panel_draw,
 +                                     panel_type);
 +  gpencil_modifier_subpanel_register(
 +      region_type, "face_mark", "", face_mark_panel_draw_header, face_mark_panel_draw, panel_type);
+   gpencil_modifier_subpanel_register(
+       region_type, "intersection", "Intersection", NULL, intersection_panel_draw, panel_type);
+   gpencil_modifier_subpanel_register(
+       region_type, "face_mark", "", face_mark_panel_draw_header, face_mark_panel_draw, panel_type);
    gpencil_modifier_subpanel_register(
        region_type, "chaining", "Chaining", NULL, chaining_panel_draw, panel_type);
    gpencil_modifier_subpanel_register(
diff --cc source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
index 18bd524ed2b,247b0b3f57b..d77e0900535
--- a/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
+++ b/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h
@@@ -307,8 -287,7 +304,8 @@@ typedef struct LineartRenderBuffer 
    bool use_material;
    bool use_edge_marks;
    bool use_intersections;
-   bool use_floating;
+   bool use_loose;
 +  bool use_light_contour;
    bool fuzzy_intersections;
    bool fuzzy_everything;
    bool allow_boundaries;
diff --cc source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 9a08a093f37,c05749061a9..9ef3cb895ac
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@@ -3112,28 -3025,9 +3061,27 @@@ static LineartRenderBuffer *lineart_cre
    rb->shift_x = fit == CAMERA_SENSOR_FIT_HOR ? c->shiftx : c->shiftx / asp;
    rb->shift_y = fit == CAMERA_SENSOR_FIT_VERT ? c->shifty : c->shifty * asp;
  
 +  rb->overscan = lmd->overscan;
 +
 +  rb->shift_x /= (1 + rb->overscan);
 +  rb->shift_y /= (1 + rb->overscan);
 +
 +  if (lmd->light_contour_object) {
 +    Object *lo = lmd->light_contour_object;
 +    if (lo->type == OB_LAMP && ((Light *)lo->data)->type == LA_SUN) {
 +      rb->light_is_sun = true;
 +      float vec[3] = {0.0f, 0.0f, 1.0f};
 +      mul_mat3_m4_v3(lo->obmat, vec);
 +      copy_v3db_v3fl(rb->light_vector, vec);
 +    }
 +    else {
 +      copy_v3db_v3fl(rb->light_vector, lmd->light_contour_object->obmat[3]);
 +    }
 +  }
 +
    rb->crease_threshold = cos(M_PI - lmd->crease_th

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list