Blender  V3.3
Classes | Typedefs | Enumerations | Functions
BKE_subdiv.h File Reference
#include "BLI_compiler_compat.h"
#include "BLI_sys_types.h"
#include "intern/subdiv_inline.h"

Go to the source code of this file.

Classes

struct  SubdivSettings
 
struct  SubdivStats
 
struct  SubdivDisplacement
 
struct  Subdiv
 

Typedefs

typedef enum eSubdivVtxBoundaryInterpolation eSubdivVtxBoundaryInterpolation
 
typedef enum eSubdivFVarLinearInterpolation eSubdivFVarLinearInterpolation
 
typedef struct SubdivSettings SubdivSettings
 
typedef enum eSubdivStatsValue eSubdivStatsValue
 
typedef struct SubdivStats SubdivStats
 
typedef struct SubdivDisplacement SubdivDisplacement
 
typedef struct Subdiv Subdiv
 

Enumerations

enum  eSubdivVtxBoundaryInterpolation { SUBDIV_VTX_BOUNDARY_NONE , SUBDIV_VTX_BOUNDARY_EDGE_ONLY , SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER }
 
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
}
 
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
}
 

Functions

void BKE_subdiv_init (void)
 
void BKE_subdiv_exit (void)
 
eSubdivFVarLinearInterpolation BKE_subdiv_fvar_interpolation_from_uv_smooth (int uv_smooth)
 
eSubdivVtxBoundaryInterpolation BKE_subdiv_vtx_boundary_interpolation_from_subsurf (int boundary_smooth)
 
void BKE_subdiv_stats_init (SubdivStats *stats)
 
void BKE_subdiv_stats_begin (SubdivStats *stats, eSubdivStatsValue value)
 
void BKE_subdiv_stats_end (SubdivStats *stats, eSubdivStatsValue value)
 
void BKE_subdiv_stats_reset (SubdivStats *stats, eSubdivStatsValue value)
 
void BKE_subdiv_stats_print (const SubdivStats *stats)
 
bool BKE_subdiv_settings_equal (const SubdivSettings *settings_a, const SubdivSettings *settings_b)
 
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_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)
 
void BKE_subdiv_displacement_attach_from_multires (Subdiv *subdiv, struct Mesh *mesh, const struct MultiresModifierData *mmd)
 
void BKE_subdiv_displacement_detach (Subdiv *subdiv)
 
int * BKE_subdiv_face_ptex_offset_get (Subdiv *subdiv)
 
BLI_INLINE void BKE_subdiv_ptex_face_uv_to_grid_uv (float ptex_u, float ptex_v, float *r_grid_u, float *r_grid_v)
 
BLI_INLINE void BKE_subdiv_grid_uv_to_ptex_face_uv (float grid_u, float grid_v, float *r_ptex_u, float *r_ptex_v)
 
BLI_INLINE int BKE_subdiv_grid_size_from_level (int level)
 
BLI_INLINE int BKE_subdiv_rotate_quad_to_corner (float quad_u, float quad_v, float *r_corner_u, float *r_corner_v)
 
BLI_INLINE void BKE_subdiv_rotate_grid_to_quad (int corner, float grid_u, float grid_v, float *r_quad_u, float *r_quad_v)
 
BLI_INLINE float BKE_subdiv_crease_to_sharpness_f (float edge_crease)
 
BLI_INLINE float BKE_subdiv_crease_to_sharpness_char (char edge_crease)
 

Typedef Documentation

◆ eSubdivFVarLinearInterpolation

◆ eSubdivStatsValue

◆ eSubdivVtxBoundaryInterpolation

◆ Subdiv

typedef struct Subdiv Subdiv

◆ SubdivDisplacement

◆ SubdivSettings

◆ SubdivStats

typedef struct SubdivStats SubdivStats

Enumeration Type Documentation

◆ eSubdivFVarLinearInterpolation

Enumerator
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 

Definition at line 33 of file BKE_subdiv.h.

◆ eSubdivStatsValue

Enumerator
SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME 
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 

Definition at line 75 of file BKE_subdiv.h.

◆ eSubdivVtxBoundaryInterpolation

Enumerator
SUBDIV_VTX_BOUNDARY_NONE 
SUBDIV_VTX_BOUNDARY_EDGE_ONLY 
SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER 

Definition at line 24 of file BKE_subdiv.h.

Function Documentation

◆ BKE_subdiv_crease_to_sharpness_char()

BLI_INLINE float BKE_subdiv_crease_to_sharpness_char ( char  edge_crease)

Definition at line 95 of file subdiv_inline.h.

References BKE_subdiv_crease_to_sharpness_f().

Referenced by get_edge_sharpness(), and store_edge().

