[Bf-blender-cvs] [edd8899] temp-cycles-microdisplacement: Fix pointiness attribute not getting stored for subdivision meshes

Mai Lavelle noreply at git.blender.org
Mon Apr 18 15:07:37 CEST 2016


Commit: edd8899abca678fc5294ee470702312d1521bafd
Author: Mai Lavelle
Date:   Sat Apr 16 13:58:02 2016 -0400
Branches: temp-cycles-microdisplacement
https://developer.blender.org/rBedd8899abca678fc5294ee470702312d1521bafd

Fix pointiness attribute not getting stored for subdivision meshes

===================================================================

M	intern/cycles/blender/blender_mesh.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index e427463..8a9aa54 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -508,11 +508,12 @@ static void attr_create_uv_map(Scene *scene,
 /* Create vertex pointiness attributes. */
 static void attr_create_pointiness(Scene *scene,
                                    Mesh *mesh,
-                                   BL::Mesh& b_mesh)
+                                   BL::Mesh& b_mesh,
+                                   bool subdivision)
 {
 	if(mesh->need_attribute(scene, ATTR_STD_POINTINESS)) {
 		const int numverts = b_mesh.vertices.length();
-		Attribute *attr = mesh->attributes.add(ATTR_STD_POINTINESS);
+		Attribute *attr = (subdivision? mesh->subd_attributes: mesh->attributes).add(ATTR_STD_POINTINESS);
 		float *data = attr->data_float();
 		int *counter = new int[numverts];
 		float *raw_data = new float[numverts];
@@ -625,7 +626,7 @@ static void create_mesh(Scene *scene,
 	}
 
 	/* Create needed vertex attributes. */
-	attr_create_pointiness(scene, mesh, b_mesh);
+	attr_create_pointiness(scene, mesh, b_mesh, subdivision);
 
 	/* create faces */
 	vector<int> nverts(numfaces);




More information about the Bf-blender-cvs mailing list