31 #define BUGGY_SIMPLE_SCHEME_WORKAROUND 1
65 #if BUGGY_SIMPLE_SCHEME_WORKAROUND
123 int manifold_face_index,
124 int *manifold_face_vertices)
130 manifold_face_vertices[
corner] =
136 int manifold_edge_index,
137 int *manifold_edge_vertices)
149 #if BUGGY_SIMPLE_SCHEME_WORKAROUND
163 int manifold_vertex_index)
166 #if BUGGY_SIMPLE_SCHEME_WORKAROUND
205 mesh->
totloop,
sizeof(
int),
"loop uv vertex index");
208 mpoly, mloop, mloopuv, num_poly, num_vert, limit,
false,
true);
211 for (
int vertex_index = 0; vertex_index < num_vert; vertex_index++) {
213 while (uv_vert !=
NULL) {
220 uv_vert = uv_vert->
next;
241 const int face_index,
297 const int num_elements,
299 int **r_indices_reverse,
300 int *r_num_manifold_elements)
303 if (r_indices !=
NULL) {
306 int *indices_reverse =
NULL;
307 if (r_indices_reverse !=
NULL) {
308 indices_reverse =
MEM_malloc_arrayN(num_elements,
sizeof(
int),
"manifold indices reverse");
311 for (
int i = 0; i < num_elements; i++) {
316 if (indices_reverse !=
NULL) {
317 indices_reverse[i -
offset] = i;
327 if (r_indices !=
NULL) {
330 if (r_indices_reverse !=
NULL) {
331 *r_indices_reverse = indices_reverse;
333 *r_num_manifold_elements = num_elements -
offset;
345 for (
int poly_index = 0; poly_index <
mesh->
totpoly; poly_index++) {
346 const MPoly *poly = &mpoly[poly_index];
365 for (
int edge_index = 0; edge_index <
mesh->
totedge; edge_index++) {
367 const MEdge *edge = &medge[edge_index];
CustomData interface, see also DNA_customdata_types.h.
int CustomData_number_of_layers(const struct CustomData *data, int type)
void * CustomData_get_layer_n(const struct CustomData *data, int type, int n)
void * CustomData_get_layer(const struct CustomData *data, int type)
UvMapVert * BKE_mesh_uv_vert_map_get_vert(UvVertMap *vmap, unsigned int v)
UvVertMap * BKE_mesh_uv_vert_map_create(const struct MPoly *mpoly, const struct MLoop *mloop, const struct MLoopUV *mloopuv, unsigned int totpoly, unsigned int totvert, const float limit[2], bool selected, bool use_winding)
void BKE_mesh_uv_vert_map_free(UvVertMap *vmap)
#define STD_UV_CONNECT_LIMIT
BLI_INLINE float BKE_subdiv_crease_to_sharpness_f(float edge_crease)
BLI_INLINE float BKE_subdiv_crease_to_sharpness_char(char edge_crease)
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
#define BLI_BITMAP_TEST_BOOL(_bitmap, _index)
Read Guarded memory(de)allocation.
SyclQueue void void size_t num_bytes void
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ccl_gpu_kernel_postfix int ccl_global int * indices
void *(* MEM_malloc_arrayN)(size_t len, size_t size, const char *str)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
OpenSubdiv_FVarLinearInterpolation
OpenSubdiv_VtxBoundaryInterpolation
int * manifold_edge_index_reverse
int * manifold_vertex_index_reverse
int * manifold_vertex_index
BLI_bitmap * infinite_sharp_vertices_map
const float * cd_vertex_crease
int num_manifold_vertices
int(* getNumVertexFaces)(const struct OpenSubdiv_Converter *converter, const int vertex_index)
bool(* specifiesFullTopology)(const struct OpenSubdiv_Converter *converter)
void(* freeUserData)(const struct OpenSubdiv_Converter *converter)
void(* getFaceVertices)(const struct OpenSubdiv_Converter *converter, const int face_index, int *face_vertices)
float(* getVertexSharpness)(const struct OpenSubdiv_Converter *converter, const int vertex_index)
void(* getFaceEdges)(const struct OpenSubdiv_Converter *converter, const int face_index, int *face_edges)
int(* getNumUVLayers)(const struct OpenSubdiv_Converter *converter)
int(* getNumVertexEdges)(const struct OpenSubdiv_Converter *converter, const int vertex_index)
OpenSubdiv_FVarLinearInterpolation(* getFVarLinearInterpolation)(const struct OpenSubdiv_Converter *converter)
void(* getEdgeVertices)(const struct OpenSubdiv_Converter *converter, const int edge_index, int edge_vertices[2])
OpenSubdiv_SchemeType(* getSchemeType)(const struct OpenSubdiv_Converter *converter)
bool(* isInfiniteSharpVertex)(const struct OpenSubdiv_Converter *converter, const int vertex_index)
void(* getVertexFaces)(const struct OpenSubdiv_Converter *converter, const int vertex_index, int *vertex_faces)
int(* getNumVertices)(const struct OpenSubdiv_Converter *converter)
float(* getEdgeSharpness)(const struct OpenSubdiv_Converter *converter, const int edge_index)
int(* getNumEdges)(const struct OpenSubdiv_Converter *converter)
int(* getNumFaces)(const struct OpenSubdiv_Converter *converter)
int(* getNumEdgeFaces)(const struct OpenSubdiv_Converter *converter, const int edge_index)
int(* getNumUVCoordinates)(const struct OpenSubdiv_Converter *converter)
void(* getVertexEdges)(const struct OpenSubdiv_Converter *converter, const int vertex_index, int *vertex_edges)
void(* finishUVLayer)(const struct OpenSubdiv_Converter *converter)
void(* getEdgeFaces)(const struct OpenSubdiv_Converter *converter, const int edge, int *edge_faces)
OpenSubdiv_VtxBoundaryInterpolation(* getVtxBoundaryInterpolation)(const struct OpenSubdiv_Converter *converter)
void(* precalcUVLayer)(const struct OpenSubdiv_Converter *converter, const int layer_index)
int(* getFaceCornerUVIndex)(const struct OpenSubdiv_Converter *converter, const int face_index, const int corner_index)
int(* getNumFaceVertices)(const struct OpenSubdiv_Converter *converter, const int face_index)
unsigned short loop_of_poly_index
int BKE_subdiv_converter_fvar_linear_from_settings(const SubdivSettings *settings)
int BKE_subdiv_converter_vtx_boundary_interpolation_from_settings(const SubdivSettings *settings)
static int get_face_corner_uv_index(const OpenSubdiv_Converter *converter, const int face_index, const int corner)
static void get_edge_vertices(const OpenSubdiv_Converter *converter, int manifold_edge_index, int *manifold_edge_vertices)
static void precalc_uv_layer(const OpenSubdiv_Converter *converter, const int layer_index)
static bool specifies_full_topology(const OpenSubdiv_Converter *UNUSED(converter))
static void get_face_vertices(const OpenSubdiv_Converter *converter, int manifold_face_index, int *manifold_face_vertices)
static bool is_infinite_sharp_vertex(const OpenSubdiv_Converter *converter, int manifold_vertex_index)
struct ConverterStorage ConverterStorage
static OpenSubdiv_VtxBoundaryInterpolation get_vtx_boundary_interpolation(const struct OpenSubdiv_Converter *converter)
static int get_num_faces(const OpenSubdiv_Converter *converter)
static void init_user_data(OpenSubdiv_Converter *converter, const SubdivSettings *settings, const Mesh *mesh)
static void finish_uv_layer(const OpenSubdiv_Converter *UNUSED(converter))
static int get_num_vertices(const OpenSubdiv_Converter *converter)
static void initialize_manifold_index_array(const BLI_bitmap *used_map, const int num_elements, int **r_indices, int **r_indices_reverse, int *r_num_manifold_elements)
static OpenSubdiv_SchemeType get_scheme_type(const OpenSubdiv_Converter *converter)
static int get_num_face_vertices(const OpenSubdiv_Converter *converter, int manifold_face_index)
void BKE_subdiv_converter_init_for_mesh(struct OpenSubdiv_Converter *converter, const SubdivSettings *settings, const Mesh *mesh)
static int get_num_edges(const OpenSubdiv_Converter *converter)
static void free_user_data(const OpenSubdiv_Converter *converter)
static float get_edge_sharpness(const OpenSubdiv_Converter *converter, int manifold_edge_index)
static float get_vertex_sharpness(const OpenSubdiv_Converter *converter, int manifold_vertex_index)
static int get_num_uvs(const OpenSubdiv_Converter *converter)
static void initialize_manifold_indices(ConverterStorage *storage)
static int get_num_uv_layers(const OpenSubdiv_Converter *converter)
static OpenSubdiv_FVarLinearInterpolation get_fvar_linear_interpolation(const OpenSubdiv_Converter *converter)
static void init_functions(OpenSubdiv_Converter *converter)