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:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-09-21 16:30:55 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-09-21 16:31:44 +0300
commit5ee0200d439f5b5697541bb8e7d6ec945c86298e (patch)
treec30764439830190afd3d4e56135a1ad1536dfb0c /source/blender/blenkernel/intern/subdiv_ccg.c
parentcec4c77719905ccbfdc4c34f0f4925f120b56758 (diff)
Multires: Support masks propagation to higher levels
Diffstat (limited to 'source/blender/blenkernel/intern/subdiv_ccg.c')
-rw-r--r--source/blender/blenkernel/intern/subdiv_ccg.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/subdiv_ccg.c b/source/blender/blenkernel/intern/subdiv_ccg.c
index 5ec675494f5..c05bf8ad76d 100644
--- a/source/blender/blenkernel/intern/subdiv_ccg.c
+++ b/source/blender/blenkernel/intern/subdiv_ccg.c
@@ -215,7 +215,7 @@ static void subdiv_ccg_eval_grid_element(
data->mask_evaluator, ptex_face_index, u, v);
}
else {
- *mask_value_ptr = 0;
+ *mask_value_ptr = 0.0f;
}
}
}
@@ -933,6 +933,13 @@ static void average_grid_element(SubdivCCG *subdiv_ccg,
average_grid_element_value_v3(CCG_elem_no(key, grid_element_a),
CCG_elem_no(key, grid_element_b));
}
+ if (subdiv_ccg->has_mask) {
+ float mask =
+ (*CCG_elem_mask(key, grid_element_a) +
+ *CCG_elem_mask(key, grid_element_b)) * 0.5f;
+ *CCG_elem_mask(key, grid_element_a) = mask;
+ *CCG_elem_mask(key, grid_element_b) = mask;
+ }
}
static void copy_grid_element(SubdivCCG *subdiv_ccg,
@@ -944,6 +951,9 @@ static void copy_grid_element(SubdivCCG *subdiv_ccg,
if (subdiv_ccg->has_normal) {
copy_v3_v3(CCG_elem_no(key, destination), CCG_elem_no(key, source));
}
+ if (subdiv_ccg->has_mask) {
+ *CCG_elem_mask(key, destination) = *CCG_elem_mask(key, source);
+ }
}
static void subdiv_ccg_average_inner_face_grids(