May 10, 2014, 20:53 (GMT) |
Made evaluator persistent in memory Now OpenSubdiv evaluator descriptor will only be re-created if mesh topology changes. Apparently don't see huge speed raise with CPU evaluation, but this change lands a bit of a basis for further changes. Requires changes made in OpenSubdiv's C-API which are currently only there: https://github.com/Nazg-Gul/OpenSubdiv/tree/dev |
May 10, 2014, 13:19 (GMT) |
Reshuffle OpemSubdiv libraries in order to solve linking errors No idea why it worked before. |
May 10, 2014, 13:05 (GMT) |
Merge branch 'master' into opensubdiv-modifier |
May 2, 2014, 09:09 (GMT) |
Bring back face debug print |
May 2, 2014, 06:48 (GMT) |
Fallback simple subdivisions to legacy code For until OpenSubdiv case is capable of handling simple subsurf let's fallback to legacy implementation rather than doing CC subdivisions. Not really sure we'll be able to have a single implementation for bot of the cases, but bet simple subsurf might be re-done real easy once we clean up the CCG structures for the osd. |
May 2, 2014, 00:42 (GMT) |
Initial support of UVs subdivisions This mainly solves wrong memory access for now making blender free from crashes and weird looking meshes. However it's still not fully proper UV subdivisions, seems seams are to be marked as crease of 1.0 in order to be compatible with legacy UVs subdivisions. |
May 1, 2014, 22:49 (GMT) |
Code cleanup: make branch closer to master There were some experiment changes which weren't fully removed. |
May 1, 2014, 22:47 (GMT) |
Corrected base vertices counting Since ptex faces change we don't need to tessellate non-quads manually hence we shouldn't allocate extra vertices. It's all up to OpenSubdiv now. |
May 1, 2014, 22:41 (GMT) |
Added some magic to support NGons Seems tris and ngons are working now, however need some much more intense testing. |
May 1, 2014, 21:49 (GMT) |
Simplify NGons code by using ptex faces OpenSubdiv actually splits ngons and triangles into quads in the same exact way as we need it for grids. Take advantage of this and simplify our code. TODO: Ngon edges are still giving issues tho. |
May 1, 2014, 07:09 (GMT) |
Merge branch 'master' into opensubdiv-modifier |
April 30, 2014, 08:12 (GMT) |
Merge branch 'master' into opensubdiv-modifier |
April 30, 2014, 08:12 (GMT) |
Enable threading on the CCG evaluation Makes it so OSD SS modifier is about 10% slower than the legacy one. This might be speed up further by skipping all the tricks with CCGVert/Edge/Face intemediate storage i guess. Anyway, consider the current implementation not that bad. NOTE: You need latest development version of OpenSubdiv, otherwise threaded evaluation wouldn't work at all. |
April 25, 2014, 13:02 (GMT) |
Support edge evaluation for triangles and ngons Still gives issues for NGons and also it's something strange going on when applying modifier on the triangle. Triangles seems to be looking all fine for until the modifier is applied on the mesh, but ngons still needs some investigation. Also, just understood that old SS code did something special with triangles, it didn't handle triangles in the same way as NGons. The thing is, treating triangles as ngons makes them looking as if some crease is being applied on the corners. Would need to write some special case for this in opensubdiv case. |
April 25, 2014, 11:37 (GMT) |
Moving towards support of NGons and triangles It's done by creating a per-corner faces in OpenSubdiv and interpolating them directly into CCG. Grids interpolation by itself is done, but no edges are being interpolated at this moment. Also current way of creating "fake" per-corner faces subdivides edges for every original face, which means mesh would loose manifold when having two adjacent tris or ngons. At least nothing crashes at this point so don't see a reason why not to consider this is a milestone. |
April 25, 2014, 11:37 (GMT) |
Code cleanup: reshuffle some code into helper functions Makes it overall code flow easier to follow. |
April 25, 2014, 11:37 (GMT) |
Made quads fully working now Still a bit hackish and unclean, but that's rather good starting point before moving to tris/n-gons support. - Fixed face-to-corner u/v mapping which was wrong for some cases. - Made it so edges are getting nicely evaluated. |
April 25, 2014, 11:37 (GMT) |
Fix compilation error with the current OpenSubdiv repository |
April 25, 2014, 11:37 (GMT) |
Initial integration of OpenSubdiv into Subsurf modifier Summary: This commit is an initial implementation of subsurf modifier using OpenSubdiv instead of our older CC. This doesn't change data layout and only uses OpsnSubdiv evaluation API to get coordinates and values for grid elements. Main changes: - Tweaked build systems to add flag to build with OSD. - Added C-API for opensubdiv, so it might be used from blender kernel. - Subsurf evaluation is hacked in into CCGSubSurf. TODO: - Clean up all the WIP code, make it more clear separation between legacy CCGSubSurf code and new one based on OSD evaluation. - Edges are not evaluating currently at all. - UVs subdivision currently would lead to incorrect memory usage. - Subdivision happens in a single thread. - Loose edges are not supported. - Only quads does work now, need to support triangles and N-gons. Only committing this to share via developer.b.o with other developers who are interested. Reviewers: brecht Differential Revision: https://developer.blender.org/D56 |
April 25, 2014, 11:37 (GMT) |
Major refactor of the current state of the patch - Using new OpenSubdiv C-API from the Dirk's patch D132 - Split ccgSubSurf__syncOpenSubdiv into set of smaller functions. - Drop intern/opensubdiv, it needs to be ported to current OpenSubdiv code anyway and currently not really needed. - Use smarter detection of OpenSubdiv libraries since now we're not only using osdCPU library. |
|