GPencil: Replace material name with material pointer for Modifiers filter

Before, the material name was used to filter the effect of the stroke, but after the last changes in the ID code, now it's not working.

After talking with @severin, we agreed to replace the material name with a pointer. Also, this fix a design issue when the materials were linked.

Related to T76594

Differential Revision: https://developer.blender.org/D7681  with some minor changes
This commit is contained in:
Antonio Vazquez 2020-05-11 16:18:08 +02:00
parent 870e081bcd
commit d63956d0e5
21 changed files with 442 additions and 113 deletions

View File

@ -1855,7 +1855,6 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
# the mt.type enum is (ab)used for a lookup on function names
# ...to avoid lengthy if statements
# so each type must have a function here.
def gpencil_masking(self, layout, ob, md, use_vertex, use_curve=False):
gpd = ob.data
layout.separator()
@ -1884,7 +1883,15 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
split = col2.split(factor=0.6)
row = split.row(align=True)
row.prop_search(md, "material", gpd, "materials", text="", icon='SHADING_TEXTURE')
valid = md.material in (slot.material for slot in ob.material_slots) or md.material is None
if valid:
icon = 'SHADING_TEXTURE'
else:
icon = 'ERROR'
row.alert = not valid
row.prop_search(md, "material", gpd, "materials", text="", icon=icon)
row.prop(md, "invert_materials", text="", icon='ARROW_LEFTRIGHT')
row = split.row(align=True)

View File

