[Bf-blender-cvs] [4e84a49218f] lineart-fn-cached: Lineart: Clean up cache patch.
YimingWu
noreply at git.blender.org
Tue Jun 15 14:09:23 CEST 2021
Commit: 4e84a49218f341754b8d930660b391dd7e3dc207
Author: YimingWu
Date: Mon Jun 14 20:53:16 2021 +0800
Branches: lineart-fn-cached
https://developer.blender.org/rB4e84a49218f341754b8d930660b391dd7e3dc207
Lineart: Clean up cache patch.
===================================================================
M source/blender/blenkernel/BKE_gpencil_modifier.h
M source/blender/blenkernel/intern/gpencil_modifier.c
M source/blender/blenloader/intern/versioning_300.c
M source/blender/gpencil_modifiers/intern/MOD_gpencillineart.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 b49a6fa244c..80d632ca9e2 100644
--- a/source/blender/blenkernel/BKE_gpencil_modifier.h
+++ b/source/blender/blenkernel/BKE_gpencil_modifier.h
@@ -300,12 +300,12 @@ typedef struct GpencilLineartLimitInfo {
short edge_types;
} GpencilLineartLimitInfo;
-void BKE_gpencil_get_lineart_global_limits(struct Object *ob,
- struct GpencilLineartLimitInfo *info);
+void BKE_gpencil_get_lineart_modifier_limits(struct Object *ob,
+ struct GpencilLineartLimitInfo *info);
-void BKE_gpencil_assign_lineart_global_limits(struct GpencilModifierData *md,
- struct GpencilLineartLimitInfo *info);
-bool BKE_gpencil_lineart_is_first_run(struct Object *ob, struct GpencilModifierData *md);
+void BKE_gpencil_set_lineart_global_limits(struct GpencilModifierData *md,
+ struct GpencilLineartLimitInfo *info);
+bool BKE_gpencil_is_first_lineart_in_stack(struct Object *ob, 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 83c7938a2ad..f9a91268e09 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -203,7 +203,7 @@ bool BKE_gpencil_has_transform_modifiers(Object *ob)
return false;
}
-void BKE_gpencil_get_lineart_global_limits(Object *ob, struct GpencilLineartLimitInfo *info)
+void BKE_gpencil_get_lineart_modifier_limits(Object *ob, struct GpencilLineartLimitInfo *info)
{
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
if (md->type == eGpencilModifierType_Lineart) {
@@ -216,16 +216,17 @@ void BKE_gpencil_get_lineart_global_limits(Object *ob, struct GpencilLineartLimi
}
}
-void BKE_gpencil_assign_lineart_global_limits(GpencilModifierData *md,
- struct GpencilLineartLimitInfo *info)
+void BKE_gpencil_set_lineart_global_limits(GpencilModifierData *md,
+ struct GpencilLineartLimitInfo *info)
{
+ BLI_assert(md->type == eGpencilModifierType_Lineart);
LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)md;
lmd->level_start_override = info->min_level;
lmd->level_end_override = info->max_level;
lmd->edge_types_override = info->edge_types;
}
-bool BKE_gpencil_lineart_is_first_run(Object *ob, GpencilModifierData *md)
+bool BKE_gpencil_is_first_lineart_in_stack(Object *ob, GpencilModifierData *md)
{
if (md->type != eGpencilModifierType_Lineart) {
return false;
@@ -813,7 +814,7 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
GpencilLineartLimitInfo info = {0};
- BKE_gpencil_get_lineart_global_limits(ob, &info);
+ BKE_gpencil_get_lineart_modifier_limits(ob, &info);
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
@@ -825,7 +826,7 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
}
if (md->type == eGpencilModifierType_Lineart) {
- BKE_gpencil_assign_lineart_global_limits(md, &info);
+ BKE_gpencil_set_lineart_global_limits(md, &info);
}
/* Apply geometry modifiers (add new geometry). */
diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c
index 8e44b3254c0..268598ccc51 100644
--- a/source/blender/blenloader/intern/versioning_300.c
+++ b/source/blender/blenloader/intern/versioning_300.c
@@ -27,7 +27,6 @@
#include "DNA_brush_types.h"
#include "DNA_genfile.h"
-#include "DNA_gpencil_modifier_types.h"
#include "DNA_listBase.h"
#include "DNA_modifier_types.h"
#include "DNA_text_types.h"
@@ -260,18 +259,5 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain)
}
}
}
- if (!DNA_struct_elem_find(
- fd->filesdna, "LineartGpencilModifierData", "bool", "use_cached_result")) {
- LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
- if (ob->type == OB_GPENCIL) {
- LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
- if (md->type == eGpencilModifierType_Lineart) {
- LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)md;
- lmd->flags |= LRT_GPENCIL_USE_CACHE;
- }
- }
- }
- }
- }
}
}
diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 60422d6fcfb..e273a8b7d0d 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -264,11 +264,12 @@ 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");
uiLayoutSetPropSep(layout, true);
uiLayoutSetEnabled(layout, !is_baked);
- if (!BKE_gpencil_lineart_is_first_run(ob_ptr.data, ptr->data)) {
+ if (!BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data)) {
uiItemR(layout, ptr, "use_cached_result", 0, NULL, ICON_NONE);
}
@@ -292,9 +293,10 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
uiItemR(col, ptr, "use_intersection", 0, IFACE_("Intersections"), ICON_NONE);
uiItemR(col, ptr, "use_crease", 0, IFACE_("Crease"), ICON_NONE);
- uiLayout *sub = uiLayoutRow(col, true);
- uiLayoutSetActive(
- sub, RNA_boolean_get(ptr, "use_crease") && (!RNA_boolean_get(ptr, "use_cached_result")));
+ uiLayout *sub = uiLayoutRow(col, false);
+ uiLayoutSetActive(sub,
+ (RNA_boolean_get(ptr, "use_crease") && !use_cache) ||
+ BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data));
uiLayoutSetPropSep(sub, true);
uiItemR(sub, ptr, "crease_threshold", UI_ITEM_R_SLIDER, " ", ICON_NONE);
@@ -325,13 +327,16 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
static void options_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 use_cache = RNA_boolean_get(ptr, "use_cached_result");
uiLayoutSetPropSep(layout, true);
- uiLayoutSetEnabled(layout, !is_baked && !use_cache);
+ uiLayoutSetEnabled(
+ layout,
+ !is_baked && (!use_cache || BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data)));
uiItemR(layout, ptr, "use_remove_doubles", 0, NULL, ICON_NONE);
uiItemR(layout, ptr, "use_edge_overlap", 0, IFACE_("Overlapping Edges As Contour"), ICON_NONE);
@@ -418,7 +423,8 @@ static void transparency_panel_draw(const bContext *UNUSED(C), Panel *panel)
static void chaining_panel_draw(const bContext *UNUSED(C), Panel *panel)
{
- PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, NULL);
+ PointerRNA ob_ptr;
+ PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
uiLayout *layout = panel->layout;
@@ -426,7 +432,9 @@ static void chaining_panel_draw(const bContext *UNUSED(C), Panel *panel)
const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
uiLayoutSetPropSep(layout, true);
- uiLayoutSetEnabled(layout, !is_baked && !use_cache);
+ uiLayoutSetEnabled(
+ layout,
+ !is_baked && (!use_cache || BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data)));
uiLayout *col = uiLayoutColumnWithHeading(layout, true, IFACE_("Chain"));
uiItemR(col, ptr, "use_fuzzy_intersections", 0, NULL, ICON_NONE);
@@ -448,7 +456,9 @@ static void vgroup_panel_draw(const bContext *UNUSED(C), Panel *panel)
const bool use_cache = RNA_boolean_get(ptr, "use_cached_result");
uiLayoutSetPropSep(layout, true);
- uiLayoutSetEnabled(layout, !is_baked && !use_cache);
+ uiLayoutSetEnabled(
+ layout,
+ !is_baked && (!use_cache || BKE_gpencil_is_first_lineart_in_stack(ob_ptr.data, ptr->data)));
uiLayout *col = uiLayoutColumn(layout, true);
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
index 75c939d50aa..495c7d048f2 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
@@ -193,14 +193,14 @@ static bool lineart_gpencil_bake_single_target(LineartBakeJob *bj, Object *ob, i
}
GpencilLineartLimitInfo info = {0};
- BKE_gpencil_get_lineart_global_limits(ob, &info);
+ BKE_gpencil_get_lineart_modifier_limits(ob, &info);
LineartCache *lc;
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
if (md->type != eGpencilModifierType_Lineart) {
continue;
}
- BKE_gpencil_assign_lineart_global_limits(md, &info);
+ BKE_gpencil_set_lineart_global_limits(md, &info);
if (bake_strokes(ob, bj->dg, &lc, md, frame)) {
touched = true;
}
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 675cd01ebb0..3bce28e7e3d 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -2933,8 +2933,9 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_cached_result", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_USE_CACHE);
RNA_def_propert
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list