This is intended to remove use of MFace for runtime tessellation which are not ideal for drawing,
and instead cache loop tris.
The main differences are:
- All faces will be 3 sides which simplifies a lot of code (MFace's can be 3 or 4 sides).
- We won't need to store duplicate custom-data layers (UV's, colors, normals). (for MFace and MPoly+MLoop).
This has some advantages for OpenGL and should reduce memory use.
Details:
- Tessellated data is stored in MLoopTri array instead of MFace.
- MLoopTri's are int[4] (3 indices to the loops, one to the original polygon).
- MLoopTri's are stored in the DerivedMesh and accessed directly by the struct member. though they may be moved behind API access.
- Currently this patch does not remove MFace, though eventually it should. Or, for the common cases MFace can be removed. And only allocated in specific situations.
These areas are working on a basic level:
- GPU buffers
- CDDM drawing
- Sculpting (PBVH)
- Vertex/Weight paint
Areas not yet converted
- Particles
- Projection paint
- Bvhutils
- Blender-Internal rendering