diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/modifiers/intern/MOD_multires.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/modifiers/intern/MOD_multires.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_multires.c | 279 |
1 files changed, 135 insertions, 144 deletions
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c index a8760d05834..6e5426bbf40 100644 --- a/source/blender/modifiers/intern/MOD_multires.c +++ b/source/blender/modifiers/intern/MOD_multires.c @@ -21,7 +21,6 @@ * \ingroup modifiers */ - #include <stddef.h> #include "MEM_guardedalloc.h" @@ -47,55 +46,54 @@ #include "MOD_modifiertypes.h" typedef struct MultiresRuntimeData { - /* Cached subdivision surface descriptor, with topology and settings. */ - struct Subdiv *subdiv; + /* Cached subdivision surface descriptor, with topology and settings. */ + struct Subdiv *subdiv; } MultiresRuntimeData; static void initData(ModifierData *md) { - MultiresModifierData *mmd = (MultiresModifierData *)md; - - mmd->lvl = 0; - mmd->sculptlvl = 0; - mmd->renderlvl = 0; - mmd->totlvl = 0; - mmd->uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS; - mmd->quality = 3; - mmd->flags |= eMultiresModifierFlag_UseCrease; + MultiresModifierData *mmd = (MultiresModifierData *)md; + + mmd->lvl = 0; + mmd->sculptlvl = 0; + mmd->renderlvl = 0; + mmd->totlvl = 0; + mmd->uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS; + mmd->quality = 3; + mmd->flags |= eMultiresModifierFlag_UseCrease; } static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag) { - modifier_copyData_generic(md_src, md_dst, flag); + modifier_copyData_generic(md_src, md_dst, flag); } static void freeRuntimeData(void *runtime_data_v) { - if (runtime_data_v == NULL) { - return; - } - MultiresRuntimeData *runtime_data = (MultiresRuntimeData *)runtime_data_v; - if (runtime_data->subdiv != NULL) { - BKE_subdiv_free(runtime_data->subdiv); - } - MEM_freeN(runtime_data); + if (runtime_data_v == NULL) { + return; + } + MultiresRuntimeData *runtime_data = (MultiresRuntimeData *)runtime_data_v; + if (runtime_data->subdiv != NULL) { + BKE_subdiv_free(runtime_data->subdiv); + } + MEM_freeN(runtime_data); } static void freeData(ModifierData *md) { - MultiresModifierData *mmd = (MultiresModifierData *) md; - freeRuntimeData(mmd->modifier.runtime); + MultiresModifierData *mmd = (MultiresModifierData *)md; + freeRuntimeData(mmd->modifier.runtime); } static MultiresRuntimeData *multires_ensure_runtime(MultiresModifierData *mmd) { - MultiresRuntimeData *runtime_data = - (MultiresRuntimeData *)mmd->modifier.runtime; - if (runtime_data == NULL) { - runtime_data = MEM_callocN(sizeof(*runtime_data), "subsurf runtime"); - mmd->modifier.runtime = runtime_data; - } - return runtime_data; + MultiresRuntimeData *runtime_data = (MultiresRuntimeData *)mmd->modifier.runtime; + if (runtime_data == NULL) { + runtime_data = MEM_callocN(sizeof(*runtime_data), "subsurf runtime"); + mmd->modifier.runtime = runtime_data; + } + return runtime_data; } /* Main goal of this function is to give usable subdivision surface descriptor @@ -104,12 +102,10 @@ static Subdiv *subdiv_descriptor_ensure(MultiresModifierData *mmd, const SubdivSettings *subdiv_settings, const Mesh *mesh) { - MultiresRuntimeData *runtime_data = - (MultiresRuntimeData *)mmd->modifier.runtime; - Subdiv *subdiv = BKE_subdiv_update_from_mesh( - runtime_data->subdiv, subdiv_settings, mesh); - runtime_data->subdiv = subdiv; - return subdiv; + MultiresRuntimeData *runtime_data = (MultiresRuntimeData *)mmd->modifier.runtime; + Subdiv *subdiv = BKE_subdiv_update_from_mesh(runtime_data->subdiv, subdiv_settings, mesh); + runtime_data->subdiv = subdiv; + return subdiv; } /* Subdivide into fully qualified mesh. */ @@ -119,20 +115,20 @@ static Mesh *multires_as_mesh(MultiresModifierData *mmd, Mesh *mesh, Subdiv *subdiv) { - Mesh *result = mesh; - const bool use_render_params = (ctx->flag & MOD_APPLY_RENDER); - const bool ignore_simplify = (ctx->flag & MOD_APPLY_IGNORE_SIMPLIFY); - const Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph); - Object *object = ctx->object; - SubdivToMeshSettings mesh_settings; - BKE_multires_subdiv_mesh_settings_init( - &mesh_settings, scene, object, mmd, use_render_params, ignore_simplify); - if (mesh_settings.resolution < 3) { - return result; - } - BKE_subdiv_displacement_attach_from_multires(subdiv, mesh, mmd); - result = BKE_subdiv_to_mesh(subdiv, &mesh_settings, mesh); - return result; + Mesh *result = mesh; + const bool use_render_params = (ctx->flag & MOD_APPLY_RENDER); + const bool ignore_simplify = (ctx->flag & MOD_APPLY_IGNORE_SIMPLIFY); + const Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph); + Object *object = ctx->object; + SubdivToMeshSettings mesh_settings; + BKE_multires_subdiv_mesh_settings_init( + &mesh_settings, scene, object, mmd, use_render_params, ignore_simplify); + if (mesh_settings.resolution < 3) { + return result; + } + BKE_subdiv_displacement_attach_from_multires(subdiv, mesh, mmd); + result = BKE_subdiv_to_mesh(subdiv, &mesh_settings, mesh); + return result; } /* Subdivide into CCG. */ @@ -142,17 +138,15 @@ static void multires_ccg_settings_init(SubdivToCCGSettings *settings, const ModifierEvalContext *ctx, Mesh *mesh) { - const bool has_mask = - CustomData_has_layer(&mesh->ldata, CD_GRID_PAINT_MASK); - const bool use_render_params = (ctx->flag & MOD_APPLY_RENDER); - const bool ignore_simplify = (ctx->flag & MOD_APPLY_IGNORE_SIMPLIFY); - const Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph); - Object *object = ctx->object; - const int level = multires_get_level( - scene, object, mmd, use_render_params, ignore_simplify); - settings->resolution = (1 << level) + 1; - settings->need_normal = true; - settings->need_mask = has_mask; + const bool has_mask = CustomData_has_layer(&mesh->ldata, CD_GRID_PAINT_MASK); + const bool use_render_params = (ctx->flag & MOD_APPLY_RENDER); + const bool ignore_simplify = (ctx->flag & MOD_APPLY_IGNORE_SIMPLIFY); + const Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph); + Object *object = ctx->object; + const int level = multires_get_level(scene, object, mmd, use_render_params, ignore_simplify); + settings->resolution = (1 << level) + 1; + settings->need_normal = true; + settings->need_mask = has_mask; } static Mesh *multires_as_ccg(MultiresModifierData *mmd, @@ -160,93 +154,90 @@ static Mesh *multires_as_ccg(MultiresModifierData *mmd, Mesh *mesh, Subdiv *subdiv) { - Mesh *result = mesh; - SubdivToCCGSettings ccg_settings; - multires_ccg_settings_init(&ccg_settings, mmd, ctx, mesh); - if (ccg_settings.resolution < 3) { - return result; - } - BKE_subdiv_displacement_attach_from_multires(subdiv, mesh, mmd); - result = BKE_subdiv_to_ccg_mesh(subdiv, &ccg_settings, mesh); - return result; + Mesh *result = mesh; + SubdivToCCGSettings ccg_settings; + multires_ccg_settings_init(&ccg_settings, mmd, ctx, mesh); + if (ccg_settings.resolution < 3) { + return result; + } + BKE_subdiv_displacement_attach_from_multires(subdiv, mesh, mmd); + result = BKE_subdiv_to_ccg_mesh(subdiv, &ccg_settings, mesh); + return result; } -static Mesh *applyModifier(ModifierData *md, - const ModifierEvalContext *ctx, - Mesh *mesh) +static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh) { - Mesh *result = mesh; - MultiresModifierData *mmd = (MultiresModifierData *)md; - SubdivSettings subdiv_settings; - BKE_multires_subdiv_settings_init(&subdiv_settings, mmd); - if (subdiv_settings.level == 0) { - return result; - } - BKE_subdiv_settings_validate_for_mesh(&subdiv_settings, mesh); - MultiresRuntimeData *runtime_data = multires_ensure_runtime(mmd); - Subdiv *subdiv = subdiv_descriptor_ensure(mmd, &subdiv_settings, mesh); - if (subdiv == NULL) { - /* Happens on bad topology, ut also on empty input mesh. */ - return result; - } - /* NOTE: Orco needs final coordinates on CPU side, which are expected to be - * accessible via MVert. For this reason we do not evaluate multires to - * grids when orco is requested. */ - const bool for_orco = (ctx->flag & MOD_APPLY_ORCO) != 0; - if ((ctx->object->mode & OB_MODE_SCULPT) && !for_orco) { - /* NOTE: CCG takes ownership over Subdiv. */ - result = multires_as_ccg(mmd, ctx, mesh, subdiv); - result->runtime.subdiv_ccg_tot_level = mmd->totlvl; - /* TODO(sergey): Usually it is sculpt stroke's update variants which - * takes care of this, but is possible that we need this before the - * stroke: i.e. when exiting blender right after stroke is done. - * Annoying and not so much black-boxed as far as sculpting goes, and - * surely there is a better way of solving this. */ - if (ctx->object->sculpt != NULL) { - ctx->object->sculpt->subdiv_ccg = result->runtime.subdiv_ccg; - } - /* NOTE: CCG becomes an owner of Subdiv descriptor, so can not share - * this pointer. Not sure if it's needed, but might have a second look - * on the ownership model here. */ - runtime_data->subdiv = NULL; - // BKE_subdiv_stats_print(&subdiv->stats); - } - else { - result = multires_as_mesh(mmd, ctx, mesh, subdiv); - // BKE_subdiv_stats_print(&subdiv->stats); - if (subdiv != runtime_data->subdiv) { - BKE_subdiv_free(subdiv); - } - } - return result; + Mesh *result = mesh; + MultiresModifierData *mmd = (MultiresModifierData *)md; + SubdivSettings subdiv_settings; + BKE_multires_subdiv_settings_init(&subdiv_settings, mmd); + if (subdiv_settings.level == 0) { + return result; + } + BKE_subdiv_settings_validate_for_mesh(&subdiv_settings, mesh); + MultiresRuntimeData *runtime_data = multires_ensure_runtime(mmd); + Subdiv *subdiv = subdiv_descriptor_ensure(mmd, &subdiv_settings, mesh); + if (subdiv == NULL) { + /* Happens on bad topology, ut also on empty input mesh. */ + return result; + } + /* NOTE: Orco needs final coordinates on CPU side, which are expected to be + * accessible via MVert. For this reason we do not evaluate multires to + * grids when orco is requested. */ + const bool for_orco = (ctx->flag & MOD_APPLY_ORCO) != 0; + if ((ctx->object->mode & OB_MODE_SCULPT) && !for_orco) { + /* NOTE: CCG takes ownership over Subdiv. */ + result = multires_as_ccg(mmd, ctx, mesh, subdiv); + result->runtime.subdiv_ccg_tot_level = mmd->totlvl; + /* TODO(sergey): Usually it is sculpt stroke's update variants which + * takes care of this, but is possible that we need this before the + * stroke: i.e. when exiting blender right after stroke is done. + * Annoying and not so much black-boxed as far as sculpting goes, and + * surely there is a better way of solving this. */ + if (ctx->object->sculpt != NULL) { + ctx->object->sculpt->subdiv_ccg = result->runtime.subdiv_ccg; + } + /* NOTE: CCG becomes an owner of Subdiv descriptor, so can not share + * this pointer. Not sure if it's needed, but might have a second look + * on the ownership model here. */ + runtime_data->subdiv = NULL; + // BKE_subdiv_stats_print(&subdiv->stats); + } + else { + result = multires_as_mesh(mmd, ctx, mesh, subdiv); + // BKE_subdiv_stats_print(&subdiv->stats); + if (subdiv != runtime_data->subdiv) { + BKE_subdiv_free(subdiv); + } + } + return result; } ModifierTypeInfo modifierType_Multires = { - /* name */ "Multires", - /* structName */ "MultiresModifierData", - /* structSize */ sizeof(MultiresModifierData), - /* type */ eModifierTypeType_Constructive, - /* flags */ eModifierTypeFlag_AcceptsMesh | - eModifierTypeFlag_SupportsMapping | - eModifierTypeFlag_RequiresOriginalData, - - /* copyData */ copyData, - - /* deformVerts */ NULL, - /* deformMatrices */ NULL, - /* deformVertsEM */ NULL, - /* deformMatricesEM */ NULL, - /* applyModifier */ applyModifier, - - /* initData */ initData, - /* requiredDataMask */ NULL, - /* freeData */ freeData, - /* isDisabled */ NULL, - /* updateDepsgraph */ NULL, - /* dependsOnTime */ NULL, - /* dependsOnNormals */ NULL, - /* foreachObjectLink */ NULL, - /* foreachIDLink */ NULL, - /* foreachTexLink */ NULL, - /* freeRuntimeData */ freeRuntimeData, + /* name */ "Multires", + /* structName */ "MultiresModifierData", + /* structSize */ sizeof(MultiresModifierData), + /* type */ eModifierTypeType_Constructive, + /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_SupportsMapping | + eModifierTypeFlag_RequiresOriginalData, + + /* copyData */ copyData, + + /* deformVerts */ NULL, + /* deformMatrices */ NULL, + /* deformVertsEM */ NULL, + /* deformMatricesEM */ NULL, + /* applyModifier */ applyModifier, + + /* initData */ initData, + /* requiredDataMask */ NULL, + /* freeData */ freeData, + /* isDisabled */ NULL, + /* updateDepsgraph */ NULL, + /* dependsOnTime */ NULL, + /* dependsOnNormals */ NULL, + /* foreachObjectLink */ NULL, + /* foreachIDLink */ NULL, + /* foreachTexLink */ NULL, + /* freeRuntimeData */ freeRuntimeData, }; |