GP: Add new Layer Pass Index filter to modifiers

Now the modifier can be filtered using the new layer index.

Also changed panels to put layers and passes filter always at the end of the panel.
This commit is contained in:
Antonio Vazquez 2018-10-24 16:46:14 +02:00
parent a211937892
commit 735d6cb8d8
20 changed files with 502 additions and 228 deletions

View File

@ -1638,21 +1638,6 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "full_stroke")
col.prop(md, "move_extreme")
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.label(text="Affect:")
row = layout.row(align=True)
@ -1661,36 +1646,57 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "use_edit_thickness", text="Thickness", icon='LINE_DATA', toggle=True)
row.prop(md, "use_edit_uv", text="UV", icon='MOD_UVPROJECT', toggle=True)
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_SMOOTH(self, layout, ob, md):
gpd = ob.data
row = layout.row(align=False)
row.prop(md, "factor")
row.prop(md, "step")
col = layout.column()
col.prop(md, "factor")
col.prop(md, "step")
split = layout.split()
col = split.column()
col.label(text="Layer:")
col.label(text="Affect:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "use_edit_position", text="Position", icon='MESH_DATA', toggle=True)
row.prop(md, "use_edit_strength", text="Strength", icon='COLOR', toggle=True)
row.prop(md, "use_edit_thickness", text="Thickness", icon='LINE_DATA', toggle=True)
row.prop(md, "use_edit_uv", text="UV", icon='MOD_UVPROJECT', toggle=True)
col = split.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.label(text="Affect:")
row = layout.row(align=True)
row.prop(md, "use_edit_position", text="Position", icon='MESH_DATA', toggle=True)
row.prop(md, "use_edit_strength", text="Strength", icon='COLOR', toggle=True)
row.prop(md, "use_edit_thickness", text="Thickness", icon='LINE_DATA', toggle=True)
row.prop(md, "use_edit_uv", text="UV", icon='MOD_UVPROJECT', toggle=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_SUBDIV(self, layout, ob, md):
gpd = ob.data
@ -1700,15 +1706,21 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row = col.row(align=True)
row.prop(md, "level")
row.prop(md, "simple", text="", icon='PARTICLE_POINT')
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_SIMPLIFY(self, layout, ob, md):
gpd = ob.data
@ -1728,14 +1740,20 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.enabled = not md.mode == 'FIXED'
row.prop(md, "factor")
col = split.column()
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_THICK(self, layout, ob, md):
gpd = ob.data
@ -1744,23 +1762,9 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
row = col.row(align=True)
row.prop(md, "thickness")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
col.prop(md, "normalize_thickness")
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
if not md.normalize_thickness:
split = layout.split()
col = split.column()
@ -1769,6 +1773,26 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
if md.use_custom_curve:
col.template_curve_mapping(md, "curve")
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_TINT(self, layout, ob, md):
gpd = ob.data
split = layout.split()
@ -1777,18 +1801,24 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "color")
col.prop(md, "factor")
col = split.column()
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_TIME(self, layout, ob, md):
gpd = ob.data
@ -1807,6 +1837,10 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.enabled = md.mode != 'FIX'
row.prop(md, "frame_scale")
row = layout.row()
row.enabled = md.mode != 'FIX'
row.prop(md, "use_keep_loop")
row = layout.row()
row.label(text="Layer:")
row = layout.row(align=True)
@ -1814,12 +1848,8 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row = layout.row()
row.enabled = md.mode != 'FIX'
row.prop(md, "use_keep_loop")
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_COLOR(self, layout, ob, md):
gpd = ob.data
@ -1831,18 +1861,24 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "saturation", text="S")
col.prop(md, "value", text="V")
col = split.column()
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_OPACITY(self, layout, ob, md):
gpd = ob.data
@ -1852,24 +1888,29 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.label(text="Opacity:")
col.prop(md, "factor")
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
row = layout.row()
row.prop(md, "create_materials")
row.prop(md, "modify_color")
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_INSTANCE(self, layout, ob, md):
gpd = ob.data
@ -1905,18 +1946,24 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "random_scale", text="", icon='TIME', toggle=True)
row.prop(md, "scale_factor", text="")
split = layout.split()
col = split.column()
col = layout.column()
col.prop(md, "replace_material", text="Material")
col.prop(md, "keep_on_top", text="Keep original stroke on top")
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
col.prop(md, "replace_material", text="Material")
col.prop(md, "keep_on_top", text="Keep original stroke on top")
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_BUILD(self, layout, ob, md):
gpd = ob.data
@ -1927,28 +1974,29 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "mode")
if md.mode == 'CONCURRENT':
col.prop(md, "concurrent_time_alignment")
else:
col.separator() # For spacing
col.separator()
col.separator()
col.separator()
col.prop(md, "transition")
sub = col.column(align=True)
sub.prop(md, "start_delay")
sub.prop(md, "length")
col = split.column(align=True)
col = layout.column(align=True)
col.prop(md, "use_restrict_frame_range")
sub = col.column(align=True)
sub.active = md.use_restrict_frame_range
sub.prop(md, "frame_start", text="Start")
sub.prop(md, "frame_end", text="End")
col.separator()
col = layout.column()
col.separator()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_LATTICE(self, layout, ob, md):
gpd = ob.data
@ -1958,23 +2006,27 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.label(text="Object:")
col.prop(md, "object", text="")
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
layout.prop(md, "strength", slider=True)
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
layout.separator()
layout.prop(md, "strength", slider=True)
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_MIRROR(self, layout, ob, md):
gpd = ob.data
@ -1984,22 +2036,24 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "y_axis")
row.prop(md, "z_axis")
# GPXX: Not implemented yet
# layout.separator()
# layout.prop(md, "clip")
layout.label(text="Layer:")
row = layout.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
layout.label(text="Object:")
layout.prop(md, "object", text="")
col = layout.column()
col.separator()
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_HOOK(self, layout, ob, md):
gpd = ob.data
split = layout.split()
@ -2011,23 +2065,7 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col.label(text="Bone:")
col.prop_search(md, "subtarget", md.object.data, "bones", text="")
col = split.column()
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
use_falloff = (md.falloff_type != 'NONE')
split = layout.split()
layout.separator()
@ -2047,30 +2085,53 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.prop(md, "use_falloff_uniform")
def GP_OFFSET(self, layout, ob, md):
gpd = ob.data
split = layout.split()
col = split.column()
col.prop(md, "location")
col.prop(md, "scale")
col = split.column()
col.prop(md, "rotation")
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_pass", text="", icon='ARROW_LEFTRIGHT')
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_OFFSET(self, layout, ob, md):
gpd = ob.data
col = layout.column()
col.prop(md, "location")
col.prop(md, "scale")
col.prop(md, "rotation")
col = layout.column()
col.separator()
col.label(text="Vertex Group:")
row = col.row(align=True)
row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
row.prop(md, "invert_vertex", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Material:")
row = col.row(align=True)
row.prop(md, "pass_index", text="Pass")
row.prop(md, "invert_material_pass", text="", icon='ARROW_LEFTRIGHT')
col.label(text="Layer:")
row = col.row(align=True)
row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
row.prop(md, "invert_layers", text="", icon='ARROW_LEFTRIGHT')
row = layout.row(align=True)
row.prop(md, "layer_pass", text="Pass")
row.prop(md, "invert_layer_pass", text="", icon='ARROW_LEFTRIGHT')
def GP_ARMATURE(self, layout, ob, md):
split = layout.split()

View File

@ -84,8 +84,8 @@ void gpencil_modifier_type_init(GpencilModifierTypeInfo *types[])
/* verify if valid layer and pass index */
bool is_stroke_affected_by_modifier(
Object *ob, char *mlayername, int mpassindex, int minpoints,
bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2)
Object *ob, char *mlayername, int mpassindex, int gpl_passindex, int minpoints,
bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2, bool inv3)
{
MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1);
@ -102,7 +102,20 @@ bool is_stroke_affected_by_modifier(
}
}
}
/* verify pass */
/* verify layer pass */
if (gpl_passindex > 0) {
if (inv3 == false) {
if (gpl->pass_index != gpl_passindex) {
return false;
}
}
else {
if (gpl->pass_index == gpl_passindex) {
return false;
}
}
}
/* verify material pass */
if (mpassindex > 0) {
if (inv2 == false) {
if (gp_style->index != mpassindex) {

View File

@ -42,8 +42,10 @@ struct Material;
struct GHash;
bool is_stroke_affected_by_modifier(
struct Object *ob, char *mlayername, int mpassindex, int minpoints,
bGPDlayer *gpl, bGPDstroke *gps, bool inv1, bool inv2);
struct Object *ob, char *mlayername, int mpassindex,
int gpl_passindex, int minpoints,
bGPDlayer *gpl, bGPDstroke *gps,
bool inv1, bool inv2, bool inv3);
float get_modifier_point_weight(struct MDeformVert *dvert, bool inverse, int def_nr);

View File

@ -435,6 +435,19 @@ static void generateStrokes(
}
}
}
/* verify layer pass */
if (mmd->layer_pass > 0) {
if ((mmd->flag & GP_BUILD_INVERT_LAYERPASS) == 0) {
if (gpl->pass_index != mmd->layer_pass) {
return false;
}
}
else {
if (gpl->pass_index == mmd->layer_pass) {
return false;
}
}
}
/* Early exit if outside of the frame range for this modifier
* (e.g. to have one forward, and one backwards modifier)

View File

@ -78,8 +78,9 @@ static void deformStroke(
float hsv[3], factor[3];
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_COLOR_INVERT_LAYER, mmd->flag & GP_COLOR_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_COLOR_INVERT_LAYER, mmd->flag & GP_COLOR_INVERT_PASS,
mmd->flag & GP_COLOR_INVERT_LAYERPASS))
{
return;
}

View File

@ -209,8 +209,9 @@ static void deformStroke(
struct GPHookData_cb tData;
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 3, gpl, gps,
mmd->flag & GP_HOOK_INVERT_LAYER, mmd->flag & GP_HOOK_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps,
mmd->flag & GP_HOOK_INVERT_LAYER, mmd->flag & GP_HOOK_INVERT_PASS,
mmd->flag & GP_HOOK_INVERT_LAYERPASS))
{
return;
}

View File

@ -114,8 +114,9 @@ static void generate_geometry(
* ATTENTION: The logic here is the inverse of what's used everywhere else!
*/
if (is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_INSTANCE_INVERT_LAYER, mmd->flag & GP_INSTANCE_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_INSTANCE_INVERT_LAYER, mmd->flag & GP_INSTANCE_INVERT_PASS,
mmd->flag & GP_INSTANCE_INVERT_LAYERPASS))
{
valid_strokes[idx] = true;
num_valid++;

View File

@ -82,8 +82,9 @@ static void deformStroke(
const int def_nr = defgroup_name_index(ob, mmd->vgname);
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 3, gpl, gps,
mmd->flag & GP_LATTICE_INVERT_LAYER, mmd->flag & GP_LATTICE_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps,
mmd->flag & GP_LATTICE_INVERT_LAYER, mmd->flag & GP_LATTICE_INVERT_PASS,
mmd->flag & GP_LATTICE_INVERT_LAYERPASS))
{
return;
}

