[Bf-blender-cvs] [f77767b4a85] temp-lineart-contained: LineArt: Cache related wording changes.
YimingWu
noreply at git.blender.org
Wed Jun 16 16:33:35 CEST 2021
Commit: f77767b4a85ec2f5d7216e934ea97300fef8e511
Author: YimingWu
Date: Wed Jun 16 13:50:57 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rBf77767b4a85ec2f5d7216e934ea97300fef8e511
LineArt: Cache related wording changes.
===================================================================
M source/blender/blenkernel/BKE_gpencil_modifier.h
M source/blender/blenkernel/intern/gpencil_modifier.c
M source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
M source/blender/makesrna/intern/rna_gpencil_modifier.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil_modifier.h b/source/blender/blenkernel/BKE_gpencil_modifier.h
index c8ee21a6770..8fbc2112c77 100644
--- a/source/blender/blenkernel/BKE_gpencil_modifier.h
+++ b/source/blender/blenkernel/BKE_gpencil_modifier.h
@@ -294,19 +294,21 @@ bool BKE_gpencil_has_geometry_modifiers(struct Object *ob);
bool BKE_gpencil_has_time_modifiers(struct Object *ob);
bool BKE_gpencil_has_transform_modifiers(struct Object *ob);
+/* Stores the maximum calculation range in the whole modifier stack for line art so the cache can
+ * cover everything that will be visible. */
typedef struct GpencilLineartLimitInfo {
char min_level;
char max_level;
short edge_types;
} GpencilLineartLimitInfo;
-void BKE_gpencil_get_lineart_modifier_limits(struct Object *ob,
- struct GpencilLineartLimitInfo *info);
+GpencilLineartLimitInfo BKE_gpencil_get_lineart_modifier_limits(const struct Object *ob);
void BKE_gpencil_set_lineart_modifier_limits(struct GpencilModifierData *md,
- struct GpencilLineartLimitInfo *info,
- bool is_first_lineart);
-bool BKE_gpencil_is_first_lineart_in_stack(struct Object *ob, struct GpencilModifierData *md);
+ const struct GpencilLineartLimitInfo *info,
+ const bool is_first_lineart);
+bool BKE_gpencil_is_first_lineart_in_stack(const struct Object *ob,
+ const struct GpencilModifierData *md);
void BKE_gpencil_lattice_init(struct Object *ob);
void BKE_gpencil_lattice_clear(struct Object *ob);
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index 900fcbb0781..5ac85ad3aaf 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -203,22 +203,27 @@ bool BKE_gpencil_has_transform_modifiers(Object *ob)
return false;
}
-void BKE_gpencil_get_lineart_modifier_limits(Object *ob, struct GpencilLineartLimitInfo *info)
+GpencilLineartLimitInfo BKE_gpencil_get_lineart_modifier_limits(const Object *ob)
{
+ GpencilLineartLimitInfo info = {0};
+ bool is_first = true;
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
if (md->type == eGpencilModifierType_Lineart) {
LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)md;
- info->min_level = MIN2(info->min_level, lmd->level_start);
- info->max_level = MAX2(info->max_level,
- (lmd->use_multiple_levels ? lmd->level_end : lmd->level_start));
- info->edge_types |= lmd->edge_types;
+ if (is_first || (lmd->flags & LRT_GPENCIL_USE_CACHE)) {
+ info.min_level = MIN2(info.min_level, lmd->level_start);
+ info.max_level = MAX2(info.max_level,
+ (lmd->use_multiple_levels ? lmd->level_end : lmd->level_start));
+ info.edge_types |= lmd->edge_types;
+ }
}
}
+ return info;
}
void BKE_gpencil_set_lineart_modifier_limits(GpencilModifierData *md,
- struct GpencilLineartLimitInfo *info,
- bool is_first_lineart)
+ const GpencilLineartLimitInfo *info,
+ const bool is_first_lineart)
{
BLI_assert(md->type == eGpencilModifierType_Lineart);
LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)md;
@@ -234,7 +239,7 @@ void BKE_gpencil_set_lineart_modifier_limits(GpencilModifierData *md,
}
}
-bool BKE_gpencil_is_first_lineart_in_stack(Object *ob, GpencilModifierData *md)
+bool BKE_gpencil_is_first_lineart_in_stack(const Object *ob, const GpencilModifierData *md)
{
if (md->type != eGpencilModifierType_Lineart) {
return false;
@@ -249,7 +254,9 @@ bool BKE_gpencil_is_first_lineart_in_stack(Object *ob, GpencilModifierData *md)
}
}
}
- return false; /* Unlikely. */
+ /* If we reach here it means md is not in ob's modifier stack. */
+ BLI_assert(false);
+ return false;
}
/* apply time modifiers */
@@ -822,8 +829,7 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
bool is_first_lineart = true;
- GpencilLineartLimitInfo info = {0};
- BKE_gpencil_get_lineart_modifier_limits(ob, &info);
+ GpencilLineartLimitInfo info = BKE_gpencil_get_lineart_modifier_limits(ob);
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index db75f9a7bda..2cfd33e0a01 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -294,14 +294,14 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
const int source_type = RNA_enum_get(ptr, "source_type");
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
uiLayoutSetPropSep(layout, true);
uiLayoutSetEnabled(layout, !is_baked);
if (!BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data)) {
- uiItemR(layout, ptr, "use_cached_result", 0, NULL, ICON_NONE);
+ uiItemR(layout, ptr, "use_cache", 0, NULL, ICON_NONE);
}
uiItemR(layout, ptr, "source_type", 0, NULL, ICON_NONE);
@@ -346,7 +346,7 @@ static void line_types_panel_draw(const bContext *UNUSED(C), Panel *panel)
PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
uiLayoutSetEnabled(layout, !is_baked);
@@ -391,32 +391,32 @@ static void options_panel_draw(const bContext *UNUSED(C), Panel *panel)
PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
uiLayoutSetPropSep(layout, true);
uiLayoutSetEnabled(layout, !is_baked);
- if (!use_cache || is_first) {
- uiLayout *row = uiLayoutRowWithHeading(layout, false, IFACE_("Custom Camera"));
- uiItemR(row, ptr, "use_custom_camera", 0, "", 0);
- uiLayout *subrow = uiLayoutRow(row, true);
- uiLayoutSetActive(subrow, RNA_boolean_get(ptr, "use_custom_camera"));
- uiLayoutSetPropSep(subrow, true);
- uiItemR(subrow, ptr, "source_camera", 0, "", ICON_OBJECT_DATA);
-
- uiItemR(layout, ptr, "overscan", 0, NULL, ICON_NONE);
-
- uiItemR(layout, ptr, "use_remove_doubles", 0, NULL, ICON_NONE);
- uiItemR(layout, ptr, "use_edge_overlap", 0, IFACE_("Overlapping Edges As Contour"), ICON_NONE);
- uiItemR(layout, ptr, "use_object_instances", 0, NULL, ICON_NONE);
- uiItemR(layout, ptr, "use_clip_plane_boundaries", 0, NULL, ICON_NONE);
- uiItemR(layout, ptr, "floating_as_contour", 0, NULL, ICON_NONE);
- uiItemR(layout, ptr, "use_multiple_edge_types", 0, NULL, ICON_NONE);
- }
- else {
- uiItemL(layout, "Cached with the first line art modifier.", ICON_INFO);
+ if (use_cache && !is_first) {
+ uiItemL(layout, "Cached from the first line art modifier.", ICON_INFO);
+ return;
}
+
+ uiLayout *row = uiLayoutRowWithHeading(layout, false, IFACE_("Custom Camera"));
+ uiItemR(row, ptr, "use_custom_camera", 0, "", 0);
+ uiLayout *subrow = uiLayoutRow(row, true);
+ uiLayoutSetActive(subrow, RNA_boolean_get(ptr, "use_custom_camera"));
+ uiLayoutSetPropSep(subrow, true);
+ uiItemR(subrow, ptr, "source_camera", 0, "", ICON_OBJECT_DATA);
+
+ uiItemR(layout, ptr, "overscan", 0, NULL, ICON_NONE);
+
+ uiItemR(layout, ptr, "use_remove_doubles", 0, NULL, ICON_NONE);
+ uiItemR(layout, ptr, "use_edge_overlap", 0, IFACE_("Overlapping Edges As Contour"), ICON_NONE);
+ uiItemR(layout, ptr, "use_object_instances", 0, NULL, ICON_NONE);
+ uiItemR(layout, ptr, "use_clip_plane_boundaries", 0, NULL, ICON_NONE);
+ uiItemR(layout, ptr, "floating_as_contour", 0, NULL, ICON_NONE);
+ uiItemR(layout, ptr, "use_multiple_edge_types", 0, NULL, ICON_NONE);
}
static void style_panel_draw(const bContext *UNUSED(C), Panel *panel)
@@ -559,7 +559,7 @@ static void face_mark_panel_draw_header(const bContext *UNUSED(C), Panel *panel)
PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
uiLayoutSetEnabled(
layout,
@@ -576,7 +576,7 @@ static void face_mark_panel_draw(const bContext *UNUSED(C), Panel *panel)
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
const bool use_mark = RNA_boolean_get(ptr, "use_face_mark");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
const bool is_first = BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data);
uiLayoutSetEnabled(layout, !is_baked);
@@ -602,27 +602,26 @@ static void chaining_panel_draw(const bContext *UNUSED(C), Panel *panel)
uiLayout *layout = panel->layout;
const bool is_baked = RNA_boolean_get(ptr, "is_baked");
- const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
+ const bool use_cache = RNA_boolean_get(ptr, "use_cache");
const bool is_first
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list