[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56472] trunk/blender/source/blender: Fix #35174: dynamic paint displacement missing in render.
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu May 2 16:42:06 CEST 2013
Revision: 56472
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56472
Author: blendix
Date: 2013-05-02 14:42:05 +0000 (Thu, 02 May 2013)
Log Message:
-----------
Fix #35174: dynamic paint displacement missing in render.
A previous bugfix disabled the dynamic paint modifier for orco texture
coordinate evaluation of the modifier stack. However the MOD_APPLY_USECACHE
flag is not a good way to check if the modifier is evaluated for orcos.
Instead I've added a MOD_APPLY_ORCO flag. Also removed a bunch of
applyModifierEM callbacks, none of them served a purpose except for the
subsurf modifier.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_modifier.h
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
trunk/blender/source/blender/blenkernel/intern/displist.c
trunk/blender/source/blender/modifiers/intern/MOD_array.c
trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
trunk/blender/source/blender/modifiers/intern/MOD_dynamicpaint.c
trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c
trunk/blender/source/blender/modifiers/intern/MOD_mirror.c
trunk/blender/source/blender/modifiers/intern/MOD_ocean.c
trunk/blender/source/blender/modifiers/intern/MOD_particleinstance.c
trunk/blender/source/blender/modifiers/intern/MOD_screw.c
trunk/blender/source/blender/modifiers/intern/MOD_skin.c
trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c
trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c
trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c
trunk/blender/source/blender/modifiers/intern/MOD_uvwarp.c
trunk/blender/source/blender/modifiers/intern/MOD_weightvgedit.c
trunk/blender/source/blender/modifiers/intern/MOD_weightvgmix.c
trunk/blender/source/blender/modifiers/intern/MOD_weightvgproximity.c
Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h 2013-05-02 14:42:05 UTC (rev 56472)
@@ -111,7 +111,9 @@
typedef enum ModifierApplyFlag {
MOD_APPLY_RENDER = 1 << 0, /* Render time. */
- MOD_APPLY_USECACHE = 1 << 1, /* Final result. Is not set for temporary calculations like orco dms. */
+ MOD_APPLY_USECACHE = 1 << 1, /* Result of evaluation will be cached, so modifier might
+ * want to cache data for quick updates (used by subsurf) */
+ MOD_APPLY_ORCO = 1 << 2 /* Modifier evaluated for undeformed texture coordinates */
} ModifierApplyFlag;
@@ -200,7 +202,8 @@
*/
struct DerivedMesh *(*applyModifierEM)(struct ModifierData *md, struct Object *ob,
struct BMEditMesh *editData,
- struct DerivedMesh *derivedData);
+ struct DerivedMesh *derivedData,
+ ModifierApplyFlag flag);
/********************* Optional functions *********************/
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -1692,7 +1692,7 @@
DM_set_only_copy(orcodm, nextmask | CD_MASK_ORIGINDEX |
(mti->requiredDataMask ?
mti->requiredDataMask(ob, md) : 0));
- ndm = mti->applyModifier(md, ob, orcodm, app_flags & ~MOD_APPLY_USECACHE);
+ ndm = mti->applyModifier(md, ob, orcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
if (ndm) {
/* if the modifier returned a new dm, release the old one */
@@ -1708,7 +1708,7 @@
nextmask &= ~CD_MASK_CLOTH_ORCO;
DM_set_only_copy(clothorcodm, nextmask | CD_MASK_ORIGINDEX);
- ndm = mti->applyModifier(md, ob, clothorcodm, app_flags & ~MOD_APPLY_USECACHE);
+ ndm = mti->applyModifier(md, ob, clothorcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
if (ndm) {
/* if the modifier returned a new dm, release the old one */
@@ -2031,9 +2031,9 @@
DM_set_only_copy(orcodm, mask | CD_MASK_ORIGINDEX);
if (mti->applyModifierEM)
- ndm = mti->applyModifierEM(md, ob, em, orcodm);
+ ndm = mti->applyModifierEM(md, ob, em, orcodm, MOD_APPLY_ORCO);
else
- ndm = mti->applyModifier(md, ob, orcodm, 0);
+ ndm = mti->applyModifier(md, ob, orcodm, MOD_APPLY_ORCO);
if (ndm) {
/* if the modifier returned a new dm, release the old one */
@@ -2055,9 +2055,9 @@
}
if (mti->applyModifierEM)
- ndm = mti->applyModifierEM(md, ob, em, dm);
+ ndm = mti->applyModifierEM(md, ob, em, dm, MOD_APPLY_USECACHE);
else
- ndm = mti->applyModifier(md, ob, dm, 0);
+ ndm = mti->applyModifier(md, ob, dm, MOD_APPLY_USECACHE);
if (ndm) {
if (dm && dm != ndm)
Modified: trunk/blender/source/blender/blenkernel/intern/displist.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/displist.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/blenkernel/intern/displist.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -1132,10 +1132,12 @@
int required_mode;
int editmode = (!forRender && (cu->editnurb || cu->editfont));
DerivedMesh *ndm, *orcodm = NULL;
- const ModifierApplyFlag app_flag = renderResolution ? MOD_APPLY_RENDER : 0;
+ ModifierApplyFlag app_flag = MOD_APPLY_ORCO;
- if (renderResolution)
+ if (renderResolution) {
+ app_flag |= MOD_APPLY_RENDER;
required_mode = eModifierMode_Render;
+ }
else
required_mode = eModifierMode_Realtime;
Modified: trunk/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_array.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_array.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -597,14 +597,7 @@
return result;
}
-static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *dm)
-{
- return applyModifier(md, ob, dm, MOD_APPLY_USECACHE);
-}
-
ModifierTypeInfo modifierType_Array = {
/* name */ "Array",
/* structName */ "ArrayModifierData",
@@ -622,7 +615,7 @@
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
- /* applyModifierEM */ applyModifierEM,
+ /* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ NULL,
/* freeData */ NULL,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_bevel.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_bevel.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -215,14 +215,7 @@
#endif
-static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *derivedData)
-{
- return applyModifier(md, ob, derivedData, MOD_APPLY_USECACHE);
-}
-
ModifierTypeInfo modifierType_Bevel = {
/* name */ "Bevel",
/* structName */ "BevelModifierData",
@@ -238,7 +231,7 @@
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
- /* applyModifierEM */ applyModifierEM,
+ /* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ requiredDataMask,
/* freeData */ NULL,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_dynamicpaint.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_dynamicpaint.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_dynamicpaint.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -110,7 +110,7 @@
DynamicPaintModifierData *pmd = (DynamicPaintModifierData *) md;
/* dont apply dynamic paint on orco dm stack */
- if (flag & MOD_APPLY_USECACHE) {
+ if (!(flag & MOD_APPLY_ORCO)) {
return dynamicPaint_Modifier_do(pmd, md->scene, ob, dm);
}
return dm;
Modified: trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -141,14 +141,7 @@
return result;
}
-static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *derivedData)
-{
- return applyModifier(md, ob, derivedData, MOD_APPLY_USECACHE);
-}
-
ModifierTypeInfo modifierType_EdgeSplit = {
/* name */ "EdgeSplit",
/* structName */ "EdgeSplitModifierData",
@@ -166,7 +159,7 @@
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
- /* applyModifierEM */ applyModifierEM,
+ /* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ NULL,
/* freeData */ NULL,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_mirror.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_mirror.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_mirror.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -335,14 +335,7 @@
return result;
}
-static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *derivedData)
-{
- return applyModifier(md, ob, derivedData, MOD_APPLY_USECACHE);
-}
-
ModifierTypeInfo modifierType_Mirror = {
/* name */ "Mirror",
/* structName */ "MirrorModifierData",
@@ -360,7 +353,7 @@
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
- /* applyModifierEM */ applyModifierEM,
+ /* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ NULL,
/* freeData */ NULL,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_ocean.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_ocean.c 2013-05-02 14:03:56 UTC (rev 56471)
+++ trunk/blender/source/blender/modifiers/intern/MOD_ocean.c 2013-05-02 14:42:05 UTC (rev 56472)
@@ -548,15 +548,7 @@
return result;
}
-static DerivedMesh *applyModifierEM(ModifierData *md, Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *derivedData)
-{
- return applyModifier(md, ob, derivedData, MOD_APPLY_USECACHE);
-}
-
-
ModifierTypeInfo modifierType_Ocean = {
/* name */ "Ocean",
/* structName */ "OceanModifierData",
@@ -572,7 +564,7 @@
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
- /* applyModifierEM */ applyModifierEM,
+ /* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ requiredDataMask,
/* freeData */ freeData,
Modified: trunk/blender/source/blender/modifiers/intern/MOD_particleinstance.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_particleinstance.c 2013-05-02 14:03:56 UTC (rev 56471)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list