@ -1750,6 +1750,144 @@ void do_versions_after_linking_280(Main *bmain, ReportList *UNUSED(reports))
}
}
if (!MAIN_VERSION_ATLEAST(bmain, 290, 0)) {
/* Patch old grease pencil modifiers material filter. */
LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
switch (md->type) {
case eGpencilModifierType_Array: {
ArrayGpencilModifierData *gpmd = (ArrayGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Color: {
ColorGpencilModifierData *gpmd = (ColorGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Hook: {
HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Lattice: {
LatticeGpencilModifierData *gpmd = (LatticeGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Mirror: {
MirrorGpencilModifierData *gpmd = (MirrorGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Multiply: {
MultiplyGpencilModifierData *gpmd = (MultiplyGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Noise: {
NoiseGpencilModifierData *gpmd = (NoiseGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Offset: {
OffsetGpencilModifierData *gpmd = (OffsetGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Opacity: {
OpacityGpencilModifierData *gpmd = (OpacityGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Simplify: {
SimplifyGpencilModifierData *gpmd = (SimplifyGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Smooth: {
SmoothGpencilModifierData *gpmd = (SmoothGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Subdiv: {
SubdivGpencilModifierData *gpmd = (SubdivGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Texture: {
TextureGpencilModifierData *gpmd = (TextureGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
case eGpencilModifierType_Thick: {
ThickGpencilModifierData *gpmd = (ThickGpencilModifierData *)md;
if (gpmd->materialname[0] != '\0') {
gpmd->material = BLI_findstring(
&bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
gpmd->materialname[0] = '\0';
}
break;
}
default:
break;
}
}
}
}
/**
* Versioning code until next subversion bump goes here.
*

View File

@ -79,7 +79,7 @@ void gpencil_modifier_type_init(GpencilModifierTypeInfo *types[])
/* verify if valid layer, material and pass index */
bool is_stroke_affected_by_modifier(Object *ob,
char *mlayername,
char *mmaterialname,
Material *material,
const int mpassindex,
const int gpl_passindex,
const int minpoints,
@ -106,15 +106,15 @@ bool is_stroke_affected_by_modifier(Object *ob,
}
}
}
/* omit if filter by material */
if (mmaterialname[0] != '\0') {
/* Omit if filter by material. */
if (material != NULL) {
if (inv4 == false) {
if (!STREQ(mmaterialname, ma->id.name + 2)) {
if (material != ma) {
return false;
}
}
else {
if (STREQ(mmaterialname, ma->id.name + 2)) {
if (material == ma) {
return false;
}
}

View File

@ -34,7 +34,7 @@ struct bGPDstroke;
bool is_stroke_affected_by_modifier(struct Object *ob,
char *mlayername,
char *mmaterialname,
struct Material *material,
const int mpassindex,
const int gpl_passindex,
const int minpoints,

View File

@ -77,6 +77,8 @@ static void initData(GpencilModifierData *md)
gpmd->object = NULL;
gpmd->flag |= GP_ARRAY_USE_RELATIVE;
gpmd->seed = 1;
gpmd->layername[0] = '\0';
gpmd->material = NULL;
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -163,7 +165,7 @@ static void generate_geometry(GpencilModifierData *md,
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
if (is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -320,6 +322,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
ArrayGpencilModifierData *mmd = (ArrayGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
GpencilModifierTypeInfo modifierType_Gpencil_Array = {
/* name */ "Array",
/* structName */ "ArrayGpencilModifierData",
@ -340,6 +351,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Array = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -37,8 +37,10 @@
#include "BKE_colortools.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -51,7 +53,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->material = NULL;
gpmd->modify_color = GP_MODIFY_COLOR_BOTH;
gpmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
@ -91,7 +93,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -178,6 +180,13 @@ static void freeData(GpencilModifierData *md)
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
ColorGpencilModifierData *mmd = (ColorGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Color = {
/* name */ "Hue/Saturation",
/* structName */ "ColorGpencilModifierData",
@ -198,6 +207,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Color = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -78,7 +78,7 @@ static void initData(GpencilModifierData *md)
HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->object = NULL;
gpmd->force = 0.5f;
@ -208,7 +208,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -338,6 +338,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
HookGpencilModifierData *mmd = (HookGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
GpencilModifierTypeInfo modifierType_Gpencil_Hook = {
/* name */ "Hook",
/* structName */ "HookGpencilModifierData",
@ -358,6 +367,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Hook = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -56,7 +56,7 @@ static void initData(GpencilModifierData *md)
LatticeGpencilModifierData *gpmd = (LatticeGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->object = NULL;
gpmd->cache_data = NULL;
@ -80,7 +80,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -200,6 +200,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
LatticeGpencilModifierData *mmd = (LatticeGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
GpencilModifierTypeInfo modifierType_Gpencil_Lattice = {
/* name */ "Lattice",
/* structName */ "LatticeGpencilModifierData",
@ -220,6 +229,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Lattice = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -57,7 +57,7 @@ static void initData(GpencilModifierData *md)
MirrorGpencilModifierData *gpmd = (MirrorGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->object = NULL;
gpmd->flag |= GP_MIRROR_AXIS_X;
}
@ -130,7 +130,7 @@ static void generate_geometry(GpencilModifierData *md, Object *ob, bGPDlayer *gp
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->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -213,6 +213,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
MirrorGpencilModifierData *mmd = (MirrorGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
GpencilModifierTypeInfo modifierType_Gpencil_Mirror = {
/* name */ "Mirror",
/* structName */ "MirrorGpencilModifierData",
@ -233,6 +242,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Mirror = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -71,6 +71,8 @@ static void initData(GpencilModifierData *md)
mmd->fading_center = 0.5f;
mmd->fading_thickness = 0.5f;
mmd->fading_opacity = 0.5f;
mmd->layername[0] = '\0';
mmd->material = NULL;
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -211,7 +213,7 @@ static void bakeModifier(Main *UNUSED(bmain),
for (gps = gpf->strokes.first; gps; gps = gps->next) {
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -252,7 +254,7 @@ static void generate_geometry(GpencilModifierData *md, Object *ob, bGPDlayer *gp
for (gps = gpf->strokes.first; gps; gps = gps->next) {
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -297,6 +299,13 @@ static void generateStrokes(GpencilModifierData *md, Depsgraph *depsgraph, Objec
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
MultiplyGpencilModifierData *mmd = (MultiplyGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Multiply = {
/* name */ "Multiple Strokes",
/* structName */ "MultiplyGpencilModifierData",
@ -317,6 +326,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Multiply = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -44,6 +44,8 @@
#include "BKE_gpencil.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "BKE_object.h"
#include "DEG_depsgraph.h"
@ -60,7 +62,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->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->step = 4;
gpmd->seed = 1;
@ -135,7 +137,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -259,6 +261,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
NoiseGpencilModifierData *mmd = (NoiseGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Noise = {
/* name */ "Noise",
/* structName */ "NoiseGpencilModifierData",
@ -279,6 +288,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Noise = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ dependsOnTime,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -38,6 +38,8 @@
#include "BKE_deform.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -49,7 +51,7 @@ static void initData(GpencilModifierData *md)
OffsetGpencilModifierData *gpmd = (OffsetGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
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);
@ -77,7 +79,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -129,6 +131,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
OffsetGpencilModifierData *mmd = (OffsetGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Offset = {
/* name */ "Offset",
/* structName */ "OffsetGpencilModifierData",
@ -149,6 +158,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Offset = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -38,8 +38,10 @@
#include "BKE_deform.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -53,7 +55,7 @@ static void initData(GpencilModifierData *md)
gpmd->factor = 1.0f;
gpmd->hardeness = 1.0f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->modify_color = GP_MODIFY_COLOR_BOTH;
gpmd->curve_intensity = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
@ -92,7 +94,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -189,6 +191,13 @@ static void freeData(GpencilModifierData *md)
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
OpacityGpencilModifierData *mmd = (OpacityGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Opacity = {
/* name */ "Opacity",
/* structName */ "OpacityGpencilModifierData",
@ -209,6 +218,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Opacity = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -34,6 +34,8 @@
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -49,7 +51,7 @@ static void initData(GpencilModifierData *md)
gpmd->length = 0.1f;
gpmd->distance = 0.1f;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -68,7 +70,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
mmd->mode == GP_SIMPLIFY_SAMPLE ? 3 : 4,
@ -123,6 +125,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
SimplifyGpencilModifierData *mmd = (SimplifyGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Simplify = {
/* name */ "Simplify",
/* structName */ "SimplifyGpencilModifierData",
@ -143,6 +152,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Simplify = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -35,6 +35,8 @@
#include "BKE_deform.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -48,7 +50,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->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->step = 1;
@ -88,7 +90,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
3,
@ -167,6 +169,13 @@ static void freeData(GpencilModifierData *md)
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
SmoothGpencilModifierData *mmd = (SmoothGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Smooth = {
/* name */ "Smooth",
/* structName */ "SmoothGpencilModifierData",
@ -187,6 +196,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Smooth = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -36,6 +36,8 @@
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -48,7 +50,7 @@ static void initData(GpencilModifierData *md)
gpmd->pass_index = 0;
gpmd->level = 1;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
}
static void copyData(const GpencilModifierData *md, GpencilModifierData *target)
@ -72,7 +74,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
minimum_vert,
@ -104,6 +106,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
SubdivGpencilModifierData *mmd = (SubdivGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Subdiv = {
/* name */ "Subdivide",
/* structName */ "SubdivGpencilModifierData",
@ -124,6 +133,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Subdiv = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -38,6 +38,8 @@
#include "BKE_gpencil.h"
#include "BKE_gpencil_geom.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -56,7 +58,7 @@ static void initData(GpencilModifierData *md)
gpmd->uv_scale = 1.0f;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
}
@ -78,7 +80,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -140,6 +142,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
TextureGpencilModifierData *mmd = (TextureGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Texture = {
/* name */ "Texture Mapping",
/* structName */ "TextureGpencilModifierData",
@ -160,6 +169,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Texture = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -37,6 +37,8 @@
#include "BKE_deform.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_lib_query.h"
#include "BKE_modifier.h"
#include "DEG_depsgraph.h"
@ -50,7 +52,7 @@ static void initData(GpencilModifierData *md)
gpmd->thickness_fac = 1.0f;
gpmd->thickness = 30;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->curve_thickness = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f);
if (gpmd->curve_thickness) {
@ -95,7 +97,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -159,6 +161,13 @@ static void bakeModifier(struct Main *UNUSED(bmain),
}
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
ThickGpencilModifierData *mmd = (ThickGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
}
GpencilModifierTypeInfo modifierType_Gpencil_Thick = {
/* name */ "Thickness",
/* structName */ "ThickGpencilModifierData",
@ -179,6 +188,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Thick = {
/* updateDepsgraph */ NULL,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ NULL,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -62,7 +62,7 @@ static void initData(GpencilModifierData *md)
TintGpencilModifierData *gpmd = (TintGpencilModifierData *)md;
gpmd->pass_index = 0;
gpmd->layername[0] = '\0';
gpmd->materialname[0] = '\0';
gpmd->material = NULL;
gpmd->vgname[0] = '\0';
gpmd->object = NULL;
gpmd->radius = 1.0f;
@ -130,7 +130,7 @@ static void deformStroke(GpencilModifierData *md,
if (!is_stroke_affected_by_modifier(ob,
mmd->layername,
mmd->materialname,
mmd->material,
mmd->pass_index,
mmd->layer_pass,
1,
@ -323,6 +323,15 @@ static void foreachObjectLink(GpencilModifierData *md,
walk(userData, ob, &mmd->object, IDWALK_CB_NOP);
}
static void foreachIDLink(GpencilModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
{
TintGpencilModifierData *mmd = (TintGpencilModifierData *)md;
walk(userData, ob, (ID **)&mmd->material, IDWALK_CB_USER);
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
GpencilModifierTypeInfo modifierType_Gpencil_Tint = {
/* name */ "Tint",
/* structName */ "TintGpencilModifierData",
@ -343,6 +352,6 @@ GpencilModifierTypeInfo modifierType_Gpencil_Tint = {
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachIDLink */ foreachIDLink,
/* foreachTexLink */ NULL,
};

View File

@ -79,10 +79,12 @@ typedef struct GpencilModifierData {
typedef struct NoiseGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -122,10 +124,12 @@ typedef enum eNoiseGpencil_Flag {
typedef struct SubdivGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -153,10 +157,12 @@ typedef enum eSubdivGpencil_Type {
typedef struct ThickGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -227,10 +233,12 @@ typedef enum eOpacityModesGpencil_Flag {
typedef struct ColorGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -257,10 +265,12 @@ typedef enum eColorGpencil_Flag {
typedef struct OpacityGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -292,6 +302,8 @@ typedef enum eOpacityGpencil_Flag {
typedef struct ArrayGpencilModifierData {
GpencilModifierData modifier;
struct Object *object;
/** Material for filtering. */
struct Material *material;
/** Number of elements in array. */
int count;
/** Several flags. */
@ -315,7 +327,7 @@ typedef struct ArrayGpencilModifierData {
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Material replace (0 keep default). */
int mat_rpl;
/** Custom index for passes. */
@ -334,13 +346,15 @@ typedef enum eArrayGpencil_Flag {
typedef struct BuildGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** If set, restrict modifier to operating on this layer. */
char layername[64];
int pass_index;
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int layer_pass;
@ -416,10 +430,12 @@ typedef enum eBuildGpencil_Flag {
typedef struct LatticeGpencilModifierData {
GpencilModifierData modifier;
struct Object *object;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -444,10 +460,12 @@ typedef enum eLatticeGpencil_Flag {
typedef struct MirrorGpencilModifierData {
GpencilModifierData modifier;
struct Object *object;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -472,12 +490,14 @@ typedef struct HookGpencilModifierData {
GpencilModifierData modifier;
struct Object *object;
/** Material for filtering. */
struct Material *material;
/** Optional name of bone target, MAX_ID_NAME-2. */
char subtarget[64];
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -523,10 +543,12 @@ typedef enum eHookGpencil_Falloff {
typedef struct SimplifyGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -566,10 +588,12 @@ typedef enum eSimplifyGpencil_Mode {
typedef struct OffsetGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -593,10 +617,12 @@ typedef enum eOffsetGpencil_Flag {
typedef struct SmoothGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -642,10 +668,12 @@ typedef struct ArmatureGpencilModifierData {
typedef struct MultiplyGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Custom index for passes. */
int pass_index;
/** Flags. */
@ -680,10 +708,12 @@ typedef struct TintGpencilModifierData {
GpencilModifierData modifier;
struct Object *object;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */
@ -723,10 +753,12 @@ typedef enum eTintGpencil_Flag {
typedef struct TextureGpencilModifierData {
GpencilModifierData modifier;
/** Material for filtering. */
struct Material *material;
/** Layer name. */
char layername[64];
/** Material name. */
char materialname[64];
char materialname[64] DNA_DEPRECATED;
/** Optional vertexgroup name, MAX_VGROUP_NAME. */
char vgname[64];
/** Custom index for passes. */

View File

@ -442,9 +442,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -571,9 +572,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -683,9 +685,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "level", PROP_INT, PROP_NONE);
@ -772,9 +775,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_FACTOR);
@ -860,9 +864,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -954,9 +959,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -1051,9 +1057,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -1256,9 +1263,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "hue", PROP_FLOAT, PROP_NONE);
@ -1349,9 +1357,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -1445,9 +1454,10 @@ static void rna_def_modifier_gpencilarray(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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
@ -1737,9 +1747,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -1816,9 +1827,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
@ -1913,9 +1925,10 @@ 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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "vertex_group", PROP_STRING, PROP_NONE);
@ -2069,9 +2082,10 @@ static void rna_def_modifier_gpencilmultiply(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");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "pass_index", PROP_INT, PROP_NONE);
@ -2206,9 +2220,10 @@ static void rna_def_modifier_gpenciltexture(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, "material", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "materialname");
RNA_def_property_ui_text(prop, "Material", "Material name");
prop = RNA_def_property(srna, "material", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY);
RNA_def_property_ui_text(prop, "Material", "Material used for filtering effect");
RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
prop = RNA_def_property(srna, "invert_materials", PROP_BOOLEAN, PROP_NONE);