Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2013-11-28 03:13:32 +0400
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2013-11-28 05:11:42 +0400
commit731ffd3cd4c1d578fb02d39dc512bace850c2e8b (patch)
tree63cced11229d028a2d8a7e5b6c9600e4e0fa6351 /intern/cycles/blender/blender_mesh.cpp
parentaf7a2a3b6a08bdbe99d295e593e770af165eb0e6 (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.cpp19
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);
}