GPencil: add new filter by material to modifiers

This commit adds a new filter by material using the name and not only the index.

Reviewers: antoniov, pepeland

Differential Revision: https://developer.blender.org/D5544
This commit is contained in:
Matias Mendiola 2019-08-21 08:30:45 +02:00 committed by Antonio Vazquez
parent 8ffbe39834
commit 3d8f158697
Notes: blender-bot 2023-02-14 11:00:17 +01:00
Referenced by issue #68975, lack of active object after using selection tools blocks menus
18 changed files with 351 additions and 17 deletions

View File

@ -1706,11 +1706,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1738,11 +1747,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1762,11 +1780,19 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1797,11 +1823,18 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1835,11 +1868,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1862,11 +1904,18 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1934,11 +1983,18 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -1966,11 +2022,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -2018,11 +2083,18 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -2083,11 +2155,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -2109,11 +2190,18 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -2160,11 +2248,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
@ -2188,11 +2285,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')

View File

@ -74,9 +74,10 @@ void gpencil_modifier_type_init(GpencilModifierTypeInfo *types[])
#undef INIT_GP_TYPE
}
/* verify if valid layer and pass index */
/* verify if valid layer, material and pass index */
bool is_stroke_affected_by_modifier(Object *ob,
char *mlayername,
char *mmaterialname,
int mpassindex,
int gpl_passindex,
int minpoints,
@ -84,9 +85,11 @@ bool is_stroke_affected_by_modifier(Object *ob,
bGPDstroke *gps,
bool inv1,
bool inv2,
bool inv3)
bool inv3,
bool inv4)
{
MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1);
Material *ma = give_current_material(ob, gps->mat_nr + 1);
MaterialGPencilStyle *gp_style = ma->gp_style;
/* omit if filter by layer */
if (mlayername[0] != '\0') {
@ -101,6 +104,19 @@ bool is_stroke_affected_by_modifier(Object *ob,
}
}
}
/* omit if filter by material */
if (mmaterialname[0] != '\0') {
if (inv4 == false) {
if (!STREQ(mmaterialname, ma->id.name + 2)) {
return false;
}
}
else {
if (STREQ(mmaterialname, ma->id.name + 2)) {
return false;
}
}
}
/* verify layer pass */
if (gpl_passindex > 0) {
if (inv3 == false) {

View File

@ -34,6 +34,7 @@ struct bGPDstroke;
bool is_stroke_affected_by_modifier(struct Object *ob,
char *mlayername,
char *mmaterialname,
int mpassindex,
int gpl_passindex,
int minpoints,
@ -41,7 +42,8 @@ bool is_stroke_affected_by_modifier(struct Object *ob,
bGPDstroke *gps,
bool inv1,
bool inv2,
bool inv3);
bool inv3,
bool inv4);
float get_modifier_point_weight(struct MDeformVert *dvert, bool inverse, int def_nr);

View File

@ -171,6 +171,7 @@ static void generate_geometry(GpencilModifierData *md,
*/
if (is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -178,7 +179,8 @@ static void generate_geometry(GpencilModifierData *md,
gps,
mmd->flag & GP_ARRAY_INVERT_LAYER,
mmd->flag & GP_ARRAY_INVERT_PASS,
mmd->flag & GP_ARRAY_INVERT_LAYERPASS)) {
mmd->flag & GP_ARRAY_INVERT_LAYERPASS,
mmd->flag & GP_ARRAY_INVERT_MATERIAL)) {
valid_strokes[idx] = true;
num_valid++;
}

View File

@ -51,6 +51,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
ARRAY_SET_ITEMS(gpmd->hsv, 0.5f, 1.0f, 1.0f);
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->flag |= GP_COLOR_CREATE_COLORS;
gpmd->modify_color = GP_MODIFY_COLOR_BOTH;
}
@ -74,6 +75,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -81,7 +83,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_COLOR_INVERT_LAYER,
mmd->flag & GP_COLOR_INVERT_PASS,
mmd->flag & GP_COLOR_INVERT_LAYERPASS)) {
mmd->flag & GP_COLOR_INVERT_LAYERPASS,
mmd->flag & GP_COLOR_INVERT_MATERIAL)) {
return;
}

