Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/modifiers/intern/MOD_multires.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (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.c279
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,
};