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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs