diff options
author | Joseph Eagar <joeedh@gmail.com> | 2010-01-06 01:33:41 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2010-01-06 01:33:41 +0300 |
commit | 67ff197cb1b0e79a95bf6546b5fe1a481b79fce1 (patch) | |
tree | 9f78d5cda71d200cab6475eb9c2747f7181adf3a /source/blender/blenkernel/BKE_subsurf.h | |
parent | 473f235a6eee6c02cf41a1e173f53406b62440aa (diff) | |
parent | ffe13aeb232ac6bad3a98997b4a352f434293193 (diff) |
Merge with trunk/2.5 at r25563
Most likely will not compile for others, I'd appreciate any build errors
and missing files reports (I can never seem to get everything committed
and all the build systems working without help).
Porting over the sculpt/multires tools was a breeze,
thanks goes to brecht for a design that didn't exclude
ngons and was easy to port.
Note that I've not tested externally-backed multires
file support yet. Also, I still need to write version
patch code for some cases.
Some notes:
* Like trunk, topological changes don't update multires right,
so e.g. subdivide will duplicate multires data on the new faces,
instead of subdividing it.
* If you set the debug value (ctrl-alt-d) to 1 it'll turn on
my experiments in speeding up sculpting on higher-res multires
meshes (but note it makes partial redraw not completely accurate).
* There's a bug where you have to go through editmode to get out
of sculpt mode, not sure if I inherited or created this myself.
Diffstat (limited to 'source/blender/blenkernel/BKE_subsurf.h')
-rw-r--r-- | source/blender/blenkernel/BKE_subsurf.h | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/source/blender/blenkernel/BKE_subsurf.h b/source/blender/blenkernel/BKE_subsurf.h index f6dc22f650a..a0db944530e 100644 --- a/source/blender/blenkernel/BKE_subsurf.h +++ b/source/blender/blenkernel/BKE_subsurf.h @@ -34,21 +34,66 @@ struct DerivedMesh; struct EditMesh; struct MultiresSubsurf; struct SubsurfModifierData; +struct _CCGSubsurf; +struct _CCGVert; +struct _CCGEdge; +struct _CCGFace; +struct EdgeHash; +struct PBVH; +struct DMGridData; +struct DMGridAdjacency; -struct DerivedMesh *subsurf_make_derived_from_derived( - struct DerivedMesh *dm, - struct SubsurfModifierData *smd, - int useRenderParams, float (*vertCos)[3], - int isFinalCalc, int editMode); +/**************************** External *****************************/ -struct DerivedMesh *subsurf_make_derived_from_derived_with_multires( +struct DerivedMesh *subsurf_make_derived_from_derived( struct DerivedMesh *dm, struct SubsurfModifierData *smd, - struct MultiresSubsurf *ms, int useRenderParams, float (*vertCos)[3], int isFinalCalc, int editMode); void subsurf_calculate_limit_positions(Mesh *me, float (*positions_r)[3]); +/**************************** Internal *****************************/ + +typedef struct CCGDerivedMesh { + DerivedMesh dm; + + struct _CCGSubSurf *ss; + int freeSS; + int drawInteriorEdges, useSubsurfUv; + + struct {int startVert; struct _CCGVert *vert;} *vertMap; + struct {int startVert; int startEdge; struct _CCGEdge *edge;} *edgeMap; + struct {int startVert; int startEdge; + int startFace; struct _CCGFace *face;} *faceMap; + + short *edgeFlags; + char *faceFlags; + + int *reverseFaceMap; + + struct PBVH *pbvh; + + struct DMGridData **gridData; + struct DMGridAdjacency *gridAdjacency; + int *gridOffset; + struct _CCGFace **gridFaces; + + struct { + struct MultiresModifierData *mmd; + int local_mmd; + + int lvl, totlvl; + float (*orco)[3]; + + Object *ob; + int modified; + + void (*update)(DerivedMesh*); + } multires; + + struct EdgeHash *ehash; +} CCGDerivedMesh; + #endif |