[Bf-blender-cvs] [b57d6e920e8] greasepencil-object: WIP: Basic structure of VFX Gaussian Blur
Antonio Vazquez
noreply at git.blender.org
Tue Aug 8 11:19:08 CEST 2017
Commit: b57d6e920e84e815e8fab854d4219aa8b882be2c
Author: Antonio Vazquez
Date: Sat Aug 5 17:52:45 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rBb57d6e920e84e815e8fab854d4219aa8b882be2c
WIP: Basic structure of VFX Gaussian Blur
This is the first step to implement a system for adding VFX modifiers that are applied to viewport and not to strokes
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/makesdna/DNA_modifier_types.h
M source/blender/makesrna/RNA_access.h
M source/blender/makesrna/intern/rna_modifier.c
M source/blender/modifiers/CMakeLists.txt
M source/blender/modifiers/MOD_modifiertypes.h
A source/blender/modifiers/intern/MOD_gpencilblur.c
M source/blender/modifiers/intern/MOD_util.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 9674221ad6f..11e1f78b1e0 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1782,6 +1782,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.separator()
layout.prop(md, "strength", slider=True)
+ def GP_BLUR(self, layout, ob, md):
+ split = layout.split()
+
+ col = split.column()
+ col.label(text="Factor:")
+ col.prop(md, "factor", text="")
+
classes = (
DATA_PT_modifiers,
)
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 09e12fde229..570e64ac1af 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -55,6 +55,8 @@ struct GpencilDupliModifierData;
struct GpencilOpacityModifierData;
struct GpencilLatticeModifierData;
+struct GpencilBlurModifierData;
+
/* ------------ Grease-Pencil API ------------------ */
void BKE_gpencil_free_point_weights(struct bGPDspoint *pt);
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index be020da5e22..6b6f2e3e25f 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -97,6 +97,7 @@ typedef enum ModifierType {
eModifierType_GpencilColor = 61,
eModifierType_GpencilLattice = 62,
eModifierType_GpencilSimplify = 63,
+ eModifierType_GpencilBlur = 64,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -1800,6 +1801,14 @@ typedef enum eGpencilSimplify_Flag {
GP_SIMPLIFY_INVERSE_PASS = (1 << 1),
} eGpencilSimplify_Flag;
+typedef struct GpencilBlurModifierData {
+ ModifierData modifier;
+ float resolution[2];
+ float radius[2];
+ int flag; /* flags */
+ char pad[4];
+} GpencilBlurModifierData;
+
#define MOD_MESHSEQ_READ_ALL \
(MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR)
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 13001ae8b0b..f5f40546109 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -622,6 +622,7 @@ extern StructRNA RNA_GpencilArrayModifier;
extern StructRNA RNA_GpencilDupliModifier;
extern StructRNA RNA_GpencilOpacityModifier;
extern StructRNA RNA_GpencilLatticeModifier;
+extern StructRNA RNA_GpencilBlurModifier;
extern StructRNA RNA_TexMapping;
extern StructRNA RNA_Text;
extern StructRNA RNA_TextBox;
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index bc1b21896d5..aa18c5ee050 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -131,6 +131,8 @@ EnumPropertyItem rna_enum_object_modifier_type_items[] = {
{eModifierType_GpencilTint, "GP_TINT", ICON_COLOR, "Tint", "Tint strokes with new color" },
{eModifierType_GpencilColor, "GP_COLOR", ICON_GROUP_VCOL, "Hue/Saturation", "Apply changes to color" },
{eModifierType_GpencilOpacity, "GP_OPACITY", ICON_MOD_MASK, "Opacity", "Opacity of the strokes" },
+ { 0, "", 0, N_("VFX"), "" },
+ {eModifierType_GpencilBlur, "GP_BLUR", ICON_MOD_ARRAY, "Blur", "Apply Gaussian Blur to object" },
{0, NULL, 0, NULL, NULL}
};
@@ -462,6 +464,8 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr)
return &RNA_GpencilOpacityModifier;
case eModifierType_GpencilLattice:
return &RNA_GpencilLatticeModifier;
+ case eModifierType_GpencilBlur:
+ return &RNA_GpencilBlurModifier;
/* Default */
case eModifierType_None:
case eModifierType_ShapeKey:
@@ -5392,6 +5396,25 @@ static void rna_def_modifier_gpencillattice(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_update");
}
+static void rna_def_modifier_gpencilblur(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "GpencilBlurModifier", "Modifier");
+ RNA_def_struct_ui_text(srna, "Blur Modifier", "Gaussian Blur modifier");
+ RNA_def_struct_sdna(srna, "GpencilBlurModifierData");
+ RNA_def_struct_ui_icon(srna, ICON_MAN_ROT);
+
+ //prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
+ prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_XYZ);
+ RNA_def_property_float_sdna(prop, NULL, "radius");
+ RNA_def_property_range(prop, 0, 100.0);
+ RNA_def_property_ui_range(prop, 0, 100.0, 1.0f, 3);
+ RNA_def_property_ui_text(prop, "Factor", "Factor of Blur");
+ RNA_def_property_update(prop, 0, "rna_Modifier_update");
+}
+
void RNA_def_modifier(BlenderRNA *brna)
{
StructRNA *srna;
@@ -5520,6 +5543,7 @@ void RNA_def_modifier(BlenderRNA *brna)
rna_def_modifier_gpencildupli(brna);
rna_def_modifier_gpencilopacity(brna);
rna_def_modifier_gpencillattice(brna);
+ rna_def_modifier_gpencilblur(brna);
}
#endif
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt
index 80548f52397..315c16c84d6 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -123,6 +123,7 @@ set(SRC
intern/MOD_gpencildupli.c
intern/MOD_gpencilopacity.c
intern/MOD_gpencillattice.c
+ intern/MOD_gpencilblur.c
)
if(WITH_ALEMBIC)
diff --git a/source/blender/modifiers/MOD_modifiertypes.h b/source/blender/modifiers/MOD_modifiertypes.h
index 75b639bc541..09610a239aa 100644
--- a/source/blender/modifiers/MOD_modifiertypes.h
+++ b/source/blender/modifiers/MOD_modifiertypes.h
@@ -98,6 +98,8 @@ extern ModifierTypeInfo modifierType_GpencilDupli;
extern ModifierTypeInfo modifierType_GpencilOpacity;
extern ModifierTypeInfo modifierType_GpencilLattice;
+extern ModifierTypeInfo modifierType_GpencilBlur;
+
/* MOD_util.c */
void modifier_type_init(ModifierTypeInfo *types[]);
diff --git a/source/blender/modifiers/intern/MOD_gpencilblur.c b/source/blender/modifiers/intern/MOD_gpencilblur.c
new file mode 100644
index 00000000000..7c620fd5a66
--- /dev/null
+++ b/source/blender/modifiers/intern/MOD_gpencilblur.c
@@ -0,0 +1,85 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2005 by the Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Antonio Vazquez
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ *
+ */
+
+/** \file blender/modifiers/intern/MOD_gpencilblur.c
+ * \ingroup modifiers
+ */
+
+#include <stdio.h>
+
+#include "DNA_scene_types.h"
+#include "DNA_object_types.h"
+#include "DNA_gpencil_types.h"
+
+#include "BLI_utildefines.h"
+#include "BKE_DerivedMesh.h"
+#include "BKE_gpencil.h"
+
+#include "MOD_modifiertypes.h"
+
+static void initData(ModifierData *md)
+{
+ GpencilBlurModifierData *gpmd = (GpencilBlurModifierData *)md;
+ ARRAY_SET_ITEMS(gpmd->radius, 1.0f, 1.0f);
+ ARRAY_SET_ITEMS(gpmd->resolution, 1024.0f, 1024.0f);
+
+ BKE_gpencil_batch_cache_alldirty();
+}
+
+static void copyData(ModifierData *md, ModifierData *target)
+{
+ GpencilBlurModifierData *smd = (GpencilBlurModifierData *)md;
+ GpencilBlurModifierData *tsmd = (GpencilBlurModifierData *)target;
+
+ modifier_copyData_generic(md, target);
+}
+
+ModifierTypeInfo modifierType_GpencilBlur = {
+ /* name */ "Gaussian Blur",
+ /* structName */ "GpencilBlurModifierData",
+ /* structSize */ sizeof(GpencilBlurModifierData),
+ /* type */ eModifierTypeType_Gpencil,
+ /* flags */ eModifierTypeFlag_GpencilMod | eModifierTypeFlag_SupportsEditmode
+ | eModifierTypeFlag_GpencilVFX | eModifierTypeFlag_Single,
+
+ /* copyData */ copyData,
+ /* deformVerts */ NULL,
+ /* deformMatrices */ NULL,
+ /* deformVertsEM */ NULL,
+ /* deformMatricesEM */ NULL,
+ /* applyModifier */ NULL,
+ /* applyModifierEM */ NULL,
+ /* initData */ initData,
+ /* requiredDataMask */ NULL,
+ /* freeData */ NULL,
+ /* isDisabled */ NULL,
+ /* updateDepsgraph */ NULL,
+ /* dependsOnTime */ NULL,
+ /* dependsOnNormals */ NULL,
+ /* foreachObjectLink */ NULL,
+ /* foreachIDLink */ NULL,
+ /* foreachTexLink */ NULL,
+};
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c
index 3b6e802356f..206cf42422b 100644
--- a/source/blender/modifiers/intern/MOD_util.c
+++ b/source/blender/modifiers/intern/MOD_util.c
@@ -299,5 +299,6 @@ void modifier_type_init(ModifierTypeInfo *types[])
INIT_TYPE(GpencilDupli);
INIT_TYPE(GpencilOpacity);
INIT_TYPE(GpencilLattice);
+ INIT_TYPE(GpencilBlur);
#undef INIT_TYPE
}
More information about the Bf-blender-cvs
mailing list