View File

@ -124,8 +124,11 @@ static void generateStrokes(
for (i = 0, gps = gpf->strokes.first; i < tot_strokes; i++, gps = gps->next) {
if (is_stroke_affected_by_modifier(
ob, mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_MIRROR_INVERT_LAYER, mmd->flag & GP_MIRROR_INVERT_PASS))
ob, mmd->layername, mmd->pass_index, mmd->layer_pass,
1, gpl, gps,
mmd->flag & GP_MIRROR_INVERT_LAYER,
mmd->flag & GP_MIRROR_INVERT_PASS,
mmd->flag & GP_MIRROR_INVERT_LAYERPASS))
{
gps_new = BKE_gpencil_stroke_duplicate(gps);
update_position(ob, mmd, gps_new, xi);

View File

@ -117,8 +117,9 @@ static void deformStroke(
}
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 3, gpl, gps,
mmd->flag & GP_NOISE_INVERT_LAYER, mmd->flag & GP_NOISE_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps,
mmd->flag & GP_NOISE_INVERT_LAYER, mmd->flag & GP_NOISE_INVERT_PASS,
mmd->flag & GP_NOISE_INVERT_LAYERPASS))
{
return;
}

View File

@ -78,8 +78,9 @@ static void deformStroke(
float loc[3], rot[3], scale[3];
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_OFFSET_INVERT_LAYER, mmd->flag & GP_OFFSET_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_OFFSET_INVERT_LAYER, mmd->flag & GP_OFFSET_INVERT_PASS,
mmd->flag & GP_OFFSET_INVERT_LAYERPASS))
{
return;
}

