From c96ae81160ad1a943fafaca44a7d5e97c2d7a0d7 Mon Sep 17 00:00:00 2001 From: Mai Lavelle Date: Sat, 16 Jul 2016 19:42:28 -0400 Subject: Cycles microdisplacement: ngons and attributes for subdivision meshes This adds support for ngons and attributes on subdivision meshes. Ngons are needed for proper attribute interpolation as well as correct Catmull-Clark subdivision. Several changes are made to achieve this: - new primitive `SubdFace` added to `Mesh` - 3 more textures are used to store info on patches from subd meshes - Blender export uses loop interface instead of tessface for subd meshes - `Attribute` class is updated with a simplified way to pass primitive counts around and to support ngons. - extra points for ngons are generated for O(1) attribute interpolation - curves are temporally disabled on subd meshes to avoid various bugs with implementation - old unneeded code is removed from `subd/` - various fixes and improvements Reviewed By: brecht Differential Revision: https://developer.blender.org/D2108 --- intern/cycles/app/cycles_xml.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'intern/cycles/app/cycles_xml.cpp') diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp index 3aca46e2dc7..3d3aca33881 100644 --- a/intern/cycles/app/cycles_xml.cpp +++ b/intern/cycles/app/cycles_xml.cpp @@ -35,7 +35,6 @@ #include "shader.h" #include "scene.h" -#include "subd_mesh.h" #include "subd_patch.h" #include "subd_split.h" @@ -417,6 +416,7 @@ static void xml_read_mesh(const XMLReadState& state, pugi::xml_node node) xml_read_int_array(verts, node, "verts"); xml_read_int_array(nverts, node, "nverts"); +#if 0 if(xml_equal_string(node, "subdivision", "catmull-clark")) { /* create subd mesh */ SubdMesh sdmesh; @@ -460,7 +460,9 @@ static void xml_read_mesh(const XMLReadState& state, pugi::xml_node node) DiagSplit dsplit(sdparams); sdmesh.tessellate(&dsplit); } - else { + else +#endif + { /* create vertices */ mesh->verts = P; @@ -568,7 +570,7 @@ static void xml_read_patch(const XMLReadState& state, pugi::xml_node node) mesh->used_shaders.push_back(state.shader); /* split */ - SubdParams sdparams(mesh, 0, state.smooth); + SubdParams sdparams(mesh); xml_read_float(&sdparams.dicing_rate, node, "dicing_rate"); DiagSplit dsplit(sdparams); -- cgit v1.2.3