[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58749] branches/soc-2013-cycles_mblur/ intern/cycles/render: This commit finishes export.
Gavin Howard
gavin.d.howard at gmail.com
Wed Jul 31 01:34:53 CEST 2013
Revision: 58749
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58749
Author: gdh
Date: 2013-07-30 23:34:52 +0000 (Tue, 30 Jul 2013)
Log Message:
-----------
This commit finishes export.
The problem I was having before is that I was expecting the buffer to be
expanded in capacity, not in size. I added code that allows me to choose
between the two if necessary.
After this commit, export is fully working.
Modified Paths:
--------------
branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp
branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h
Modified: branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp
===================================================================
--- branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp 2013-07-30 20:33:17 UTC (rev 58748)
+++ branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.cpp 2013-07-30 23:34:52 UTC (rev 58749)
@@ -39,9 +39,14 @@
type == TypeDesc::TypeNormal);
}
-void Attribute::reserve(int numverts, int numtris, int numsteps, int numcurves, int numkeys)
+void Attribute::reserve(int numverts, int numtris, int numsteps, int numcurves, int numkeys, bool resize)
{
- buffer.resize(buffer_size(numverts, numtris, numsteps, numcurves, numkeys), 0);
+ if (resize) {
+ buffer.resize(buffer_size(numverts, numtris, numsteps, numcurves, numkeys), 0);
+ }
+ else {
+ buffer.reserve(buffer_size(numverts, numtris, numsteps, numcurves, numkeys));
+ }
}
void Attribute::add(const float& f)
@@ -172,7 +177,7 @@
{
}
-Attribute *AttributeSet::add(ustring name, TypeDesc type, AttributeElement element)
+Attribute *AttributeSet::add(ustring name, TypeDesc type, AttributeElement element, bool resize)
{
Attribute *attr = find(name);
@@ -192,9 +197,9 @@
/* this is weak .. */
if(triangle_mesh)
- attr->reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0);
+ attr->reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0, resize);
if(curve_mesh)
- attr->reserve(0, 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(), resize);
return attr;
}
@@ -234,37 +239,37 @@
if(triangle_mesh) {
switch(std) {
case ATTR_STD_VERTEX_NORMAL:
- attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_FACE_NORMAL:
- attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE);
+ attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE, true);
break;
case ATTR_STD_UV:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CORNER);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CORNER, true);
break;
case ATTR_STD_UV_TANGENT:
- attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
+ attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER, true);
break;
case ATTR_STD_UV_TANGENT_SIGN:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER, true);
break;
case ATTR_STD_GENERATED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_POSITION_UNDEFORMED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_POSITION_UNDISPLACED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_MOTION_PRE:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_MOTION_POST:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX, true);
break;
case ATTR_STD_DMOTION:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX_STEPS);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX_STEPS, false);
break;
default:
assert(0);
@@ -274,22 +279,22 @@
else if(curve_mesh) {
switch(std) {
case ATTR_STD_UV:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE, true);
break;
case ATTR_STD_GENERATED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE, true);
break;
case ATTR_STD_MOTION_PRE:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY, true);
break;
case ATTR_STD_MOTION_POST:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY);
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY, true);
break;
case ATTR_STD_CURVE_TANGENT:
- attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CURVE_KEY);
+ attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CURVE_KEY, true);
break;
case ATTR_STD_CURVE_INTERCEPT:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY);
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY, true);
break;
default:
assert(0);
@@ -339,9 +344,9 @@
{
foreach(Attribute& attr, attributes) {
if(triangle_mesh)
- attr.reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0);
+ attr.reserve(triangle_mesh->verts.size(), triangle_mesh->triangles.size(), triangle_mesh->mblur_steps, 0, 0, true);
if(curve_mesh)
- attr.reserve(0, 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(), true);
}
}
Modified: branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h
===================================================================
--- branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h 2013-07-30 20:33:17 UTC (rev 58748)
+++ branches/soc-2013-cycles_mblur/intern/cycles/render/attribute.h 2013-07-30 23:34:52 UTC (rev 58749)
@@ -50,7 +50,7 @@
Attribute() {}
void set(ustring name, TypeDesc type, AttributeElement element);
- void reserve(int numverts, int numfaces, int numsteps, int numcurves, int numkeys);
+ void reserve(int numverts, int numfaces, int numsteps, int numcurves, int numkeys, bool resize);
size_t data_sizeof() const;
size_t element_size(int numverts, int numfaces, int numsteps, int numcurves, int numkeys) const;
@@ -84,7 +84,7 @@
AttributeSet();
~AttributeSet();
- Attribute *add(ustring name, TypeDesc type, AttributeElement element);
+ Attribute *add(ustring name, TypeDesc type, AttributeElement element, bool resize = true);
Attribute *find(ustring name) const;
void remove(ustring name);
More information about the Bf-blender-cvs
mailing list