◆ BKE_subdiv_crease_to_sharpness_f()

BLI_INLINE float BKE_subdiv_crease_to_sharpness_f ( float  edge_crease)

◆ BKE_subdiv_displacement_attach_from_multires()

void BKE_subdiv_displacement_attach_from_multires ( Subdiv *  subdiv,
struct Mesh *  mesh,
const struct MultiresModifierData *  mmd 
)

◆ BKE_subdiv_displacement_detach()

void BKE_subdiv_displacement_detach ( Subdiv *  subdiv)

◆ BKE_subdiv_exit()

void BKE_subdiv_exit ( void  )

Definition at line 37 of file subdiv.c.

References openSubdiv_cleanup().

Referenced by WM_exit_ex().

◆ BKE_subdiv_face_ptex_offset_get()

int* BKE_subdiv_face_ptex_offset_get ( Subdiv *  subdiv)

◆ BKE_subdiv_free()

void BKE_subdiv_free ( Subdiv *  subdiv)

◆ BKE_subdiv_fvar_interpolation_from_uv_smooth()

eSubdivFVarLinearInterpolation BKE_subdiv_fvar_interpolation_from_uv_smooth ( int  uv_smooth)

◆ BKE_subdiv_grid_size_from_level()

BLI_INLINE int BKE_subdiv_grid_size_from_level ( int  level)

◆ BKE_subdiv_grid_uv_to_ptex_face_uv()

BLI_INLINE void BKE_subdiv_grid_uv_to_ptex_face_uv ( float  grid_u,
float  grid_v,
float *  r_ptex_u,
float *  r_ptex_v 
)

◆ BKE_subdiv_init()

void BKE_subdiv_init ( void  )

Definition at line 32 of file subdiv.c.

References openSubdiv_init().

Referenced by WM_init().

◆ BKE_subdiv_new_from_converter()

Subdiv* BKE_subdiv_new_from_converter ( const SubdivSettings *  settings,
struct OpenSubdiv_Converter *  converter 
)

◆ BKE_subdiv_new_from_mesh()

Subdiv* BKE_subdiv_new_from_mesh ( const SubdivSettings *  settings,
const struct Mesh *  mesh 
)

◆ BKE_subdiv_ptex_face_uv_to_grid_uv()

BLI_INLINE void BKE_subdiv_ptex_face_uv_to_grid_uv ( float  ptex_u,
float  ptex_v,
float *  r_grid_u,
float *  r_grid_v 
)

◆ BKE_subdiv_rotate_grid_to_quad()

BLI_INLINE void BKE_subdiv_rotate_grid_to_quad ( int  corner,
float  grid_u,
float  grid_v,
float *  r_quad_u,
float *  r_quad_v 
)

◆ BKE_subdiv_rotate_quad_to_corner()

BLI_INLINE int BKE_subdiv_rotate_quad_to_corner ( float  quad_u,
float  quad_v,
float *  r_corner_u,
float *  r_corner_v 
)

◆ BKE_subdiv_settings_equal()

bool BKE_subdiv_settings_equal ( const SubdivSettings *  settings_a,
const SubdivSettings *  settings_b 
)

◆ BKE_subdiv_stats_begin()

void BKE_subdiv_stats_begin ( SubdivStats *  stats,
eSubdivStatsValue  value 
)

◆ BKE_subdiv_stats_end()

void BKE_subdiv_stats_end ( SubdivStats *  stats,
eSubdivStatsValue  value 
)

◆ BKE_subdiv_stats_init()

void BKE_subdiv_stats_init ( SubdivStats *  stats)

◆ BKE_subdiv_stats_print()

void BKE_subdiv_stats_print ( const SubdivStats *  stats)

Definition at line 41 of file subdiv_stats.c.

References STATS_PRINT_TIME.

◆ BKE_subdiv_stats_reset()

void BKE_subdiv_stats_reset ( SubdivStats *  stats,
eSubdivStatsValue  value 
)

Definition at line 36 of file subdiv_stats.c.

References SubdivStats::values_.

Referenced by BKE_subdiv_eval_begin().

◆ BKE_subdiv_update_from_converter()

Subdiv* BKE_subdiv_update_from_converter ( Subdiv *  subdiv,
const SubdivSettings *  settings,
struct OpenSubdiv_Converter *  converter 
)

◆ BKE_subdiv_update_from_mesh()

Subdiv* BKE_subdiv_update_from_mesh ( Subdiv *  subdiv,
const SubdivSettings *  settings,
const struct Mesh *  mesh 
)

◆ BKE_subdiv_vtx_boundary_interpolation_from_subsurf()

eSubdivVtxBoundaryInterpolation BKE_subdiv_vtx_boundary_interpolation_from_subsurf ( int  boundary_smooth)