diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-19 15:01:31 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-19 15:01:31 +0400 |
commit | 19885babaf8b6e8197a8a63ee239ed85c208bef9 (patch) | |
tree | ea3b576170207e7bbbbfaf650779cd3bb5920e11 /source/blender/modifiers/intern | |
parent | 78f393f0c3789221603cde786b66b04bcf164594 (diff) | |
parent | 27a8487070b37e6243608571b623e0c5fa279ced (diff) |
svn merge ^/trunk/blender -r49800:49900
Diffstat (limited to 'source/blender/modifiers/intern')
-rw-r--r-- | source/blender/modifiers/intern/MOD_boolean_util.c | 2 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_displace.c | 21 |
2 files changed, 14 insertions, 9 deletions
diff --git a/source/blender/modifiers/intern/MOD_boolean_util.c b/source/blender/modifiers/intern/MOD_boolean_util.c index 9ff35c227de..bded11ddfa7 100644 --- a/source/blender/modifiers/intern/MOD_boolean_util.c +++ b/source/blender/modifiers/intern/MOD_boolean_util.c @@ -632,7 +632,7 @@ int NewBooleanMesh(Scene *scene, Base *base, Base *base_select, int int_op_type) /* add materials to object */ for (a = 0; a < totmat; a++) - assign_material(ob_new, mat[a], a + 1); + assign_material(ob_new, mat[a], a + 1, BKE_MAT_ASSIGN_USERPREF); MEM_freeN(mat); diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index 01592d63bb2..21cbc2b766c 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -140,8 +140,7 @@ static void foreachTexLink(ModifierData *md, Object *ob, static int isDisabled(ModifierData *md, int UNUSED(useRenderParams)) { DisplaceModifierData *dmd = (DisplaceModifierData *) md; - - return (!dmd->texture || dmd->strength == 0.0f); + return ((!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) || dmd->strength == 0.0f); } static void updateDepgraph(ModifierData *md, DagForest *forest, @@ -176,8 +175,9 @@ static void displaceModifier_do( int defgrp_index; float (*tex_co)[3]; float weight = 1.0f; /* init value unused but some compilers may complain */ + const float delta_fixed = 1.0f - dmd->midlevel; /* when no texture is used, we fallback to white */ - if (!dmd->texture) return; + if (!dmd->texture && dmd->direction == MOD_DISP_DIR_RGB_XYZ) return; if (dmd->strength == 0.0f) return; mvert = CDDM_get_verts(dm); @@ -191,17 +191,22 @@ static void displaceModifier_do( for (i = 0; i < numVerts; i++) { TexResult texres; - float delta = 0, strength = dmd->strength; + float strength = dmd->strength; + float delta; if (dvert) { weight = defvert_find_weight(dvert + i, defgrp_index); if (weight == 0.0f) continue; } - texres.nor = NULL; - get_texture_value(dmd->texture, tex_co[i], &texres); - - delta = texres.tin - dmd->midlevel; + if (dmd->texture) { + texres.nor = NULL; + get_texture_value(dmd->texture, tex_co[i], &texres); + delta = texres.tin - dmd->midlevel; + } + else { + delta = delta_fixed; /* (1.0f - dmd->midlevel) */ /* never changes */ + } if (dvert) strength *= weight; |