[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58293] branches/soc-2013-cycles_mblur/ intern/cycles/render: I added one parameter, numsteps, to functions inside Attribute that

Gavin Howard gavin.d.howard at gmail.com
Tue Jul 16 00:33:10 CEST 2013


Revision: 58293
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58293
Author:   gdh
Date:     2013-07-15 22:33:09 +0000 (Mon, 15 Jul 2013)
Log Message:
-----------
I added one parameter, numsteps, to functions inside Attribute that 
figure out the size that needs to be allocated. This numsteps is the 
number of steps that have been exported for motion.

Modified Paths:
--------------
    branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp
    branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h
    branches/soc-2013-cycles_mblur/intern/cycles/render/mesh.cpp

Modified: branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp
===================================================================
--- branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp	2013-07-15 22:08:38 UTC (rev 58292)
+++ branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp	2013-07-15 22:33:09 UTC (rev 58293)
@@ -39,9 +39,9 @@
 		type == TypeDesc::TypeNormal);
 }
 
-void Attribute::reserve(int numverts, int numtris, int numcurves, int numkeys)
+void Attribute::reserve(int numverts, int numtris, int numsteps, int numcurves, int numkeys)
 {
-	buffer.resize(buffer_size(numverts, numtris, numcurves, numkeys), 0);
+	buffer.resize(buffer_size(numverts, numtris, numsteps, numcurves, numkeys), 0);
 }
 
 void Attribute::add(const float& f)
@@ -70,7 +70,7 @@
 		return sizeof(float3);
 }
 
-size_t Attribute::element_size(int numverts, int numtris, int numcurves, int numkeys) const
+size_t Attribute::element_size(int numverts, int numtris, int numsteps, int numcurves, int numkeys) const
 {
 	size_t size;
 	
@@ -81,6 +81,9 @@
 		case ATTR_ELEMENT_VERTEX:
 			size = numverts;
 			break;
+		case ATTR_ELEMENT_VERTEX_BLOCK:
+			size = numverts * numsteps;
+			break;
 		case ATTR_ELEMENT_FACE:
 			size = numtris;
 			break;
@@ -101,9 +104,9 @@
 	return size;
 }
 
-size_t Attribute::buffer_size(int numverts, int numtris, int numcurves, int numkeys) const
+size_t Attribute::buffer_size(int numverts, int numtris, int numsteps, int numcurves, int numkeys) const
 {
-	return element_size(numverts, numtris, numcurves, numkeys)*data_sizeof();
+	return element_size(numverts, numtris, numsteps, numcurves, numkeys)*data_sizeof();
 }
 
 bool Attribute::same_storage(TypeDesc a, TypeDesc b)
@@ -189,9 +192,9 @@
 	
 	/* this is weak .. */
 	if(triangle_mesh)
-		attr->reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), 0, 0);
+		attr->reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0);
 	if(curve_mesh)
-		attr->reserve(0, 0, curve_mesh->curves.size(), curve_mesh->curve_keys.size());
+		attr->reserve(0, 0, 0, curve_mesh->curves.size(), curve_mesh->curve_keys.size());
 	
 	return attr;
 }
@@ -336,9 +339,9 @@
 {
 	foreach(Attribute& attr, attributes) {
 		if(triangle_mesh)
-			attr.reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), 0, 0);
+			attr.reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0);
 		if(curve_mesh)
-			attr.reserve(0, 0, curve_mesh->curves.size(), curve_mesh->curve_keys.size());
+			attr.reserve(0, 0, 0, curve_mesh->curves.size(), curve_mesh->curve_keys.size());
 	}
 }
 

Modified: branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h
===================================================================
--- branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h	2013-07-15 22:08:38 UTC (rev 58292)
+++ branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h	2013-07-15 22:33:09 UTC (rev 58293)
@@ -50,11 +50,11 @@
 
 	Attribute() {}
 	void set(ustring name, TypeDesc type, AttributeElement element);
-	void reserve(int numverts, int numfaces, int numcurves, int numkeys);
+	void reserve(int numverts, int numfaces, int numsteps, int numcurves, int numkeys);
 
 	size_t data_sizeof() const;
-	size_t element_size(int numverts, int numfaces, int numcurves, int numkeys) const;
-	size_t buffer_size(int numverts, int numfaces, int numcurves, int numkeys) const;
+	size_t element_size(int numverts, int numfaces, int numsteps, int numcurves, int numkeys) const;
+	size_t buffer_size(int numverts, int numfaces, int numsteps, int numcurves, int numkeys) const;
 
 	char *data() { return (buffer.size())? &buffer[0]: NULL; };
 	float3 *data_float3() { return (float3*)data(); }

Modified: branches/soc-2013-cycles_mblur/intern/cycles/render/mesh.cpp
===================================================================
--- branches/soc-2013-cycles_mblur/intern/cycles/render/mesh.cpp	2013-07-15 22:08:38 UTC (rev 58292)
+++ branches/soc-2013-cycles_mblur/intern/cycles/render/mesh.cpp	2013-07-15 22:33:09 UTC (rev 58293)
@@ -634,6 +634,7 @@
 		size_t size = mattr->element_size(
 			mesh->verts.size(),
 			mesh->triangles.size(),
+			mesh->mblur_steps,
 			mesh->curves.size(),
 			mesh->curve_keys.size());
 




More information about the Bf-blender-cvs mailing list