Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2011-02-27 09:19:40 +0300
committerJoseph Eagar <joeedh@gmail.com>2011-02-27 09:19:40 +0300
commitf01261d040be27337db9f9996d648a279c89b7c4 (patch)
treec448230939b3c90d53ce8852dd00925d6052e3a4 /source/blender/modifiers/intern/MOD_displace.c
parentdcaeda5c4e3a0687251b8511de4f2e8b85ef75c0 (diff)
parent2198cfdb2deec8b2e85e242c74a032f43d0b26ca (diff)
merge with/from trunk at r35190
Diffstat (limited to 'source/blender/modifiers/intern/MOD_displace.c')
-rw-r--r--source/blender/modifiers/intern/MOD_displace.c51
1 files changed, 38 insertions, 13 deletions
diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c
index 6dbe3d3622c..6ae5c14d5ef 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -30,10 +30,17 @@
*
*/
+/** \file blender/modifiers/intern/MOD_displace.c
+ * \ingroup modifiers
+ */
+
+
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "BLI_math.h"
+#include "BLI_utildefines.h"
+
#include "BKE_cdderivedmesh.h"
#include "BKE_modifier.h"
@@ -75,16 +82,16 @@ static void copyData(ModifierData *md, ModifierData *target)
strncpy(tdmd->uvlayer_name, dmd->uvlayer_name, 32);
}
-static CustomDataMask requiredDataMask(Object *ob, ModifierData *md)
+static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
{
DisplaceModifierData *dmd = (DisplaceModifierData *)md;
CustomDataMask dataMask = 0;
/* ask for vertexgroups if we need them */
- if(dmd->defgrp_name[0]) dataMask |= (1 << CD_MDEFORMVERT);
+ if(dmd->defgrp_name[0]) dataMask |= CD_MASK_MDEFORMVERT;
/* ask for UV coordinates if we need them */
- if(dmd->texmapping == MOD_DISP_MAP_UV) dataMask |= (1 << CD_MTFACE);
+ if(dmd->texmapping == MOD_DISP_MAP_UV) dataMask |= CD_MASK_MTFACE;
return dataMask;
}
@@ -103,6 +110,12 @@ static int dependsOnTime(ModifierData *md)
}
}
+static int dependsOnNormals(ModifierData *md)
+{
+ DisplaceModifierData *dmd = (DisplaceModifierData *)md;
+ return (dmd->direction == MOD_DISP_DIR_NOR);
+}
+
static void foreachObjectLink(ModifierData *md, Object *ob,
ObjectWalkFunc walk, void *userData)
{
@@ -121,25 +134,32 @@ static void foreachIDLink(ModifierData *md, Object *ob,
foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
}
-static int isDisabled(ModifierData *md, int useRenderParams)
+static int isDisabled(ModifierData *md, int UNUSED(useRenderParams))
{
DisplaceModifierData *dmd = (DisplaceModifierData*) md;
return (!dmd->texture || dmd->strength == 0.0f);
}
-static void updateDepgraph(
- ModifierData *md, DagForest *forest, struct Scene *scene,
- Object *ob, DagNode *obNode)
+static void updateDepgraph(ModifierData *md, DagForest *forest,
+ struct Scene *UNUSED(scene),
+ Object *UNUSED(ob),
+ DagNode *obNode)
{
DisplaceModifierData *dmd = (DisplaceModifierData*) md;
- if(dmd->map_object) {
+ if(dmd->map_object && dmd->texmapping == MOD_DISP_MAP_OBJECT) {
DagNode *curNode = dag_get_node(forest, dmd->map_object);
dag_add_relation(forest, curNode, obNode,
DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
}
+
+
+ if(dmd->texmapping == MOD_DISP_MAP_GLOBAL)
+ dag_add_relation(forest, obNode, obNode,
+ DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Displace Modifier");
+
}
static void get_texture_coords(DisplaceModifierData *dmd, Object *ob,
@@ -302,11 +322,14 @@ static void displaceModifier_do(
MEM_freeN(tex_co);
}
-static void deformVerts(
- ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
+static void deformVerts(ModifierData *md, Object *ob,
+ DerivedMesh *derivedData,
+ float (*vertexCos)[3],
+ int numVerts,
+ int UNUSED(useRenderParams),
+ int UNUSED(isFinalCalc))
{
- DerivedMesh *dm= get_cddm(md->scene, ob, NULL, derivedData, vertexCos);
+ DerivedMesh *dm= get_cddm(ob, NULL, derivedData, vertexCos);
displaceModifier_do((DisplaceModifierData *)md, ob, dm,
vertexCos, numVerts);
@@ -319,7 +342,7 @@ static void deformVertsEM(
ModifierData *md, Object *ob, struct EditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
- DerivedMesh *dm= get_cddm(md->scene, ob, editData, derivedData, vertexCos);
+ DerivedMesh *dm= get_cddm(ob, editData, derivedData, vertexCos);
displaceModifier_do((DisplaceModifierData *)md, ob, dm,
vertexCos, numVerts);
@@ -339,6 +362,7 @@ ModifierTypeInfo modifierType_Displace = {
/* copyData */ copyData,
/* deformVerts */ deformVerts,
+ /* deformMatrices */ 0,
/* deformVertsEM */ deformVertsEM,
/* deformMatricesEM */ 0,
/* applyModifier */ 0,
@@ -349,6 +373,7 @@ ModifierTypeInfo modifierType_Displace = {
/* isDisabled */ isDisabled,
/* updateDepgraph */ updateDepgraph,
/* dependsOnTime */ dependsOnTime,
+ /* dependsOnNormals */ dependsOnNormals,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ foreachIDLink,
};