From e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 17 Apr 2019 06:17:24 +0200 Subject: 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 --- source/blender/blenkernel/BKE_subdiv.h | 256 ++++++++++++++++----------------- 1 file changed, 126 insertions(+), 130 deletions(-) (limited to 'source/blender/blenkernel/BKE_subdiv.h') diff --git a/source/blender/blenkernel/BKE_subdiv.h b/source/blender/blenkernel/BKE_subdiv.h index f14a11005e7..781c036d222 100644 --- a/source/blender/blenkernel/BKE_subdiv.h +++ b/source/blender/blenkernel/BKE_subdiv.h @@ -46,96 +46,98 @@ typedef enum eSubdivVtxBoundaryInterpolation { } eSubdivVtxBoundaryInterpolation; typedef enum eSubdivFVarLinearInterpolation { - SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE, - SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY, - SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, - SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE, - SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES, - SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL, + SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE, + SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY, + SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS, + SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE, + SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES, + SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL, } eSubdivFVarLinearInterpolation; typedef struct SubdivSettings { - bool is_simple; - bool is_adaptive; - int level; - bool use_creases; - eSubdivVtxBoundaryInterpolation vtx_boundary_interpolation; - eSubdivFVarLinearInterpolation fvar_linear_interpolation; + bool is_simple; + bool is_adaptive; + int level; + bool use_creases; + eSubdivVtxBoundaryInterpolation vtx_boundary_interpolation; + eSubdivFVarLinearInterpolation fvar_linear_interpolation; } SubdivSettings; /* NOTE: Order of enumerators MUST match order of values in SubdivStats. */ typedef enum eSubdivStatsValue { - SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME = 0, - SUBDIV_STATS_SUBDIV_TO_MESH, - SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY, - SUBDIV_STATS_EVALUATOR_CREATE, - SUBDIV_STATS_EVALUATOR_REFINE, - SUBDIV_STATS_SUBDIV_TO_CCG, - SUBDIV_STATS_SUBDIV_TO_CCG_ELEMENTS, - SUBDIV_STATS_TOPOLOGY_COMPARE, - - NUM_SUBDIV_STATS_VALUES, + SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME = 0, + SUBDIV_STATS_SUBDIV_TO_MESH, + SUBDIV_STATS_SUBDIV_TO_MESH_GEOMETRY, + SUBDIV_STATS_EVALUATOR_CREATE, + SUBDIV_STATS_EVALUATOR_REFINE, + SUBDIV_STATS_SUBDIV_TO_CCG, + SUBDIV_STATS_SUBDIV_TO_CCG_ELEMENTS, + SUBDIV_STATS_TOPOLOGY_COMPARE, + + NUM_SUBDIV_STATS_VALUES, } eSubdivStatsValue; typedef struct SubdivStats { - union { - struct { - /* Time spend on creating topology refiner, which includes time - * spend on conversion from Blender data to OpenSubdiv data, and - * time spend on topology orientation on OpenSubdiv C-API side. */ - double topology_refiner_creation_time; - /* Total time spent in BKE_subdiv_to_mesh(). */ - double subdiv_to_mesh_time; - /* Geometry (MVert and co) creation time during SUBDIV_TYO_MESH. */ - double subdiv_to_mesh_geometry_time; - /* Time spent on evaluator creation from topology refiner. */ - double evaluator_creation_time; - /* Time spent on evaluator->refine(). */ - double evaluator_refine_time; - /* Total time spent on whole CCG creation. */ - double subdiv_to_ccg_time; - /* Time spent on CCG elements evaluation/initialization. */ - double subdiv_to_ccg_elements_time; - /* Time spent on CCG elements evaluation/initialization. */ - double topology_compare_time; - }; - double values_[NUM_SUBDIV_STATS_VALUES]; - }; - - /* Per-value timestamp on when corresponding BKE_subdiv_stats_begin() was - * called. */ - double begin_timestamp_[NUM_SUBDIV_STATS_VALUES]; + union { + struct { + /* Time spend on creating topology refiner, which includes time + * spend on conversion from Blender data to OpenSubdiv data, and + * time spend on topology orientation on OpenSubdiv C-API side. */ + double topology_refiner_creation_time; + /* Total time spent in BKE_subdiv_to_mesh(). */ + double subdiv_to_mesh_time; + /* Geometry (MVert and co) creation time during SUBDIV_TYO_MESH. */ + double subdiv_to_mesh_geometry_time; + /* Time spent on evaluator creation from topology refiner. */ + double evaluator_creation_time; + /* Time spent on evaluator->refine(). */ + double evaluator_refine_time; + /* Total time spent on whole CCG creation. */ + double subdiv_to_ccg_time; + /* Time spent on CCG elements evaluation/initialization. */ + double subdiv_to_ccg_elements_time; + /* Time spent on CCG elements evaluation/initialization. */ + double topology_compare_time; + }; + double values_[NUM_SUBDIV_STATS_VALUES]; + }; + + /* Per-value timestamp on when corresponding BKE_subdiv_stats_begin() was + * called. */ + double begin_timestamp_[NUM_SUBDIV_STATS_VALUES]; } SubdivStats; /* Functor which evaluates dispalcement at a given (u, v) of given ptex face. */ typedef struct SubdivDisplacement { - /* Initialize displacement evaluator. - * - * Is called right before evaluation is actually needed. This allows to do - * some lazy initialization, like allocate evaluator from a main thread but - * then do actual evaluation from background job. */ - void (*initialize)(struct SubdivDisplacement *displacement); - - /* Return displacement which is to be added to the original coordinate. - * - * NOTE: This function is supposed to return "continuous" displacement for - * each pf PTex faces created for special (non-quad) polygon. This means, - * if displacement is stored on per-corner manner (like MDisps for multires) - * this is up the displacement implementation to average boundaries of the - * displacement grids if needed. - * - * Averaging of displacement for vertices created for over coarse vertices - * and edges is done by subdiv code. */ - void (*eval_displacement)(struct SubdivDisplacement *displacement, - const int ptex_face_index, - const float u, const float v, - const float dPdu[3], const float dPdv[3], - float r_D[3]); - - /* Free the data, not the evaluator itself. */ - void (*free)(struct SubdivDisplacement *displacement); - - void *user_data; + /* Initialize displacement evaluator. + * + * Is called right before evaluation is actually needed. This allows to do + * some lazy initialization, like allocate evaluator from a main thread but + * then do actual evaluation from background job. */ + void (*initialize)(struct SubdivDisplacement *displacement); + + /* Return displacement which is to be added to the original coordinate. + * + * NOTE: This function is supposed to return "continuous" displacement for + * each pf PTex faces created for special (non-quad) polygon. This means, + * if displacement is stored on per-corner manner (like MDisps for multires) + * this is up the displacement implementation to average boundaries of the + * displacement grids if needed. + * + * Averaging of displacement for vertices created for over coarse vertices + * and edges is done by subdiv code. */ + void (*eval_displacement)(struct SubdivDisplacement *displacement, + const int ptex_face_index, + const float u, + const float v, + const float dPdu[3], + const float dPdv[3], + float r_D[3]); + + /* Free the data, not the evaluator itself. */ + void (*free)(struct SubdivDisplacement *displacement); + + void *user_data; } SubdivDisplacement; /* This structure contains everything needed to construct subdivided surface. @@ -144,34 +146,33 @@ typedef struct SubdivDisplacement { * buffers, GPU subdivision mesh, CPU side fully qualified mesh) from the same * Subdiv structure. */ typedef struct Subdiv { - /* Settings this subdivision surface is created for. - * - * It is read-only after assignment in BKE_subdiv_new_from_FOO(). */ - SubdivSettings settings; - /* Topology refiner includes all the glue logic to feed Blender side - * topology to OpenSubdiv. It can be shared by both evaluator and GL mesh - * drawer. */ - struct OpenSubdiv_TopologyRefiner *topology_refiner; - /* CPU side evaluator. */ - struct OpenSubdiv_Evaluator *evaluator; - /* Optional displacement evaluator. */ - struct SubdivDisplacement *displacement_evaluator; - /* Statistics for debugging. */ - SubdivStats stats; - - /* Cached values, are not supposed to be accessed directly. */ - struct { - /* Indexed by base face index, element indicates total number of ptex - * faces created for preceding base faces. */ - int *face_ptex_offset; - } cache_; + /* Settings this subdivision surface is created for. + * + * It is read-only after assignment in BKE_subdiv_new_from_FOO(). */ + SubdivSettings settings; + /* Topology refiner includes all the glue logic to feed Blender side + * topology to OpenSubdiv. It can be shared by both evaluator and GL mesh + * drawer. */ + struct OpenSubdiv_TopologyRefiner *topology_refiner; + /* CPU side evaluator. */ + struct OpenSubdiv_Evaluator *evaluator; + /* Optional displacement evaluator. */ + struct SubdivDisplacement *displacement_evaluator; + /* Statistics for debugging. */ + SubdivStats stats; + + /* Cached values, are not supposed to be accessed directly. */ + struct { + /* Indexed by base face index, element indicates total number of ptex + * faces created for preceding base faces. */ + int *face_ptex_offset; + } cache_; } Subdiv; /* ========================== CONVERSION HELPERS ============================ */ /* NOTE: uv_smooth is eSubsurfUVSmooth. */ -eSubdivFVarLinearInterpolation -BKE_subdiv_fvar_interpolation_from_uv_smooth(int uv_smooth); +eSubdivFVarLinearInterpolation BKE_subdiv_fvar_interpolation_from_uv_smooth(int uv_smooth); /* =============================== STATISTICS =============================== */ @@ -186,11 +187,9 @@ void BKE_subdiv_stats_print(const SubdivStats *stats); /* ================================ SETTINGS ================================ */ -void BKE_subdiv_settings_validate_for_mesh(SubdivSettings *settings, - const struct Mesh *mesh); +void BKE_subdiv_settings_validate_for_mesh(SubdivSettings *settings, const struct Mesh *mesh); -bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, - const SubdivSettings *settings_b); +bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, const SubdivSettings *settings_b); /* ============================== CONSTRUCTION ============================== */ @@ -198,8 +197,7 @@ bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, * settings and topology. */ Subdiv *BKE_subdiv_new_from_converter(const SubdivSettings *settings, struct OpenSubdiv_Converter *converter); -Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings, - const struct Mesh *mesh); +Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings, const struct Mesh *mesh); /* Similar to above, but will not re-create descriptor if it was created for the * same settings and topology. @@ -209,23 +207,20 @@ Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings, * NOTE: It is allowed to pass NULL as an existing subdivision surface * descriptor. This will create enw descriptor without any extra checks. */ -Subdiv *BKE_subdiv_update_from_converter( - Subdiv *subdiv, - const SubdivSettings *settings, - struct OpenSubdiv_Converter *converter); -Subdiv *BKE_subdiv_update_from_mesh( - Subdiv *subdiv, - const SubdivSettings *settings, - const struct Mesh *mesh); +Subdiv *BKE_subdiv_update_from_converter(Subdiv *subdiv, + const SubdivSettings *settings, + struct OpenSubdiv_Converter *converter); +Subdiv *BKE_subdiv_update_from_mesh(Subdiv *subdiv, + const SubdivSettings *settings, + const struct Mesh *mesh); void BKE_subdiv_free(Subdiv *subdiv); /* ============================ DISPLACEMENT API ============================ */ -void BKE_subdiv_displacement_attach_from_multires( - Subdiv *subdiv, - struct Mesh *mesh, - const struct MultiresModifierData *mmd); +void BKE_subdiv_displacement_attach_from_multires(Subdiv *subdiv, + struct Mesh *mesh, + const struct MultiresModifierData *mmd); void BKE_subdiv_displacement_detach(Subdiv *subdiv); @@ -237,14 +232,16 @@ int *BKE_subdiv_face_ptex_offset_get(Subdiv *subdiv); /* For a given (ptex_u, ptex_v) within a ptex face get corresponding * (grid_u, grid_v) within a grid. */ -BLI_INLINE void BKE_subdiv_ptex_face_uv_to_grid_uv( - const float ptex_u, const float ptex_v, - float *r_grid_u, float *r_grid_v); +BLI_INLINE void BKE_subdiv_ptex_face_uv_to_grid_uv(const float ptex_u, + const float ptex_v, + float *r_grid_u, + float *r_grid_v); /* Inverse of above. */ -BLI_INLINE void BKE_subdiv_grid_uv_to_ptex_face_uv( - const float grid_u, const float grid_v, - float *r_ptex_u, float *r_ptex_v); +BLI_INLINE void BKE_subdiv_grid_uv_to_ptex_face_uv(const float grid_u, + const float grid_v, + float *r_ptex_u, + float *r_ptex_v); /* For a given subdivision level (which is NOT refinement level) get size of * CCG grid (number of grid points on a side). @@ -255,17 +252,16 @@ BLI_INLINE int BKE_subdiv_grid_size_from_level(const int level); * works in normalized coordinates. * * NOTE: Output coordinates are in ptex coordinates. */ -BLI_INLINE int BKE_subdiv_rotate_quad_to_corner( - const float quad_u, const float quad_v, - float *r_corner_u, float *r_corner_v); +BLI_INLINE int BKE_subdiv_rotate_quad_to_corner(const float quad_u, + const float quad_v, + float *r_corner_u, + float *r_corner_v); /* Converts (u, v) coordinate from within a grid to a quad coordinate in * normalized ptex coordinates. */ BLI_INLINE void BKE_subdiv_rotate_grid_to_quad( - const int corner, - const float grid_u, const float grid_v, - float *r_quad_u, float *r_quad_v); + const int corner, const float grid_u, const float grid_v, float *r_quad_u, float *r_quad_v); #include "intern/subdiv_inline.h" -#endif /* __BKE_SUBDIV_H__ */ +#endif /* __BKE_SUBDIV_H__ */ -- cgit v1.2.3