[Bf-blender-cvs] [57805ad] cycles-ptex-19: DerivedMesh updates
Nicholas Bishop
noreply at git.blender.org
Wed Jan 28 19:40:49 CET 2015
Commit: 57805ad1c47fb761efdb4556f211a736277d3ec0
Author: Nicholas Bishop
Date: Tue Jan 27 19:46:51 2015 +0100
Branches: cycles-ptex-19
https://developer.blender.org/rB57805ad1c47fb761efdb4556f211a736277d3ec0
DerivedMesh updates
===================================================================
M source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index e347f60..003e096 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -59,6 +59,7 @@
#include "BKE_object.h"
#include "BKE_object_deform.h"
#include "BKE_paint.h"
+#include "BKE_ptex.h"
#include "BKE_texture.h"
#include "BKE_multires.h"
#include "BKE_bvhutils.h"
@@ -1506,6 +1507,8 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
const bool do_loop_normals = (me->flag & ME_AUTOSMOOTH) != 0;
const float loop_normals_split_angle = me->smoothresh;
+ const bool ptex_requested = (dataMask & CD_MASK_TESSFACE_PTEX);
+
VirtualModifierData virtualModifierData;
ModifierApplyFlag app_flags = useRenderParams ? MOD_APPLY_RENDER : 0;
@@ -1525,6 +1528,10 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
firstmd = firstmd->next;
}
+ if (ptex_requested) {
+ dataMask |= CD_MASK_LOOP_INTERP;
+ }
+
md = firstmd;
modifiers_clearErrors(ob);
@@ -1722,6 +1729,10 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
dm = CDDM_from_mesh(me);
ASSERT_IS_VALID_DM(dm);
+ if (ptex_requested) {
+ BKE_ptex_derived_mesh_inject(dm);
+ }
+
if (build_shapekey_layers)
add_shapekey_layers(dm, me, ob);
@@ -1885,6 +1896,12 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
}
else {
finaldm = CDDM_from_mesh(me);
+
+ // TODO(nicholasbishop): de-duplicate!
+
+ if (ptex_requested) {
+ BKE_ptex_derived_mesh_inject(finaldm);
+ }
if (build_shapekey_layers) {
add_shapekey_layers(finaldm, me, ob);
@@ -1907,6 +1924,14 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
add_orco_dm(ob, NULL, *deform_r, NULL, CD_ORCO);
}
+ if (ptex_requested) {
+ DerivedMesh *tdm = BKE_ptex_derived_mesh_subdivide(finaldm);
+ if (finaldm != tdm) {
+ finaldm->release(finaldm);
+ finaldm = tdm;
+ }
+ }
+
if (do_loop_normals) {
/* Compute loop normals (note: will compute poly and vert normals as well, if needed!) */
DM_calc_loop_normals(finaldm, do_loop_normals, loop_normals_split_angle);
@@ -2278,7 +2303,7 @@ static void mesh_build_data(Scene *scene, Object *ob, CustomDataMask dataMask,
BKE_object_sculpt_modifiers_changed(ob);
// TODO:
- dataMask |= CD_MASK_TESSFACE_PTEX | CD_MASK_LOOP_PTEX_UV;
+ dataMask |= CD_MASK_TESSFACE_PTEX;
mesh_calc_modifiers(scene, ob, NULL, &ob->derivedDeform,
&ob->derivedFinal, 0, 1,
More information about the Bf-blender-cvs
mailing list