View File

@ -77,6 +77,7 @@ static void initData(GpencilModifierData *md)
HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->object = NULL;
gpmd->force = 0.5f;
@ -206,6 +207,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -213,7 +215,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_HOOK_INVERT_LAYER,
mmd->flag & GP_HOOK_INVERT_PASS,
mmd->flag & GP_HOOK_INVERT_LAYERPASS)) {
mmd->flag & GP_HOOK_INVERT_LAYERPASS,
mmd->flag & GP_HOOK_INVERT_MATERIAL)) {
return;
}

View File

@ -55,6 +55,7 @@ static void initData(GpencilModifierData *md)
LatticeGpencilModifierData *gpmd = (LatticeGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->object = NULL;
gpmd->cache_data = NULL;
@ -78,6 +79,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -85,7 +87,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_LATTICE_INVERT_LAYER,
mmd->flag & GP_LATTICE_INVERT_PASS,
mmd->flag & GP_LATTICE_INVERT_LAYERPASS)) {
mmd->flag & GP_LATTICE_INVERT_LAYERPASS,
mmd->flag & GP_LATTICE_INVERT_MATERIAL)) {
return;
}

View File

@ -57,6 +57,7 @@ static void initData(GpencilModifierData *md)
MirrorGpencilModifierData *gpmd = (MirrorGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->object = NULL;
gpmd->flag |= GP_MIRROR_AXIS_X;
}
@ -134,6 +135,7 @@ static void generateStrokes(GpencilModifierData *md,
for (i = 0, gps = gpf->strokes.first; i < tot_strokes; i++, gps = gps->next) {
if (is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -141,7 +143,8 @@ static void generateStrokes(GpencilModifierData *md,
gps,
mmd->flag & GP_MIRROR_INVERT_LAYER,
mmd->flag & GP_MIRROR_INVERT_PASS,
mmd->flag & GP_MIRROR_INVERT_LAYERPASS)) {
mmd->flag & GP_MIRROR_INVERT_LAYERPASS,
mmd->flag & GP_MIRROR_INVERT_MATERIAL)) {
gps_new = BKE_gpencil_stroke_duplicate(gps);
update_position(ob, mmd, gps_new, xi);
BLI_addtail(&gpf->strokes, gps_new);

View File

@ -55,6 +55,7 @@ static void initData(GpencilModifierData *md)
gpmd->flag |= GP_NOISE_USE_RANDOM;
gpmd->factor = 0.5f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->step = 1;
gpmd->seed = 0;
@ -92,6 +93,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -99,7 +101,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_NOISE_INVERT_LAYER,
mmd->flag & GP_NOISE_INVERT_PASS,
mmd->flag & GP_NOISE_INVERT_LAYERPASS)) {
mmd->flag & GP_NOISE_INVERT_LAYERPASS,
mmd->flag & GP_NOISE_INVERT_MATERIAL)) {
return;
}

View File

@ -48,6 +48,7 @@ static void initData(GpencilModifierData *md)
OffsetGpencilModifierData *gpmd = (OffsetGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
ARRAY_SET_ITEMS(gpmd->loc, 0.0f, 0.0f, 0.0f);
ARRAY_SET_ITEMS(gpmd->rot, 0.0f, 0.0f, 0.0f);
@ -75,6 +76,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -82,7 +84,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_OFFSET_INVERT_LAYER,
mmd->flag & GP_OFFSET_INVERT_PASS,
mmd->flag & GP_OFFSET_INVERT_LAYERPASS)) {
mmd->flag & GP_OFFSET_INVERT_LAYERPASS,
mmd->flag & GP_OFFSET_INVERT_MATERIAL)) {
return;
}

View File

@ -52,6 +52,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
gpmd->factor = 1.0f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->flag |= GP_OPACITY_CREATE_COLORS;
gpmd->modify_color = GP_MODIFY_COLOR_BOTH;
@ -75,6 +76,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -82,7 +84,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_OPACITY_INVERT_LAYER,
mmd->flag & GP_OPACITY_INVERT_PASS,
mmd->flag & GP_OPACITY_INVERT_LAYERPASS)) {
mmd->flag & GP_OPACITY_INVERT_LAYERPASS,
mmd->flag & GP_OPACITY_INVERT_MATERIAL)) {
return;
}