View File

@ -79,8 +79,9 @@ static void deformStroke(
if (!is_stroke_affected_by_modifier(
ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_OPACITY_INVERT_LAYER, mmd->flag & GP_OPACITY_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_OPACITY_INVERT_LAYER, mmd->flag & GP_OPACITY_INVERT_PASS,
mmd->flag & GP_OPACITY_INVERT_LAYERPASS))
{
return;
}

View File

@ -67,8 +67,9 @@ static void deformStroke(
SimplifyGpencilModifierData *mmd = (SimplifyGpencilModifierData *)md;
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 4, gpl, gps,
mmd->flag & GP_SIMPLIFY_INVERT_LAYER, mmd->flag & GP_SIMPLIFY_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 4, gpl, gps,
mmd->flag & GP_SIMPLIFY_INVERT_LAYER, mmd->flag & GP_SIMPLIFY_INVERT_PASS,
mmd->flag & GP_SIMPLIFY_INVERT_LAYERPASS))
{
return;
}

View File

@ -70,8 +70,9 @@ static void deformStroke(
const int def_nr = defgroup_name_index(ob, mmd->vgname);
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 3, gpl, gps,
mmd->flag & GP_SMOOTH_INVERT_LAYER, mmd->flag & GP_SMOOTH_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps,
mmd->flag & GP_SMOOTH_INVERT_LAYER, mmd->flag & GP_SMOOTH_INVERT_PASS,
mmd->flag & GP_SMOOTH_INVERT_LAYERPASS))
{
return;
}

