diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-09-21 16:30:55 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-09-21 16:31:44 +0300 |
commit | 5ee0200d439f5b5697541bb8e7d6ec945c86298e (patch) | |
tree | c30764439830190afd3d4e56135a1ad1536dfb0c /source/blender/blenkernel/intern/subdiv_ccg.c | |
parent | cec4c77719905ccbfdc4c34f0f4925f120b56758 (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.c | 12 |
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( |