View File

@ -48,6 +48,7 @@ static void initData(GpencilModifierData *md)
gpmd->length = 0.1f;
gpmd->distance = 0.1f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -66,6 +67,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
mmd->mode == GP_SIMPLIFY_SAMPLE ? 3 : 4,
@ -73,7 +75,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_SIMPLIFY_INVERT_LAYER,
mmd->flag & GP_SIMPLIFY_INVERT_PASS,
mmd->flag & GP_SIMPLIFY_INVERT_LAYERPASS)) {
mmd->flag & GP_SIMPLIFY_INVERT_LAYERPASS,
mmd->flag & GP_SIMPLIFY_INVERT_MATERIAL)) {
return;
}

View File

@ -46,6 +46,7 @@ static void initData(GpencilModifierData *md)
gpmd->flag |= GP_SMOOTH_MOD_LOCATION;
gpmd->factor = 0.5f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->step = 1;
}
@ -68,6 +69,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
3,
@ -75,7 +77,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_SMOOTH_INVERT_LAYER,
mmd->flag & GP_SMOOTH_INVERT_PASS,
mmd->flag & GP_SMOOTH_INVERT_LAYERPASS)) {
mmd->flag & GP_SMOOTH_INVERT_LAYERPASS,
mmd->flag & GP_SMOOTH_INVERT_MATERIAL)) {
return;
}

View File

@ -47,6 +47,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
gpmd->level = 1;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -66,6 +67,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
3,
@ -73,7 +75,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_SUBDIV_INVERT_LAYER,
mmd->flag & GP_SUBDIV_INVERT_PASS,
mmd->flag & GP_SUBDIV_INVERT_LAYERPASS)) {
mmd->flag & GP_SUBDIV_INVERT_LAYERPASS,
mmd->flag & GP_SUBDIV_INVERT_MATERIAL)) {
return;
}

View File

@ -47,6 +47,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
gpmd->thickness = 2;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->vgname[0] = '\0';
gpmd->curve_thickness = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (gpmd->curve_thickness) {
@ -91,6 +92,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -98,7 +100,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_THICK_INVERT_LAYER,
mmd->flag & GP_THICK_INVERT_PASS,
mmd->flag & GP_THICK_INVERT_LAYERPASS)) {
mmd->flag & GP_THICK_INVERT_LAYERPASS,
mmd->flag & GP_THICK_INVERT_MATERIAL)) {
return;
}

View File

@ -50,6 +50,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
gpmd->factor = 0.5f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
ARRAY_SET_ITEMS(gpmd->rgb, 1.0f, 1.0f, 1.0f);
gpmd->flag |= GP_TINT_CREATE_COLORS;
gpmd->modify_color = GP_MODIFY_COLOR_BOTH;
@ -72,6 +73,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->pass_index,
mmd->layer_pass,
1,
@ -79,7 +81,8 @@ static void deformStroke(GpencilModifierData *md,
gps,
mmd->flag & GP_TINT_INVERT_LAYER,
mmd->flag & GP_TINT_INVERT_PASS,
mmd->flag & GP_TINT_INVERT_LAYERPASS)) {
mmd->flag & GP_TINT_INVERT_LAYERPASS,
mmd->flag & GP_TINT_INVERT_MATERIAL)) {
return;
}

View File

