diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-09-18 15:33:53 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-09-18 18:56:22 +0300 |
commit | acf1c027ceccf97c7d4dd7a8febb5a6b328dfa41 (patch) | |
tree | b2641e6461f8465c4fd37f3531cb4e9a0ed56586 /source/blender/blenkernel/intern/subdiv_ccg.c | |
parent | 2409a9f0af42b999aed5ecb3118767551d8a04e0 (diff) |
Subdiv: Cleanup, split function into smaller ones
Diffstat (limited to 'source/blender/blenkernel/intern/subdiv_ccg.c')
-rw-r--r-- | source/blender/blenkernel/intern/subdiv_ccg.c | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/source/blender/blenkernel/intern/subdiv_ccg.c b/source/blender/blenkernel/intern/subdiv_ccg.c index d346d4d6f8d..843e68108c3 100644 --- a/source/blender/blenkernel/intern/subdiv_ccg.c +++ b/source/blender/blenkernel/intern/subdiv_ccg.c @@ -169,11 +169,11 @@ typedef struct CCGEvalGridsData { SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator; } CCGEvalGridsData; -static void subdiv_ccg_eval_grid_element(CCGEvalGridsData *data, - const int ptex_face_index, - const float u, - const float v, - unsigned char *element) +static void subdiv_ccg_eval_grid_element_limit(CCGEvalGridsData *data, + const int ptex_face_index, + const float u, + const float v, + unsigned char *element) { Subdiv *subdiv = data->subdiv; SubdivCCG *subdiv_ccg = data->subdiv_ccg; @@ -191,18 +191,37 @@ static void subdiv_ccg_eval_grid_element(CCGEvalGridsData *data, else { BKE_subdiv_eval_limit_point(subdiv, ptex_face_index, u, v, (float *)element); } - if (subdiv_ccg->has_mask) { - float *mask_value_ptr = (float *)(element + subdiv_ccg->mask_offset); - if (data->mask_evaluator != NULL) { - *mask_value_ptr = data->mask_evaluator->eval_mask( - data->mask_evaluator, ptex_face_index, u, v); - } - else { - *mask_value_ptr = 0.0f; - } +} + +static void subdiv_ccg_eval_grid_element_mask(CCGEvalGridsData *data, + const int ptex_face_index, + const float u, + const float v, + unsigned char *element) +{ + SubdivCCG *subdiv_ccg = data->subdiv_ccg; + if (!subdiv_ccg->has_mask) { + return; + } + float *mask_value_ptr = (float *)(element + subdiv_ccg->mask_offset); + if (data->mask_evaluator != NULL) { + *mask_value_ptr = data->mask_evaluator->eval_mask(data->mask_evaluator, ptex_face_index, u, v); + } + else { + *mask_value_ptr = 0.0f; } } +static void subdiv_ccg_eval_grid_element(CCGEvalGridsData *data, + const int ptex_face_index, + const float u, + const float v, + unsigned char *element) +{ + subdiv_ccg_eval_grid_element_limit(data, ptex_face_index, u, v, element); + subdiv_ccg_eval_grid_element_mask(data, ptex_face_index, u, v, element); +} + static void subdiv_ccg_eval_regular_grid(CCGEvalGridsData *data, const int face_index) { SubdivCCG *subdiv_ccg = data->subdiv_ccg; |