From 731ffd3cd4c1d578fb02d39dc512bace850c2e8b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 28 Nov 2013 00:13:32 +0100 Subject: 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. --- intern/cycles/blender/blender_mesh.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'intern/cycles/blender/blender_mesh.cpp') 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& used_shaders) +static void create_subd_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, const vector& 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); } -- cgit v1.2.3