Added a bunch of additional particle state attributes to the Cycles particle info...
[blender.git] / intern / cycles / blender / blender_mesh.cpp
index f77e6551de011badebd8fc542b1597b6052cd535..16e4ceded89bfa7d0f29be860d32352617388d38 100644 (file)
@@ -46,7 +46,7 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector<
        float3 *N = attr_N->data_float3();
 
        for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end(); ++v, ++N)
-               *N= get_float3(v->normal());
+               *N = get_float3(v->normal());
 
        /* create faces */
        BL::Mesh::tessfaces_iterator f;
@@ -68,8 +68,8 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector<
        }
 
        /* create generated coordinates. todo: we should actually get the orco
-          coordinates from modifiers, for now we use texspace loc/size which
-          is available in the api. */
+        * coordinates from modifiers, for now we use texspace loc/size which
+        * is available in the api. */
        if(mesh->need_attribute(scene, ATTR_STD_GENERATED)) {
                Attribute *attr = mesh->attributes.add(ATTR_STD_GENERATED);
                float3 loc = get_float3(b_mesh.texspace_location());
@@ -82,7 +82,6 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector<
                loc = loc*size - make_float3(0.5f, 0.5f, 0.5f);
 
                float3 *fdata = attr->data_float3();
-               BL::Mesh::vertices_iterator v;
                size_t i = 0;
 
                for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end(); ++v)
@@ -176,13 +175,15 @@ static void create_subd_mesh(Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, con
 
        for(b_mesh.tessfaces.begin(f); f != b_mesh.tessfaces.end(); ++f) {
                int4 vi = get_int4(f->vertices_raw());
-               int n= (vi[3] == 0)? 3: 4;
+               int n = (vi[3] == 0) ? 3: 4;
                //int shader = used_shaders[f->material_index()];
 
                if(n == 4)
                        sdmesh.add_face(vi[0], vi[1], vi[2], vi[3]);
-               /*else
-                       sdmesh.add_face(vi[0], vi[1], vi[2]);*/
+#if 0
+               else
+                       sdmesh.add_face(vi[0], vi[1], vi[2]);
+#endif
        }
 
        /* finalize subd mesh */
@@ -198,11 +199,11 @@ static void create_subd_mesh(Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, con
 
 /* Sync */
 
-Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated)
+Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated)
 {
        /* test if we can instance or if the object is modified */
        BL::ID b_ob_data = b_ob.data();
-       BL::ID key = (object_is_modified(b_ob) || holdout)? b_ob: b_ob_data;
+       BL::ID key = (BKE_object_is_modified(b_ob))? b_ob: b_ob_data;
        BL::Material material_override = render_layer.material_override;
 
        /* find shader indices */
@@ -210,20 +211,14 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated)
 
        BL::Object::material_slots_iterator slot;
        for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot) {
-               BL::Material material_override = render_layer.material_override;
-
-               if(holdout)
-                       find_shader(PointerRNA_NULL, used_shaders, scene->default_holdout);
-               else if(material_override)
+               if(material_override)
                        find_shader(material_override, used_shaders, scene->default_surface);
                else
                        find_shader(slot->material(), used_shaders, scene->default_surface);
        }
 
        if(used_shaders.size() == 0) {
-               if(holdout)
-                       used_shaders.push_back(scene->default_holdout);
-               else if(material_override)
+               if(material_override)
                        find_shader(material_override, used_shaders, scene->default_surface);
                else
                        used_shaders.push_back(scene->default_surface);
@@ -236,7 +231,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated)
                /* if transform was applied to mesh, need full update */
                if(object_updated && mesh->transform_applied);
                /* test if shaders changed, these can be object level so mesh
-                  does not get tagged for recalc */
+                * does not get tagged for recalc */
                else if(mesh->used_shaders != used_shaders);
                else {
                        /* even if not tagged for recalc, we may need to sync anyway
@@ -308,12 +303,11 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool holdout, bool object_updated)
 void BlenderSync::sync_mesh_motion(BL::Object b_ob, Mesh *mesh, int motion)
 {
        /* todo: displacement, subdivision */
-       BL::ID b_ob_data = b_ob.data();
        size_t size = mesh->verts.size();
 
        /* skip objects without deforming modifiers. this is not a totally reliable,
         * would need a more extensive check to see which objects are animated */
-       if(!size || !ccl::object_is_deform_modified(b_ob, b_scene, preview))
+       if(!size || !ccl::BKE_object_is_deform_modified(b_ob, b_scene, preview))
                return;
 
        /* get derived mesh */
@@ -324,7 +318,7 @@ void BlenderSync::sync_mesh_motion(BL::Object b_ob, Mesh *mesh, int motion)
                AttributeStandard std = (motion == -1)? ATTR_STD_MOTION_PRE: ATTR_STD_MOTION_POST;
                Attribute *attr_M = mesh->attributes.add(std);
                float3 *M = attr_M->data_float3();
-               size_t i = 0, size = mesh->verts.size();
+               size_t i = 0;
 
                for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end() && i < size; ++v, M++, i++)
                        *M = get_float3(v->co());