diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-11-28 03:13:32 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2013-11-28 05:11:42 +0400 |
commit | 731ffd3cd4c1d578fb02d39dc512bace850c2e8b (patch) | |
tree | 63cced11229d028a2d8a7e5b6c9600e4e0fa6351 /intern/cycles/blender/blender_mesh.cpp | |
parent | af7a2a3b6a08bdbe99d295e593e770af165eb0e6 (diff) |
Cycles: remove approximate subdivision surface with gregory patches code.
It was never fully implemented and will be replaced by OpenSubdiv. Only linear
subdivision remains now. Also includes some refactoring in the split/dice code,
adding a SubdParams struct to pass around parameters more easily.
Diffstat (limited to 'intern/cycles/blender/blender_mesh.cpp')
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index e42af60c27b..45ec92a7961 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -365,7 +365,7 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< } } -static void create_subd_mesh(Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, const vector<uint>& used_shaders) +static void create_subd_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, const vector<uint>& used_shaders) { /* create subd mesh */ SubdMesh sdmesh; @@ -386,21 +386,20 @@ static void create_subd_mesh(Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, con if(n == 4) sdmesh.add_face(vi[0], vi[1], vi[2], vi[3]); -#if 0 else sdmesh.add_face(vi[0], vi[1], vi[2]); -#endif } /* finalize subd mesh */ - sdmesh.link_boundary(); + sdmesh.finish(); - /* subdivide */ - DiagSplit dsplit; - dsplit.camera = NULL; - dsplit.dicing_rate = RNA_float_get(cmesh, "dicing_rate"); + SubdParams sdparams(mesh, used_shaders[0], true); + sdparams.dicing_rate = RNA_float_get(cmesh, "dicing_rate"); + //scene->camera->update(); + //sdparams.camera = scene->camera; - sdmesh.tessellate(&dsplit, false, mesh, used_shaders[0], true); + DiagSplit dsplit(sdparams);; + sdmesh.tessellate(&dsplit); } /* Sync */ @@ -482,7 +481,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated, bool hide_tri if(b_mesh) { if(render_layer.use_surfaces && !hide_tris) { if(cmesh.data && experimental && RNA_boolean_get(&cmesh, "use_subdivision")) - create_subd_mesh(mesh, b_mesh, &cmesh, used_shaders); + create_subd_mesh(scene, mesh, b_mesh, &cmesh, used_shaders); else create_mesh(scene, mesh, b_mesh, used_shaders); } |