View File

@ -72,8 +72,9 @@ static void deformStroke(
if (!is_stroke_affected_by_modifier(
ob,
mmd->layername, mmd->pass_index, 3, gpl, gps,
mmd->flag & GP_SUBDIV_INVERT_LAYER, mmd->flag & GP_SUBDIV_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 3, gpl, gps,
mmd->flag & GP_SUBDIV_INVERT_LAYER, mmd->flag & GP_SUBDIV_INVERT_PASS,
mmd->flag & GP_SUBDIV_INVERT_LAYERPASS))
{
return;
}

View File

@ -95,8 +95,9 @@ static void deformStroke(
const int def_nr = defgroup_name_index(ob, mmd->vgname);
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_THICK_INVERT_LAYER, mmd->flag & GP_THICK_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_THICK_INVERT_LAYER, mmd->flag & GP_THICK_INVERT_PASS,
mmd->flag & GP_THICK_INVERT_LAYERPASS))
{
return;
}

View File

@ -72,7 +72,7 @@ static int remapTime(
const int sfra = scene->r.sfra;
const int efra = scene->r.efra;
const bool invgpl = mmd->flag & GP_TIME_INVERT_LAYER;
const bool invpass = mmd->flag & GP_TIME_INVERT_PASS;
const bool invpass = mmd->flag & GP_TIME_INVERT_LAYERPASS;
/* omit if filter by layer */
if (mmd->layername[0] != '\0') {
@ -88,14 +88,14 @@ static int remapTime(
}
}
/* verify pass */
if (mmd->pass_index > 0) {
if (mmd->layer_pass > 0) {
if (invpass == false) {
if (gpl->pass_index != mmd->pass_index) {
if (gpl->pass_index != mmd->layer_pass) {
return cfra;
}
}
else {
if (gpl->pass_index == mmd->pass_index) {
if (gpl->pass_index == mmd->layer_pass) {
return cfra;
}
}

View File

@ -76,8 +76,9 @@ static void deformStroke(
TintGpencilModifierData *mmd = (TintGpencilModifierData *)md;
if (!is_stroke_affected_by_modifier(ob,
mmd->layername, mmd->pass_index, 1, gpl, gps,
mmd->flag & GP_TINT_INVERT_LAYER, mmd->flag & GP_TINT_INVERT_PASS))
mmd->layername, mmd->pass_index, mmd->layer_pass, 1, gpl, gps,
mmd->flag & GP_TINT_INVERT_LAYER, mmd->flag & GP_TINT_INVERT_PASS,
mmd->flag & GP_TINT_INVERT_LAYERPASS))
{
return;
}

View File

@ -91,6 +91,8 @@ typedef struct NoiseGpencilModifierData {
int scene_frame; /* last scene frame used */
float vrand1, vrand2; /* random values */
struct RNG *rng;
int layer_pass; /* custom index for passes */
char pad_[4];
} NoiseGpencilModifierData;
typedef enum eNoiseGpencil_Flag {
@ -104,6 +106,7 @@ typedef enum eNoiseGpencil_Flag {
GP_NOISE_INVERT_PASS = (1 << 7),
GP_NOISE_INVERT_VGROUP = (1 << 8),
GP_NOISE_MOD_UV = (1 << 9),
GP_NOISE_INVERT_LAYERPASS = (1 << 10),
} eNoiseGpencil_Flag;
typedef struct SubdivGpencilModifierData {
@ -112,13 +115,14 @@ typedef struct SubdivGpencilModifierData {
int pass_index; /* custom index for passes */
int flag; /* flags */
int level; /* factor of subdivision */
char pad[4];
int layer_pass; /* custom index for passes */
} SubdivGpencilModifierData;
typedef enum eSubdivGpencil_Flag {
GP_SUBDIV_SIMPLE = (1 << 0),
GP_SUBDIV_INVERT_LAYER = (1 << 1),
GP_SUBDIV_INVERT_PASS = (1 << 2),
GP_SUBDIV_INVERT_LAYERPASS = (1 << 3),
} eSubdivGpencil_Flag;
typedef struct ThickGpencilModifierData {
@ -128,7 +132,7 @@ typedef struct ThickGpencilModifierData {
int pass_index; /* custom index for passes */
int flag; /* flags */
int thickness; /* Thickness change */
char pad[4];
int layer_pass; /* custom index for passes */
struct CurveMapping *curve_thickness;
} ThickGpencilModifierData;
@ -138,12 +142,13 @@ typedef enum eThickGpencil_Flag {
GP_THICK_INVERT_VGROUP = (1 << 2),
GP_THICK_CUSTOM_CURVE = (1 << 3),
GP_THICK_NORMALIZE = (1 << 4),
GP_THICK_INVERT_LAYERPASS = (1 << 5),
} eThickGpencil_Flag;
typedef struct TimeGpencilModifierData {
GpencilModifierData modifier;
char layername[64]; /* layer name */
int pass_index; /* custom index for passes */
int layer_pass; /* custom index for passes */
int flag; /* flags */
int offset;
float frame_scale; /* animation scale */
@ -152,9 +157,9 @@ typedef struct TimeGpencilModifierData {
} TimeGpencilModifierData;
typedef enum eTimeGpencil_Flag {
GP_TIME_INVERT_LAYER = (1 << 0),
GP_TIME_KEEP_LOOP = (1 << 1),
GP_TIME_INVERT_PASS = (1 << 2),
GP_TIME_INVERT_LAYER = (1 << 0),
GP_TIME_KEEP_LOOP = (1 << 1),
GP_TIME_INVERT_LAYERPASS = (1 << 2),
} eTimeGpencil_Flag;
typedef enum eTimeGpencil_Mode {
@ -177,14 +182,17 @@ typedef struct TintGpencilModifierData {
int flag; /* flags */
float rgb[3]; /* Tint color */
float factor; /* Mix factor */
char modify_color; /* modify stroke, fill or both */
char modify_color; /* modify stroke, fill or both */
char pad[7];
int layer_pass; /* custom index for passes */
char pad_[4];
} TintGpencilModifierData;
typedef enum eTintGpencil_Flag {
GP_TINT_CREATE_COLORS = (1 << 0),
GP_TINT_INVERT_LAYER = (1 << 1),
GP_TINT_INVERT_PASS = (1 << 2),
GP_TINT_INVERT_LAYERPASS = (1 << 3),
} eTintGpencil_Flag;
typedef struct ColorGpencilModifierData {
@ -193,14 +201,17 @@ typedef struct ColorGpencilModifierData {
int pass_index; /* custom index for passes */
int flag; /* flags */
float hsv[3]; /* hsv factors */
char modify_color; /* modify stroke, fill or both */
char modify_color; /* modify stroke, fill or both */
char pad[3];
int layer_pass; /* custom index for passes */
char pad_[4];
} ColorGpencilModifierData;
typedef enum eColorGpencil_Flag {
GP_COLOR_CREATE_COLORS = (1 << 0),
GP_COLOR_INVERT_LAYER = (1 << 1),
GP_COLOR_INVERT_PASS = (1 << 2),
GP_COLOR_INVERT_LAYERPASS = (1 << 3),
} eColorGpencil_Flag;
typedef struct OpacityGpencilModifierData {
@ -212,6 +223,8 @@ typedef struct OpacityGpencilModifierData {
float factor; /* Main Opacity factor */
char modify_color; /* modify stroke, fill or both */
char pad[3];
int layer_pass; /* custom index for passes */
char pad_[4];
} OpacityGpencilModifierData;
typedef enum eOpacityGpencil_Flag {
@ -219,6 +232,7 @@ typedef enum eOpacityGpencil_Flag {
GP_OPACITY_INVERT_PASS = (1 << 1),
GP_OPACITY_INVERT_VGROUP = (1 << 2),
GP_OPACITY_CREATE_COLORS = (1 << 3),
GP_OPACITY_INVERT_LAYERPASS = (1 << 4),
} eOpacityGpencil_Flag;
typedef struct InstanceGpencilModifierData {
@ -237,7 +251,7 @@ typedef struct InstanceGpencilModifierData {
int pass_index; /* custom index for passes */
char layername[64]; /* layer name */
int mat_rpl; /* material replace (0 keep default) */
char pad[4];
int layer_pass; /* custom index for passes */
} InstanceGpencilModifierData;
typedef enum eInstanceGpencil_Flag {
@ -246,6 +260,7 @@ typedef enum eInstanceGpencil_Flag {
GP_INSTANCE_INVERT_LAYER = (1 << 2),
GP_INSTANCE_INVERT_PASS = (1 << 3),
GP_INSTANCE_KEEP_ONTOP = (1 << 4),
GP_INSTANCE_INVERT_LAYERPASS = (1 << 5),
} eInstanceGpencil_Flag;
typedef struct BuildGpencilModifierData {
@ -254,7 +269,7 @@ typedef struct BuildGpencilModifierData {
char layername[64]; /* if set, restrict modifier to operating on this layer */
int pass_index;
int pad;
int layer_pass; /* custom index for passes */
float start_frame; /* If GP_BUILD_RESTRICT_TIME is set, the defines the frame range where GP frames are considered */
float end_frame;
@ -302,6 +317,7 @@ typedef enum eBuildGpencil_Flag {
/* Restrict modifier to only operating between the nominated frames */
GP_BUILD_RESTRICT_TIME = (1 << 2),
GP_BUILD_INVERT_LAYERPASS = (1 << 3),
} eBuildGpencil_Flag;
typedef struct LatticeGpencilModifierData {
@ -312,7 +328,7 @@ typedef struct LatticeGpencilModifierData {
int pass_index; /* custom index for passes */
int flag; /* flags */
float strength;
char pad[4];
int layer_pass; /* custom index for passes */
void *cache_data; /* runtime only (LatticeDeformData) */
} LatticeGpencilModifierData;
@ -320,6 +336,7 @@ typedef enum eLatticeGpencil_Flag {
GP_LATTICE_INVERT_LAYER = (1 << 0),
GP_LATTICE_INVERT_PASS = (1 << 1),
GP_LATTICE_INVERT_VGROUP = (1 << 2),
GP_LATTICE_INVERT_LAYERPASS = (1 << 3),
} eLatticeGpencil_Flag;
typedef struct MirrorGpencilModifierData {
@ -328,6 +345,8 @@ typedef struct MirrorGpencilModifierData {
char layername[64]; /* layer name */
int pass_index; /* custom index for passes */
int flag; /* flags */
int layer_pass; /* custom index for passes */
char pad_[4];
} MirrorGpencilModifierData;
typedef enum eMirrorGpencil_Flag {
@ -337,6 +356,7 @@ typedef enum eMirrorGpencil_Flag {
GP_MIRROR_AXIS_X = (1 << 3),
GP_MIRROR_AXIS_Y = (1 << 4),
GP_MIRROR_AXIS_Z = (1 << 5),
GP_MIRROR_INVERT_LAYERPASS = (1 << 6),
} eMirrorGpencil_Flag;
typedef struct HookGpencilModifierData {
@ -347,6 +367,8 @@ typedef struct HookGpencilModifierData {
char layername[64]; /* layer name */
char vgname[64]; /* optional vertexgroup name, MAX_VGROUP_NAME */
int pass_index; /* custom index for passes */
int layer_pass; /* custom index for passes */
char pad_[4];
int flag;
char falloff_type; /* use enums from WarpGpencilModifier (exact same functionality) */
@ -363,6 +385,7 @@ typedef enum eHookGpencil_Flag {
GP_HOOK_INVERT_PASS = (1 << 1),
GP_HOOK_INVERT_VGROUP = (1 << 2),
GP_HOOK_UNIFORM_SPACE = (1 << 3),
GP_HOOK_INVERT_LAYERPASS = (1 << 4),
} eHookGpencil_Flag;
typedef enum eHookGpencil_Falloff {
@ -385,11 +408,14 @@ typedef struct SimplifyGpencilModifierData {
float factor; /* factor of simplify */
short mode; /* type of simplify */
short step; /* every n vertex to keep */
int layer_pass; /* custom index for passes */
char pad_[4];
} SimplifyGpencilModifierData;
typedef enum eSimplifyGpencil_Flag {
GP_SIMPLIFY_INVERT_LAYER = (1 << 0),
GP_SIMPLIFY_INVERT_PASS = (1 << 1),
GP_SIMPLIFY_INVERT_LAYERPASS = (1 << 2),
} eSimplifyGpencil_Flag;
typedef enum eSimplifyGpencil_Mode {
@ -408,13 +434,14 @@ typedef struct OffsetGpencilModifierData {
float loc[3];
float rot[3];
float scale[3];
char pad[4];
int layer_pass; /* custom index for passes */
} OffsetGpencilModifierData;
typedef enum eOffsetGpencil_Flag {
GP_OFFSET_INVERT_LAYER = (1 << 0),
GP_OFFSET_INVERT_PASS = (1 << 1),
GP_OFFSET_INVERT_VGROUP = (1 << 2)
GP_OFFSET_INVERT_VGROUP = (1 << 2),
GP_OFFSET_INVERT_LAYERPASS = (1 << 3),
} eOffsetGpencil_Flag;
typedef struct SmoothGpencilModifierData {
@ -425,6 +452,8 @@ typedef struct SmoothGpencilModifierData {
int flag; /* several flags */
float factor; /* factor of noise */
int step; /* how many times apply smooth */
int layer_pass; /* custom index for passes */
char pad_[4];
} SmoothGpencilModifierData;
typedef enum eSmoothGpencil_Flag {
@ -435,6 +464,7 @@ typedef enum eSmoothGpencil_Flag {
GP_SMOOTH_INVERT_PASS = (1 << 4),
GP_SMOOTH_INVERT_VGROUP = (1 << 5),
GP_SMOOTH_MOD_UV = (1 << 6),
GP_SMOOTH_INVERT_LAYERPASS = (1 << 7),
} eSmoothGpencil_Flag;
typedef struct ArmatureGpencilModifierData {

View File

@ -361,7 +361,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -370,6 +370,17 @@ static void rna_def_modifier_gpencilnoise(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_VGROUP);
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_NOISE_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
@ -436,7 +447,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -445,6 +456,17 @@ static void rna_def_modifier_gpencilsmooth(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_VGROUP);
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SMOOTH_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilsubdiv(BlenderRNA *brna)
@ -484,10 +506,21 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SUBDIV_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilsimplify(BlenderRNA *brna)
@ -531,11 +564,22 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_SIMPLIFY_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
/* Mode */
prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, prop_gpencil_simplify_mode_items);
@ -587,7 +631,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -597,6 +641,17 @@ static void rna_def_modifier_gpencilthick(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "use_custom_curve", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_THICK_CUSTOM_CURVE);
RNA_def_property_ui_text(prop, "Custom Curve", "Use a custom curve to define thickness changes");
@ -645,7 +700,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -655,6 +710,17 @@ static void rna_def_modifier_gpenciloffset(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OFFSET_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "loc");
RNA_def_property_ui_text(prop, "Location", "Values for change location");
@ -723,10 +789,21 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TINT_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpenciltime(BlenderRNA *brna)
@ -750,19 +827,19 @@ static void rna_def_modifier_gpenciltime(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, "pass_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pass_index");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layers", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_INVERT_LAYER);
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_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_INVERT_PASS);
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_TIME_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -843,10 +920,21 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_COLOR_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
@ -897,7 +985,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -906,6 +994,17 @@ static void rna_def_modifier_gpencilopacity(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_VGROUP);
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_OPACITY_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
}
static void rna_def_modifier_gpencilinstance(BlenderRNA *brna)
@ -1000,11 +1099,22 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
prop = RNA_def_property(srna, "invert_material_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_INSTANCE_INVERT_PASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_INSTANCE_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "keep_on_top", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_INSTANCE_KEEP_ONTOP);
RNA_def_property_ui_text(prop, "Keep On Top",
@ -1121,19 +1231,16 @@ static void rna_def_modifier_gpencilbuild(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse Layers", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
/* Filters - Pass Index */
#if 0
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pass_index");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Pass index");
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_INVERT_PASS);
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_BUILD_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
#endif
}
static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
@ -1168,7 +1275,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -1178,6 +1285,17 @@ static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LATTICE_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Object", "Lattice object to deform with");
RNA_def_property_pointer_funcs(prop, NULL, "rna_LatticeGpencilModifier_object_set", NULL, "rna_Lattice_object_poll");
@ -1217,11 +1335,22 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_MIRROR_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
RNA_def_property_ui_text(prop, "Object", "Object used as center");
RNA_def_property_pointer_funcs(prop, NULL, "rna_MirrorGpencilModifier_object_set", NULL, NULL);
@ -1293,7 +1422,7 @@ 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_pass", PROP_BOOLEAN, PROP_NONE);
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");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
@ -1303,6 +1432,17 @@ static void rna_def_modifier_gpencilhook(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Inverse VertexGroup", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "layer_pass", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "layer_pass");
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Pass", "Layer pass index");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_layer_pass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_HOOK_INVERT_LAYERPASS);
RNA_def_property_ui_text(prop, "Inverse Pass", "Inverse filter");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "force");
RNA_def_property_range(prop, 0, 1);