Blender  V3.3
BKE_subsurf.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 #pragma once
4 
9 /* struct DerivedMesh is used directly */
10 #include "BKE_DerivedMesh.h"
11 
12 /* Thread sync primitives used directly. */
13 #include "BLI_threads.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 struct CCGEdge;
20 struct CCGElem;
21 struct CCGFace;
22 struct CCGVert;
23 struct DMFlagMat;
24 struct DerivedMesh;
25 struct EdgeHash;
26 struct MPoly;
27 struct Mesh;
28 struct MeshElemMap;
29 struct Object;
30 struct PBVH;
31 struct SubsurfModifierData;
32 
33 /**************************** External *****************************/
34 
35 typedef enum {
43 } SubsurfFlags;
44 
46  struct SubsurfModifierData *smd,
47  const struct Scene *scene,
48  float (*vertCos)[3],
49  SubsurfFlags flags);
50 
51 void subsurf_calculate_limit_positions(struct Mesh *me, float (*r_positions)[3]);
52 
56 int BKE_ccg_gridsize(int level);
57 
62 int BKE_ccg_factor(int low_level, int high_level);
63 
64 typedef enum MultiresModifiedFlags {
65  /* indicates the grids have been sculpted on, so MDisps
66  * have to be updated */
68  /* indicates elements have been hidden or unhidden */
71 
72 /**************************** Internal *****************************/
73 
74 typedef struct CCGDerivedMesh {
76 
77  struct CCGSubSurf *ss;
78  int freeSS;
80 
81  struct {
82  int startVert;
83  struct CCGVert *vert;
84  } * vertMap;
85  struct {
86  int startVert;
87  int startEdge;
88  struct CCGEdge *edge;
89  } * edgeMap;
90  struct {
91  int startVert;
92  int startEdge;
93  int startFace;
94  struct CCGFace *face;
95  } * faceMap;
96 
97  short *edgeFlags;
99 
101 
102  struct PBVH *pbvh;
103 
104  struct MeshElemMap *pmap;
105  int *pmap_mem;
106 
107  struct CCGElem **gridData;
109  struct CCGFace **gridFaces;
111  unsigned int **gridHidden;
112  /* Elements in arrays above. */
113  unsigned int numGrid;
114 
115  struct {
118 
119  int lvl, totlvl;
120  float (*orco)[3];
121 
122  struct Object *ob;
125 
126  struct EdgeHash *ehash;
127 
131 
132 #ifdef __cplusplus
133 }
134 #endif
typedef float(TangentPoint)[2]
struct CCGElem CCGElem
Definition: BKE_ccg.h:30
int BKE_ccg_gridsize(int level)
Definition: CCGSubSurf.c:23
MultiresModifiedFlags
Definition: BKE_subsurf.h:64
@ MULTIRES_HIDDEN_MODIFIED
Definition: BKE_subsurf.h:69
@ MULTIRES_COORDS_MODIFIED
Definition: BKE_subsurf.h:67
struct CCGDerivedMesh CCGDerivedMesh
struct DerivedMesh * subsurf_make_derived_from_derived(struct DerivedMesh *dm, struct SubsurfModifierData *smd, const struct Scene *scene, float(*vertCos)[3], SubsurfFlags flags)
Definition: subsurf_ccg.c:1902
SubsurfFlags
Definition: BKE_subsurf.h:35
@ SUBSURF_FOR_EDIT_MODE
Definition: BKE_subsurf.h:38
@ SUBSURF_IN_EDIT_MODE
Definition: BKE_subsurf.h:39
@ SUBSURF_USE_GPU_BACKEND
Definition: BKE_subsurf.h:41
@ SUBSURF_ALLOC_PAINT_MASK
Definition: BKE_subsurf.h:40
@ SUBSURF_USE_RENDER_PARAMS
Definition: BKE_subsurf.h:36
@ SUBSURF_IS_FINAL_CALC
Definition: BKE_subsurf.h:37
@ SUBSURF_IGNORE_SIMPLIFY
Definition: BKE_subsurf.h:42
int BKE_ccg_factor(int low_level, int high_level)
Definition: CCGSubSurf.c:28
void subsurf_calculate_limit_positions(struct Mesh *me, float(*r_positions)[3])
Definition: subsurf_ccg.c:2017
pthread_rwlock_t ThreadRWMutex
Definition: BLI_threads.h:125
pthread_mutex_t ThreadMutex
Definition: BLI_threads.h:82
Scene scene
struct MeshElemMap * pmap
Definition: BKE_subsurf.h:104
struct CCGFace ** gridFaces
Definition: BKE_subsurf.h:109
int drawInteriorEdges
Definition: BKE_subsurf.h:79
float(* orco)[3]
Definition: BKE_subsurf.h:120
struct DMFlagMat * faceFlags
Definition: BKE_subsurf.h:98
struct CCGVert * vert
Definition: BKE_subsurf.h:83
struct CCGDerivedMesh::@72 * edgeMap
struct CCGDerivedMesh::@74 multires
struct CCGSubSurf * ss
Definition: BKE_subsurf.h:77
struct MultiresModifierData * mmd
Definition: BKE_subsurf.h:116
unsigned int numGrid
Definition: BKE_subsurf.h:113
struct EdgeHash * ehash
Definition: BKE_subsurf.h:126
MultiresModifiedFlags modified_flags
Definition: BKE_subsurf.h:123
ThreadMutex loops_cache_lock
Definition: BKE_subsurf.h:128
int * reverseFaceMap
Definition: BKE_subsurf.h:100
unsigned int ** gridHidden
Definition: BKE_subsurf.h:111
DerivedMesh dm
Definition: BKE_subsurf.h:75
struct CCGEdge * edge
Definition: BKE_subsurf.h:88
struct CCGDerivedMesh::@71 * vertMap
struct PBVH * pbvh
Definition: BKE_subsurf.h:102
struct Object * ob
Definition: BKE_subsurf.h:122
struct CCGElem ** gridData
Definition: BKE_subsurf.h:107
struct CCGFace * face
Definition: BKE_subsurf.h:94
short * edgeFlags
Definition: BKE_subsurf.h:97
struct CCGDerivedMesh::@73 * faceMap
struct DMFlagMat * gridFlagMats
Definition: BKE_subsurf.h:110
ThreadRWMutex origindex_cache_rwlock
Definition: BKE_subsurf.h:129