From acf1c027ceccf97c7d4dd7a8febb5a6b328dfa41 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 18 Sep 2019 14:33:53 +0200 Subject: Subdiv: Cleanup, split function into smaller ones --- source/blender/blenkernel/intern/subdiv_ccg.c | 47 +++++++++++++++++++-------- 1 file changed, 33 insertions(+), 14 deletions(-) (limited to 'source/blender/blenkernel/intern/subdiv_ccg.c') 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; -- cgit v1.2.3