Subdiv: Cleanup, split function into smaller ones

This commit is contained in:
2019-09-18 14:33:53 +02:00
parent 2409a9f0af
commit acf1c027ce

View File

@@ -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,16 +191,35 @@ 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)