@ -80,6 +80,8 @@ typedef struct NoiseGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -108,12 +110,15 @@ typedef enum eNoiseGpencil_Flag {
GP_NOISE_INVERT_VGROUP = (1 << 8),
GP_NOISE_MOD_UV = (1 << 9),
GP_NOISE_INVERT_LAYERPASS = (1 << 10),
GP_NOISE_INVERT_MATERIAL = (1 << 11),
} eNoiseGpencil_Flag;
typedef struct SubdivGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -129,12 +134,15 @@ typedef enum eSubdivGpencil_Flag {
GP_SUBDIV_INVERT_LAYER = (1 << 1),
GP_SUBDIV_INVERT_PASS = (1 << 2),
GP_SUBDIV_INVERT_LAYERPASS = (1 << 3),
GP_SUBDIV_INVERT_MATERIAL = (1 << 4),
} eSubdivGpencil_Flag;
typedef struct ThickGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -155,6 +163,7 @@ typedef enum eThickGpencil_Flag {
GP_THICK_CUSTOM_CURVE = (1 << 3),
GP_THICK_NORMALIZE = (1 << 4),
GP_THICK_INVERT_LAYERPASS = (1 << 5),
GP_THICK_INVERT_MATERIAL = (1 << 6),
} eThickGpencil_Flag;
typedef struct TimeGpencilModifierData {
@ -197,6 +206,8 @@ typedef struct TintGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -218,12 +229,15 @@ typedef enum eTintGpencil_Flag {
GP_TINT_INVERT_LAYER = (1 << 1),
GP_TINT_INVERT_PASS = (1 << 2),
GP_TINT_INVERT_LAYERPASS = (1 << 3),
GP_TINT_INVERT_MATERIAL = (1 << 4),
} eTintGpencil_Flag;
typedef struct ColorGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -243,12 +257,15 @@ typedef enum eColorGpencil_Flag {
GP_COLOR_INVERT_LAYER = (1 << 1),
GP_COLOR_INVERT_PASS = (1 << 2),
GP_COLOR_INVERT_LAYERPASS = (1 << 3),
GP_COLOR_INVERT_MATERIAL = (1 << 4),
} eColorGpencil_Flag;
typedef struct OpacityGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -271,6 +288,7 @@ typedef enum eOpacityGpencil_Flag {
GP_OPACITY_INVERT_VGROUP = (1 << 2),
GP_OPACITY_CREATE_COLORS = (1 << 3),
GP_OPACITY_INVERT_LAYERPASS = (1 << 4),
GP_OPACITY_INVERT_MATERIAL = (1 << 5),
} eOpacityGpencil_Flag;
typedef struct ArrayGpencilModifierData {
@ -300,6 +318,8 @@ typedef struct ArrayGpencilModifierData {
int pass_index;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Material replace (0 keep default). */
int mat_rpl;
/** Custom index for passes. */
@ -313,6 +333,7 @@ typedef enum eArrayGpencil_Flag {
GP_ARRAY_INVERT_PASS = (1 << 3),
GP_ARRAY_KEEP_ONTOP = (1 << 4),
GP_ARRAY_INVERT_LAYERPASS = (1 << 5),
GP_ARRAY_INVERT_MATERIAL = (1 << 6),
} eArrayGpencil_Flag;
typedef struct BuildGpencilModifierData {
@ -322,6 +343,9 @@ typedef struct BuildGpencilModifierData {
char layername[64];
int pass_index;
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int layer_pass;
@ -392,6 +416,8 @@ typedef struct LatticeGpencilModifierData {
struct Object *object;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -410,6 +436,7 @@ typedef enum eLatticeGpencil_Flag {
GP_LATTICE_INVERT_PASS = (1 << 1),
GP_LATTICE_INVERT_VGROUP = (1 << 2),
GP_LATTICE_INVERT_LAYERPASS = (1 << 3),
GP_LATTICE_INVERT_MATERIAL = (1 << 4),
} eLatticeGpencil_Flag;
typedef struct MirrorGpencilModifierData {
@ -417,6 +444,8 @@ typedef struct MirrorGpencilModifierData {
struct Object *object;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -434,6 +463,7 @@ typedef enum eMirrorGpencil_Flag {
GP_MIRROR_AXIS_Y = (1 << 4),
GP_MIRROR_AXIS_Z = (1 << 5),
GP_MIRROR_INVERT_LAYERPASS = (1 << 6),
GP_MIRROR_INVERT_MATERIAL = (1 << 7),
} eMirrorGpencil_Flag;
typedef struct HookGpencilModifierData {
@ -444,6 +474,8 @@ typedef struct HookGpencilModifierData {
char subtarget[64];
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -472,6 +504,7 @@ typedef enum eHookGpencil_Flag {
GP_HOOK_INVERT_VGROUP = (1 << 2),
GP_HOOK_UNIFORM_SPACE = (1 << 3),
GP_HOOK_INVERT_LAYERPASS = (1 << 4),
GP_HOOK_INVERT_MATERIAL = (1 << 5),
} eHookGpencil_Flag;
typedef enum eHookGpencil_Falloff {
@ -490,6 +523,8 @@ typedef struct SimplifyGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -513,6 +548,7 @@ typedef enum eSimplifyGpencil_Flag {
GP_SIMPLIFY_INVERT_LAYER = (1 << 0),
GP_SIMPLIFY_INVERT_PASS = (1 << 1),
GP_SIMPLIFY_INVERT_LAYERPASS = (1 << 2),
GP_SIMPLIFY_INVERT_MATERIAL = (1 << 3),
} eSimplifyGpencil_Flag;
typedef enum eSimplifyGpencil_Mode {
@ -530,6 +566,8 @@ typedef struct OffsetGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -548,12 +586,15 @@ typedef enum eOffsetGpencil_Flag {
GP_OFFSET_INVERT_PASS = (1 << 1),
GP_OFFSET_INVERT_VGROUP = (1 << 2),
GP_OFFSET_INVERT_LAYERPASS = (1 << 3),
GP_OFFSET_INVERT_MATERIAL = (1 << 4),
} eOffsetGpencil_Flag;
typedef struct SmoothGpencilModifierData {
GpencilModifierData modifier;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -578,6 +619,7 @@ typedef enum eSmoothGpencil_Flag {
GP_SMOOTH_INVERT_VGROUP = (1 << 5),
GP_SMOOTH_MOD_UV = (1 << 6),
GP_SMOOTH_INVERT_LAYERPASS = (1 << 7),
GP_SMOOTH_INVERT_MATERIAL = (1 << 4),
} eSmoothGpencil_Flag;
typedef struct ArmatureGpencilModifierData {

View File

@ -360,6 +360,11 @@ static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -434,6 +439,11 @@ static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -471,6 +481,11 @@ static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -525,6 +540,11 @@ static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -562,6 +582,11 @@ static void rna_def_modifier_gpencilsubdiv(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "level");
RNA_def_property_range(prop, 0, 5);
@ -584,6 +609,11 @@ static void rna_def_modifier_gpencilsubdiv(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -640,6 +670,11 @@ static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "factor");
RNA_def_property_range(prop, 0, 100.0);
@ -658,6 +693,11 @@ static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -716,6 +756,11 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -739,6 +784,11 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -791,6 +841,11 @@ static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -808,6 +863,11 @@ static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -868,6 +928,11 @@ static void rna_def_modifier_gpenciltint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_float_sdna(prop, NULL, "rgb");
@ -897,6 +962,11 @@ static void rna_def_modifier_gpenciltint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1015,6 +1085,11 @@ static void rna_def_modifier_gpencilcolor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "hue", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 3);
@ -1052,6 +1127,11 @@ static void rna_def_modifier_gpencilcolor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1089,6 +1169,11 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -1117,6 +1202,11 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1154,6 +1244,11 @@ static void rna_def_modifier_gpencilinstance(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pass_index");
RNA_def_property_range(prop, 0, 100);
@ -1238,6 +1333,11 @@ static void rna_def_modifier_gpencilinstance(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_ARRAY_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1424,6 +1524,11 @@ static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -1441,6 +1546,11 @@ static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1493,6 +1603,11 @@ static void rna_def_modifier_gpencilmirror(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pass_index");
RNA_def_property_range(prop, 0, 100);
@ -1504,6 +1619,11 @@ static void rna_def_modifier_gpencilmirror(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
@ -1580,6 +1700,11 @@ static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Layer", "Layer name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "vgname");
RNA_def_property_ui_text(prop, "Vertex Group", "Vertex group name for modulating the deform");
@ -1597,6 +1722,11 @@ static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_MATERIAL);
RNA_def_property_ui_text(prop, "Inverse Materials", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");