69 switch (boundary_smooth) {
105 topology_refiner_settings.
level = settings->
level;
110 converter, &topology_refiner_settings);
123 subdiv->
stats = stats;
146 bool can_reuse_subdiv =
true;
149 can_reuse_subdiv =
false;
159 can_reuse_subdiv =
false;
161 if (can_reuse_subdiv) {
165 if (subdiv !=
NULL) {
215 if (topology_refiner ==
NULL) {
218 const int num_coarse_faces = topology_refiner->
getNumFaces(topology_refiner);
220 num_coarse_faces + 1,
sizeof(
int),
"subdiv face_ptex_offset");
222 for (
int face_index = 0; face_index < num_coarse_faces; face_index++) {
223 const int num_ptex_faces = topology_refiner->
getNumFacePtexFaces(topology_refiner, face_index);
225 ptex_offset += num_ptex_faces;
void BKE_subdiv_stats_init(SubdivStats *stats)
@ SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME
@ SUBDIV_STATS_TOPOLOGY_COMPARE
void BKE_subdiv_stats_end(SubdivStats *stats, eSubdivStatsValue value)
void BKE_subdiv_stats_begin(SubdivStats *stats, eSubdivStatsValue value)
eSubdivFVarLinearInterpolation
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS
@ SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE
eSubdivVtxBoundaryInterpolation
@ SUBDIV_VTX_BOUNDARY_EDGE_AND_CORNER
@ SUBDIV_VTX_BOUNDARY_EDGE_ONLY
void BKE_subdiv_displacement_detach(Subdiv *subdiv)
void(* BKE_subsurf_modifier_free_gpu_cache_cb)(struct Subdiv *subdiv)
#define BLI_assert_msg(a, msg)
@ SUBSURF_BOUNDARY_SMOOTH_ALL
@ SUBSURF_BOUNDARY_SMOOTH_PRESERVE_CORNERS
@ SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS
@ SUBSURF_UV_SMOOTH_PRESERVE_CORNERS
@ SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES
@ SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE
Read Guarded memory(de)allocation.
void openSubdiv_deleteEvaluator(OpenSubdiv_Evaluator *evaluator)
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void openSubdiv_cleanup()
@ OPENSUBDIV_EVALUATOR_CPU
int(* getNumVertices)(const struct OpenSubdiv_Converter *converter)
eOpenSubdivEvaluator type
int(* getNumFaces)(const struct OpenSubdiv_TopologyRefiner *topology_refiner)
int(* getNumFacePtexFaces)(const struct OpenSubdiv_TopologyRefiner *topology_refiner, const int face_index)
eSubdivFVarLinearInterpolation fvar_linear_interpolation
eSubdivVtxBoundaryInterpolation vtx_boundary_interpolation
struct Subdiv::@68 cache_
struct SubdivDisplacement * displacement_evaluator
struct OpenSubdiv_TopologyRefiner * topology_refiner
struct OpenSubdiv_Evaluator * evaluator
bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, const SubdivSettings *settings_b)
Subdiv * BKE_subdiv_update_from_converter(Subdiv *subdiv, const SubdivSettings *settings, OpenSubdiv_Converter *converter)
eSubdivVtxBoundaryInterpolation BKE_subdiv_vtx_boundary_interpolation_from_subsurf(int boundary_smooth)
void BKE_subdiv_free(Subdiv *subdiv)
int * BKE_subdiv_face_ptex_offset_get(Subdiv *subdiv)
Subdiv * BKE_subdiv_update_from_mesh(Subdiv *subdiv, const SubdivSettings *settings, const Mesh *mesh)
eSubdivFVarLinearInterpolation BKE_subdiv_fvar_interpolation_from_uv_smooth(int uv_smooth)
Subdiv * BKE_subdiv_new_from_mesh(const SubdivSettings *settings, const Mesh *mesh)
Subdiv * BKE_subdiv_new_from_converter(const SubdivSettings *settings, struct OpenSubdiv_Converter *converter)
void BKE_subdiv_converter_free(struct OpenSubdiv_Converter *converter)
void BKE_subdiv_converter_init_for_mesh(struct OpenSubdiv_Converter *converter, const struct SubdivSettings *settings, const struct Mesh *mesh)
void openSubdiv_deleteTopologyRefiner(OpenSubdiv_TopologyRefiner *topology_refiner)
bool openSubdiv_topologyRefinerCompareWithConverter(const OpenSubdiv_TopologyRefiner *topology_refiner, const OpenSubdiv_Converter *converter)
OpenSubdiv_TopologyRefiner * openSubdiv_createTopologyRefinerFromConverter(OpenSubdiv_Converter *converter, const OpenSubdiv_TopologyRefinerSettings *settings)