Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /intern/cycles/render/attribute.cpp
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'intern/cycles/render/attribute.cpp')
-rw-r--r--intern/cycles/render/attribute.cpp969
1 files changed, 482 insertions, 487 deletions
diff --git a/intern/cycles/render/attribute.cpp b/intern/cycles/render/attribute.cpp
index f7788b6a490..dad6cb4fe6d 100644
--- a/intern/cycles/render/attribute.cpp
+++ b/intern/cycles/render/attribute.cpp
@@ -27,319 +27,316 @@ CCL_NAMESPACE_BEGIN
Attribute::~Attribute()
{
- /* for voxel data, we need to remove the image from the image manager */
- if(element == ATTR_ELEMENT_VOXEL) {
- VoxelAttribute *voxel_data = data_voxel();
+ /* for voxel data, we need to remove the image from the image manager */
+ if (element == ATTR_ELEMENT_VOXEL) {
+ VoxelAttribute *voxel_data = data_voxel();
- if(voxel_data && voxel_data->slot != -1) {
- voxel_data->manager->remove_image(voxel_data->slot);
- }
- }
+ if (voxel_data && voxel_data->slot != -1) {
+ voxel_data->manager->remove_image(voxel_data->slot);
+ }
+ }
}
void Attribute::set(ustring name_, TypeDesc type_, AttributeElement element_)
{
- name = name_;
- type = type_;
- element = element_;
- std = ATTR_STD_NONE;
- flags = 0;
+ name = name_;
+ type = type_;
+ element = element_;
+ std = ATTR_STD_NONE;
+ flags = 0;
- /* string and matrix not supported! */
- assert(type == TypeDesc::TypeFloat || type == TypeDesc::TypeColor ||
- type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
- type == TypeDesc::TypeNormal || type == TypeDesc::TypeMatrix ||
- type == TypeFloat2);
+ /* string and matrix not supported! */
+ assert(type == TypeDesc::TypeFloat || type == TypeDesc::TypeColor ||
+ type == TypeDesc::TypePoint || type == TypeDesc::TypeVector ||
+ type == TypeDesc::TypeNormal || type == TypeDesc::TypeMatrix || type == TypeFloat2);
}
void Attribute::resize(Mesh *mesh, AttributePrimitive prim, bool reserve_only)
{
- if(reserve_only) {
- buffer.reserve(buffer_size(mesh, prim));
- }
- else {
- buffer.resize(buffer_size(mesh, prim), 0);
- }
+ if (reserve_only) {
+ buffer.reserve(buffer_size(mesh, prim));
+ }
+ else {
+ buffer.resize(buffer_size(mesh, prim), 0);
+ }
}
void Attribute::resize(size_t num_elements)
{
- buffer.resize(num_elements * data_sizeof(), 0);
+ buffer.resize(num_elements * data_sizeof(), 0);
}
-void Attribute::add(const float& f)
+void Attribute::add(const float &f)
{
- assert(data_sizeof() == sizeof(float));
+ assert(data_sizeof() == sizeof(float));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
-void Attribute::add(const uchar4& f)
+void Attribute::add(const uchar4 &f)
{
- assert(data_sizeof() == sizeof(uchar4));
+ assert(data_sizeof() == sizeof(uchar4));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
-void Attribute::add(const float2& f)
+void Attribute::add(const float2 &f)
{
- assert(data_sizeof() == sizeof(float2));
+ assert(data_sizeof() == sizeof(float2));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
-void Attribute::add(const float3& f)
+void Attribute::add(const float3 &f)
{
- assert(data_sizeof() == sizeof(float3));
+ assert(data_sizeof() == sizeof(float3));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
-void Attribute::add(const Transform& f)
+void Attribute::add(const Transform &f)
{
- assert(data_sizeof() == sizeof(Transform));
+ assert(data_sizeof() == sizeof(Transform));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
-void Attribute::add(const VoxelAttribute& f)
+void Attribute::add(const VoxelAttribute &f)
{
- assert(data_sizeof() == sizeof(VoxelAttribute));
+ assert(data_sizeof() == sizeof(VoxelAttribute));
- char *data = (char*)&f;
- size_t size = sizeof(f);
+ char *data = (char *)&f;
+ size_t size = sizeof(f);
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
void Attribute::add(const char *data)
{
- size_t size = data_sizeof();
+ size_t size = data_sizeof();
- for(size_t i = 0; i < size; i++)
- buffer.push_back(data[i]);
+ for (size_t i = 0; i < size; i++)
+ buffer.push_back(data[i]);
}
size_t Attribute::data_sizeof() const
{
- if(element == ATTR_ELEMENT_VOXEL)
- return sizeof(VoxelAttribute);
- else if(element == ATTR_ELEMENT_CORNER_BYTE)
- return sizeof(uchar4);
- else if(type == TypeDesc::TypeFloat)
- return sizeof(float);
- else if(type == TypeFloat2)
- return sizeof(float2);
- else if(type == TypeDesc::TypeMatrix)
- return sizeof(Transform);
- else
- return sizeof(float3);
+ if (element == ATTR_ELEMENT_VOXEL)
+ return sizeof(VoxelAttribute);
+ else if (element == ATTR_ELEMENT_CORNER_BYTE)
+ return sizeof(uchar4);
+ else if (type == TypeDesc::TypeFloat)
+ return sizeof(float);
+ else if (type == TypeFloat2)
+ return sizeof(float2);
+ else if (type == TypeDesc::TypeMatrix)
+ return sizeof(Transform);
+ else
+ return sizeof(float3);
}
size_t Attribute::element_size(Mesh *mesh, AttributePrimitive prim) const
{
- if(flags & ATTR_FINAL_SIZE) {
- return buffer.size() / data_sizeof();
- }
-
- size_t size;
-
- switch(element) {
- case ATTR_ELEMENT_OBJECT:
- case ATTR_ELEMENT_MESH:
- case ATTR_ELEMENT_VOXEL:
- size = 1;
- break;
- case ATTR_ELEMENT_VERTEX:
- size = mesh->verts.size() + mesh->num_ngons;
- if(prim == ATTR_PRIM_SUBD) {
- size -= mesh->num_subd_verts;
- }
- break;
- case ATTR_ELEMENT_VERTEX_MOTION:
- size = (mesh->verts.size() + mesh->num_ngons) * (mesh->motion_steps - 1);
- if(prim == ATTR_PRIM_SUBD) {
- size -= mesh->num_subd_verts * (mesh->motion_steps - 1);
- }
- break;
- case ATTR_ELEMENT_FACE:
- if(prim == ATTR_PRIM_TRIANGLE) {
- size = mesh->num_triangles();
- }
- else {
- size = mesh->subd_faces.size() + mesh->num_ngons;
- }
- break;
- case ATTR_ELEMENT_CORNER:
- case ATTR_ELEMENT_CORNER_BYTE:
- if(prim == ATTR_PRIM_TRIANGLE) {
- size = mesh->num_triangles()*3;
- }
- else {
- size = mesh->subd_face_corners.size() + mesh->num_ngons;
- }
- break;
- case ATTR_ELEMENT_CURVE:
- size = mesh->num_curves();
- break;
- case ATTR_ELEMENT_CURVE_KEY:
- size = mesh->curve_keys.size();
- break;
- case ATTR_ELEMENT_CURVE_KEY_MOTION:
- size = mesh->curve_keys.size() * (mesh->motion_steps - 1);
- break;
- default:
- size = 0;
- break;
- }
-
- return size;
+ if (flags & ATTR_FINAL_SIZE) {
+ return buffer.size() / data_sizeof();
+ }
+
+ size_t size;
+
+ switch (element) {
+ case ATTR_ELEMENT_OBJECT:
+ case ATTR_ELEMENT_MESH:
+ case ATTR_ELEMENT_VOXEL:
+ size = 1;
+ break;
+ case ATTR_ELEMENT_VERTEX:
+ size = mesh->verts.size() + mesh->num_ngons;
+ if (prim == ATTR_PRIM_SUBD) {
+ size -= mesh->num_subd_verts;
+ }
+ break;
+ case ATTR_ELEMENT_VERTEX_MOTION:
+ size = (mesh->verts.size() + mesh->num_ngons) * (mesh->motion_steps - 1);
+ if (prim == ATTR_PRIM_SUBD) {
+ size -= mesh->num_subd_verts * (mesh->motion_steps - 1);
+ }
+ break;
+ case ATTR_ELEMENT_FACE:
+ if (prim == ATTR_PRIM_TRIANGLE) {
+ size = mesh->num_triangles();
+ }
+ else {
+ size = mesh->subd_faces.size() + mesh->num_ngons;
+ }
+ break;
+ case ATTR_ELEMENT_CORNER:
+ case ATTR_ELEMENT_CORNER_BYTE:
+ if (prim == ATTR_PRIM_TRIANGLE) {
+ size = mesh->num_triangles() * 3;
+ }
+ else {
+ size = mesh->subd_face_corners.size() + mesh->num_ngons;
+ }
+ break;
+ case ATTR_ELEMENT_CURVE:
+ size = mesh->num_curves();
+ break;
+ case ATTR_ELEMENT_CURVE_KEY:
+ size = mesh->curve_keys.size();
+ break;
+ case ATTR_ELEMENT_CURVE_KEY_MOTION:
+ size = mesh->curve_keys.size() * (mesh->motion_steps - 1);
+ break;
+ default:
+ size = 0;
+ break;
+ }
+
+ return size;
}
size_t Attribute::buffer_size(Mesh *mesh, AttributePrimitive prim) const
{
- return element_size(mesh, prim)*data_sizeof();
+ return element_size(mesh, prim) * data_sizeof();
}
bool Attribute::same_storage(TypeDesc a, TypeDesc b)
{
- if(a == b)
- return true;
+ if (a == b)
+ return true;
- if(a == TypeDesc::TypeColor || a == TypeDesc::TypePoint ||
- a == TypeDesc::TypeVector || a == TypeDesc::TypeNormal)
- {
- if(b == TypeDesc::TypeColor || b == TypeDesc::TypePoint ||
- b == TypeDesc::TypeVector || b == TypeDesc::TypeNormal)
- {
- return true;
- }
- }
- return false;
+ if (a == TypeDesc::TypeColor || a == TypeDesc::TypePoint || a == TypeDesc::TypeVector ||
+ a == TypeDesc::TypeNormal) {
+ if (b == TypeDesc::TypeColor || b == TypeDesc::TypePoint || b == TypeDesc::TypeVector ||
+ b == TypeDesc::TypeNormal) {
+ return true;
+ }
+ }
+ return false;
}
-void Attribute::zero_data(void* dst)
+void Attribute::zero_data(void *dst)
{
- memset(dst, 0, data_sizeof());
+ memset(dst, 0, data_sizeof());
}
-void Attribute::add_with_weight(void* dst, void* src, float weight)
+void Attribute::add_with_weight(void *dst, void *src, float weight)
{
- if(element == ATTR_ELEMENT_CORNER_BYTE) {
- for(int i = 0; i < 4; i++) {
- ((uchar*)dst)[i] += uchar(((uchar*)src)[i] * weight);
- }
- }
- else if(same_storage(type, TypeDesc::TypeFloat)) {
- *((float*)dst) += *((float*)src) * weight;
- }
- else if(same_storage(type, TypeDesc::TypeVector)) {
- *((float4*)dst) += *((float4*)src) * weight;
- }
- else {
- assert(!"not implemented for this type");
- }
+ if (element == ATTR_ELEMENT_CORNER_BYTE) {
+ for (int i = 0; i < 4; i++) {
+ ((uchar *)dst)[i] += uchar(((uchar *)src)[i] * weight);
+ }
+ }
+ else if (same_storage(type, TypeDesc::TypeFloat)) {
+ *((float *)dst) += *((float *)src) * weight;
+ }
+ else if (same_storage(type, TypeDesc::TypeVector)) {
+ *((float4 *)dst) += *((float4 *)src) * weight;
+ }
+ else {
+ assert(!"not implemented for this type");
+ }
}
const char *Attribute::standard_name(AttributeStandard std)
{
- switch(std) {
- case ATTR_STD_VERTEX_NORMAL:
- return "N";
- case ATTR_STD_FACE_NORMAL:
- return "Ng";
- case ATTR_STD_UV:
- return "uv";
- case ATTR_STD_GENERATED:
- return "generated";
- case ATTR_STD_GENERATED_TRANSFORM:
- return "generated_transform";
- case ATTR_STD_UV_TANGENT:
- return "tangent";
- case ATTR_STD_UV_TANGENT_SIGN:
- return "tangent_sign";
- case ATTR_STD_POSITION_UNDEFORMED:
- return "undeformed";
- case ATTR_STD_POSITION_UNDISPLACED:
- return "undisplaced";
- case ATTR_STD_MOTION_VERTEX_POSITION:
- return "motion_P";
- case ATTR_STD_MOTION_VERTEX_NORMAL:
- return "motion_N";
- case ATTR_STD_PARTICLE:
- return "particle";
- case ATTR_STD_CURVE_INTERCEPT:
- return "curve_intercept";
- case ATTR_STD_CURVE_RANDOM:
- return "curve_random";
- case ATTR_STD_PTEX_FACE_ID:
- return "ptex_face_id";
- case ATTR_STD_PTEX_UV:
- return "ptex_uv";
- case ATTR_STD_VOLUME_DENSITY:
- return "density";
- case ATTR_STD_VOLUME_COLOR:
- return "color";
- case ATTR_STD_VOLUME_FLAME:
- return "flame";
- case ATTR_STD_VOLUME_HEAT:
- return "heat";
- case ATTR_STD_VOLUME_TEMPERATURE:
- return "temperature";
- case ATTR_STD_VOLUME_VELOCITY:
- return "velocity";
- case ATTR_STD_POINTINESS:
- return "pointiness";
- case ATTR_STD_NOT_FOUND:
- case ATTR_STD_NONE:
- case ATTR_STD_NUM:
- return "";
- }
-
- return "";
+ switch (std) {
+ case ATTR_STD_VERTEX_NORMAL:
+ return "N";
+ case ATTR_STD_FACE_NORMAL:
+ return "Ng";
+ case ATTR_STD_UV:
+ return "uv";
+ case ATTR_STD_GENERATED:
+ return "generated";
+ case ATTR_STD_GENERATED_TRANSFORM:
+ return "generated_transform";
+ case ATTR_STD_UV_TANGENT:
+ return "tangent";
+ case ATTR_STD_UV_TANGENT_SIGN:
+ return "tangent_sign";
+ case ATTR_STD_POSITION_UNDEFORMED:
+ return "undeformed";
+ case ATTR_STD_POSITION_UNDISPLACED:
+ return "undisplaced";
+ case ATTR_STD_MOTION_VERTEX_POSITION:
+ return "motion_P";
+ case ATTR_STD_MOTION_VERTEX_NORMAL:
+ return "motion_N";
+ case ATTR_STD_PARTICLE:
+ return "particle";
+ case ATTR_STD_CURVE_INTERCEPT:
+ return "curve_intercept";
+ case ATTR_STD_CURVE_RANDOM:
+ return "curve_random";
+ case ATTR_STD_PTEX_FACE_ID:
+ return "ptex_face_id";
+ case ATTR_STD_PTEX_UV:
+ return "ptex_uv";
+ case ATTR_STD_VOLUME_DENSITY:
+ return "density";
+ case ATTR_STD_VOLUME_COLOR:
+ return "color";
+ case ATTR_STD_VOLUME_FLAME:
+ return "flame";
+ case ATTR_STD_VOLUME_HEAT:
+ return "heat";
+ case ATTR_STD_VOLUME_TEMPERATURE:
+ return "temperature";
+ case ATTR_STD_VOLUME_VELOCITY:
+ return "velocity";
+ case ATTR_STD_POINTINESS:
+ return "pointiness";
+ case ATTR_STD_NOT_FOUND:
+ case ATTR_STD_NONE:
+ case ATTR_STD_NUM:
+ return "";
+ }
+
+ return "";
}
AttributeStandard Attribute::name_standard(const char *name)
{
- if(name) {
- for(int std = ATTR_STD_NONE; std < ATTR_STD_NUM; std++) {
- if(strcmp(name, Attribute::standard_name((AttributeStandard)std)) == 0) {
- return (AttributeStandard)std;
- }
- }
- }
+ if (name) {
+ for (int std = ATTR_STD_NONE; std < ATTR_STD_NUM; std++) {
+ if (strcmp(name, Attribute::standard_name((AttributeStandard)std)) == 0) {
+ return (AttributeStandard)std;
+ }
+ }
+ }
- return ATTR_STD_NONE;
+ return ATTR_STD_NONE;
}
/* Attribute Set */
AttributeSet::AttributeSet()
{
- triangle_mesh = NULL;
- curve_mesh = NULL;
- subd_mesh = NULL;
+ triangle_mesh = NULL;
+ curve_mesh = NULL;
+ subd_mesh = NULL;
}
AttributeSet::~AttributeSet()
@@ -348,280 +345,280 @@ AttributeSet::~AttributeSet()
Attribute *AttributeSet::add(ustring name, TypeDesc type, AttributeElement element)
{
- Attribute *attr = find(name);
+ Attribute *attr = find(name);
- if(attr) {
- /* return if same already exists */
- if(attr->type == type && attr->element == element)
- return attr;
+ if (attr) {
+ /* return if same already exists */
+ if (attr->type == type && attr->element == element)
+ return attr;
- /* overwrite attribute with same name but different type/element */
- remove(name);
- }
+ /* overwrite attribute with same name but different type/element */
+ remove(name);
+ }
#if __cplusplus >= 201103L
- attributes.emplace_back();
- attr = &attributes.back();
- attr->set(name, type, element);
+ attributes.emplace_back();
+ attr = &attributes.back();
+ attr->set(name, type, element);
#else
- {
- Attribute attr_temp;
- attr_temp.set(name, type, element);
- attributes.push_back(attr_temp);
- attr = &attributes.back();
- }
+ {
+ Attribute attr_temp;
+ attr_temp.set(name, type, element);
+ attributes.push_back(attr_temp);
+ attr = &attributes.back();
+ }
#endif
- /* this is weak .. */
- if(triangle_mesh)
- attr->resize(triangle_mesh, ATTR_PRIM_TRIANGLE, false);
- if(curve_mesh)
- attr->resize(curve_mesh, ATTR_PRIM_CURVE, false);
- if(subd_mesh)
- attr->resize(subd_mesh, ATTR_PRIM_SUBD, false);
+ /* this is weak .. */
+ if (triangle_mesh)
+ attr->resize(triangle_mesh, ATTR_PRIM_TRIANGLE, false);
+ if (curve_mesh)
+ attr->resize(curve_mesh, ATTR_PRIM_CURVE, false);
+ if (subd_mesh)
+ attr->resize(subd_mesh, ATTR_PRIM_SUBD, false);
- return attr;
+ return attr;
}
Attribute *AttributeSet::find(ustring name) const
{
- foreach(const Attribute& attr, attributes)
- if(attr.name == name)
- return (Attribute*)&attr;
+ foreach (const Attribute &attr, attributes)
+ if (attr.name == name)
+ return (Attribute *)&attr;
- return NULL;
+ return NULL;
}
void AttributeSet::remove(ustring name)
{
- Attribute *attr = find(name);
+ Attribute *attr = find(name);
- if(attr) {
- list<Attribute>::iterator it;
+ if (attr) {
+ list<Attribute>::iterator it;
- for(it = attributes.begin(); it != attributes.end(); it++) {
- if(&*it == attr) {
- attributes.erase(it);
- return;
- }
- }
- }
+ for (it = attributes.begin(); it != attributes.end(); it++) {
+ if (&*it == attr) {
+ attributes.erase(it);
+ return;
+ }
+ }
+ }
}
Attribute *AttributeSet::add(AttributeStandard std, ustring name)
{
- Attribute *attr = NULL;
-
- if(name == ustring())
- name = Attribute::standard_name(std);
-
- if(triangle_mesh || subd_mesh) {
- switch(std) {
- case ATTR_STD_VERTEX_NORMAL:
- attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX);
- break;
- case ATTR_STD_FACE_NORMAL:
- attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE);
- break;
- case ATTR_STD_UV:
- attr = add(name, TypeFloat2, ATTR_ELEMENT_CORNER);
- break;
- case ATTR_STD_UV_TANGENT:
- attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
- break;
- case ATTR_STD_UV_TANGENT_SIGN:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
- break;
- case ATTR_STD_GENERATED:
- case ATTR_STD_POSITION_UNDEFORMED:
- case ATTR_STD_POSITION_UNDISPLACED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
- break;
- case ATTR_STD_MOTION_VERTEX_POSITION:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX_MOTION);
- break;
- case ATTR_STD_MOTION_VERTEX_NORMAL:
- attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX_MOTION);
- break;
- case ATTR_STD_PTEX_FACE_ID:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_FACE);
- break;
- case ATTR_STD_PTEX_UV:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
- break;
- case ATTR_STD_GENERATED_TRANSFORM:
- attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
- break;
- case ATTR_STD_VOLUME_DENSITY:
- case ATTR_STD_VOLUME_FLAME:
- case ATTR_STD_VOLUME_HEAT:
- case ATTR_STD_VOLUME_TEMPERATURE:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VOXEL);
- break;
- case ATTR_STD_VOLUME_COLOR:
- attr = add(name, TypeDesc::TypeColor, ATTR_ELEMENT_VOXEL);
- break;
- case ATTR_STD_VOLUME_VELOCITY:
- attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_VOXEL);
- break;
- case ATTR_STD_POINTINESS:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
- break;
- default:
- assert(0);
- break;
- }
- }
- else if(curve_mesh) {
- switch(std) {
- case ATTR_STD_UV:
- attr = add(name, TypeFloat2, ATTR_ELEMENT_CURVE);
- break;
- case ATTR_STD_GENERATED:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE);
- break;
- case ATTR_STD_MOTION_VERTEX_POSITION:
- attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY_MOTION);
- break;
- case ATTR_STD_CURVE_INTERCEPT:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY);
- break;
- case ATTR_STD_CURVE_RANDOM:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE);
- break;
- case ATTR_STD_GENERATED_TRANSFORM:
- attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
- break;
- case ATTR_STD_POINTINESS:
- attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
- break;
- default:
- assert(0);
- break;
- }
- }
-
- attr->std = std;
-
- return attr;
+ Attribute *attr = NULL;
+
+ if (name == ustring())
+ name = Attribute::standard_name(std);
+
+ if (triangle_mesh || subd_mesh) {
+ switch (std) {
+ case ATTR_STD_VERTEX_NORMAL:
+ attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX);
+ break;
+ case ATTR_STD_FACE_NORMAL:
+ attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_FACE);
+ break;
+ case ATTR_STD_UV:
+ attr = add(name, TypeFloat2, ATTR_ELEMENT_CORNER);
+ break;
+ case ATTR_STD_UV_TANGENT:
+ attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_CORNER);
+ break;
+ case ATTR_STD_UV_TANGENT_SIGN:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CORNER);
+ break;
+ case ATTR_STD_GENERATED:
+ case ATTR_STD_POSITION_UNDEFORMED:
+ case ATTR_STD_POSITION_UNDISPLACED:
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ break;
+ case ATTR_STD_MOTION_VERTEX_POSITION:
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX_MOTION);
+ break;
+ case ATTR_STD_MOTION_VERTEX_NORMAL:
+ attr = add(name, TypeDesc::TypeNormal, ATTR_ELEMENT_VERTEX_MOTION);
+ break;
+ case ATTR_STD_PTEX_FACE_ID:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_FACE);
+ break;
+ case ATTR_STD_PTEX_UV:
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_VERTEX);
+ break;
+ case ATTR_STD_GENERATED_TRANSFORM:
+ attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
+ break;
+ case ATTR_STD_VOLUME_DENSITY:
+ case ATTR_STD_VOLUME_FLAME:
+ case ATTR_STD_VOLUME_HEAT:
+ case ATTR_STD_VOLUME_TEMPERATURE:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VOXEL);
+ break;
+ case ATTR_STD_VOLUME_COLOR:
+ attr = add(name, TypeDesc::TypeColor, ATTR_ELEMENT_VOXEL);
+ break;
+ case ATTR_STD_VOLUME_VELOCITY:
+ attr = add(name, TypeDesc::TypeVector, ATTR_ELEMENT_VOXEL);
+ break;
+ case ATTR_STD_POINTINESS:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ }
+ else if (curve_mesh) {
+ switch (std) {
+ case ATTR_STD_UV:
+ attr = add(name, TypeFloat2, ATTR_ELEMENT_CURVE);
+ break;
+ case ATTR_STD_GENERATED:
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE);
+ break;
+ case ATTR_STD_MOTION_VERTEX_POSITION:
+ attr = add(name, TypeDesc::TypePoint, ATTR_ELEMENT_CURVE_KEY_MOTION);
+ break;
+ case ATTR_STD_CURVE_INTERCEPT:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE_KEY);
+ break;
+ case ATTR_STD_CURVE_RANDOM:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_CURVE);
+ break;
+ case ATTR_STD_GENERATED_TRANSFORM:
+ attr = add(name, TypeDesc::TypeMatrix, ATTR_ELEMENT_MESH);
+ break;
+ case ATTR_STD_POINTINESS:
+ attr = add(name, TypeDesc::TypeFloat, ATTR_ELEMENT_VERTEX);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ }
+
+ attr->std = std;
+
+ return attr;
}
Attribute *AttributeSet::find(AttributeStandard std) const
{
- foreach(const Attribute& attr, attributes)
- if(attr.std == std)
- return (Attribute*)&attr;
+ foreach (const Attribute &attr, attributes)
+ if (attr.std == std)
+ return (Attribute *)&attr;
- return NULL;
+ return NULL;
}
void AttributeSet::remove(AttributeStandard std)
{
- Attribute *attr = find(std);
+ Attribute *attr = find(std);
- if(attr) {
- list<Attribute>::iterator it;
+ if (attr) {
+ list<Attribute>::iterator it;
- for(it = attributes.begin(); it != attributes.end(); it++) {
- if(&*it == attr) {
- attributes.erase(it);
- return;
- }
- }
- }
+ for (it = attributes.begin(); it != attributes.end(); it++) {
+ if (&*it == attr) {
+ attributes.erase(it);
+ return;
+ }
+ }
+ }
}
-Attribute *AttributeSet::find(AttributeRequest& req)
+Attribute *AttributeSet::find(AttributeRequest &req)
{
- if(req.std == ATTR_STD_NONE)
- return find(req.name);
- else
- return find(req.std);
+ if (req.std == ATTR_STD_NONE)
+ return find(req.name);
+ else
+ return find(req.std);
}
void AttributeSet::remove(Attribute *attribute)
{
- if(attribute->std == ATTR_STD_NONE) {
- remove(attribute->name);
- }
- else {
- remove(attribute->std);
- }
+ if (attribute->std == ATTR_STD_NONE) {
+ remove(attribute->name);
+ }
+ else {
+ remove(attribute->std);
+ }
}
void AttributeSet::resize(bool reserve_only)
{
- foreach(Attribute& attr, attributes) {
- if(triangle_mesh)
- attr.resize(triangle_mesh, ATTR_PRIM_TRIANGLE, reserve_only);
- if(curve_mesh)
- attr.resize(curve_mesh, ATTR_PRIM_CURVE, reserve_only);
- if(subd_mesh)
- attr.resize(subd_mesh, ATTR_PRIM_SUBD, reserve_only);
- }
+ foreach (Attribute &attr, attributes) {
+ if (triangle_mesh)
+ attr.resize(triangle_mesh, ATTR_PRIM_TRIANGLE, reserve_only);
+ if (curve_mesh)
+ attr.resize(curve_mesh, ATTR_PRIM_CURVE, reserve_only);
+ if (subd_mesh)
+ attr.resize(subd_mesh, ATTR_PRIM_SUBD, reserve_only);
+ }
}
void AttributeSet::clear(bool preserve_voxel_data)
{
- if(preserve_voxel_data) {
- list<Attribute>::iterator it;
+ if (preserve_voxel_data) {
+ list<Attribute>::iterator it;
- for(it = attributes.begin(); it != attributes.end();) {
- if(it->element == ATTR_ELEMENT_VOXEL || it->std == ATTR_STD_GENERATED_TRANSFORM) {
- it++;
- }
- else {
- attributes.erase(it++);
- }
- }
- }
- else {
- attributes.clear();
- }
+ for (it = attributes.begin(); it != attributes.end();) {
+ if (it->element == ATTR_ELEMENT_VOXEL || it->std == ATTR_STD_GENERATED_TRANSFORM) {
+ it++;
+ }
+ else {
+ attributes.erase(it++);
+ }
+ }
+ }
+ else {
+ attributes.clear();
+ }
}
/* AttributeRequest */
AttributeRequest::AttributeRequest(ustring name_)
{
- name = name_;
- std = ATTR_STD_NONE;
+ name = name_;
+ std = ATTR_STD_NONE;
- triangle_type = TypeDesc::TypeFloat;
- triangle_desc.element = ATTR_ELEMENT_NONE;
- triangle_desc.offset = 0;
- triangle_desc.type = NODE_ATTR_FLOAT;
+ triangle_type = TypeDesc::TypeFloat;
+ triangle_desc.element = ATTR_ELEMENT_NONE;
+ triangle_desc.offset = 0;
+ triangle_desc.type = NODE_ATTR_FLOAT;
- curve_type = TypeDesc::TypeFloat;
- curve_desc.element = ATTR_ELEMENT_NONE;
- curve_desc.offset = 0;
- curve_desc.type = NODE_ATTR_FLOAT;
+ curve_type = TypeDesc::TypeFloat;
+ curve_desc.element = ATTR_ELEMENT_NONE;
+ curve_desc.offset = 0;
+ curve_desc.type = NODE_ATTR_FLOAT;
- subd_type = TypeDesc::TypeFloat;
- subd_desc.element = ATTR_ELEMENT_NONE;
- subd_desc.offset = 0;
- subd_desc.type = NODE_ATTR_FLOAT;
+ subd_type = TypeDesc::TypeFloat;
+ subd_desc.element = ATTR_ELEMENT_NONE;
+ subd_desc.offset = 0;
+ subd_desc.type = NODE_ATTR_FLOAT;
}
AttributeRequest::AttributeRequest(AttributeStandard std_)
{
- name = ustring();
- std = std_;
+ name = ustring();
+ std = std_;
- triangle_type = TypeDesc::TypeFloat;
- triangle_desc.element = ATTR_ELEMENT_NONE;
- triangle_desc.offset = 0;
- triangle_desc.type = NODE_ATTR_FLOAT;
+ triangle_type = TypeDesc::TypeFloat;
+ triangle_desc.element = ATTR_ELEMENT_NONE;
+ triangle_desc.offset = 0;
+ triangle_desc.type = NODE_ATTR_FLOAT;
- curve_type = TypeDesc::TypeFloat;
- curve_desc.element = ATTR_ELEMENT_NONE;
- curve_desc.offset = 0;
- curve_desc.type = NODE_ATTR_FLOAT;
+ curve_type = TypeDesc::TypeFloat;
+ curve_desc.element = ATTR_ELEMENT_NONE;
+ curve_desc.offset = 0;
+ curve_desc.type = NODE_ATTR_FLOAT;
- subd_type = TypeDesc::TypeFloat;
- subd_desc.element = ATTR_ELEMENT_NONE;
- subd_desc.offset = 0;
- subd_desc.type = NODE_ATTR_FLOAT;
+ subd_type = TypeDesc::TypeFloat;
+ subd_desc.element = ATTR_ELEMENT_NONE;
+ subd_desc.offset = 0;
+ subd_desc.type = NODE_ATTR_FLOAT;
}
/* AttributeRequestSet */
@@ -634,101 +631,99 @@ AttributeRequestSet::~AttributeRequestSet()
{
}
-bool AttributeRequestSet::modified(const AttributeRequestSet& other)
+bool AttributeRequestSet::modified(const AttributeRequestSet &other)
{
- if(requests.size() != other.requests.size())
- return true;
+ if (requests.size() != other.requests.size())
+ return true;
- for(size_t i = 0; i < requests.size(); i++) {
- bool found = false;
+ for (size_t i = 0; i < requests.size(); i++) {
+ bool found = false;
- for(size_t j = 0; j < requests.size() && !found; j++)
- if(requests[i].name == other.requests[j].name &&
- requests[i].std == other.requests[j].std)
- {
- found = true;
- }
+ for (size_t j = 0; j < requests.size() && !found; j++)
+ if (requests[i].name == other.requests[j].name && requests[i].std == other.requests[j].std) {
+ found = true;
+ }
- if(!found) {
- return true;
- }
- }
+ if (!found) {
+ return true;
+ }
+ }
- return false;
+ return false;
}
void AttributeRequestSet::add(ustring name)
{
- foreach(AttributeRequest& req, requests) {
- if(req.name == name) {
- return;
- }
- }
+ foreach (AttributeRequest &req, requests) {
+ if (req.name == name) {
+ return;
+ }
+ }
- requests.push_back(AttributeRequest(name));
+ requests.push_back(AttributeRequest(name));
}
void AttributeRequestSet::add(AttributeStandard std)
{
- foreach(AttributeRequest& req, requests)
- if(req.std == std)
- return;
+ foreach (AttributeRequest &req, requests)
+ if (req.std == std)
+ return;
- requests.push_back(AttributeRequest(std));
+ requests.push_back(AttributeRequest(std));
}
-void AttributeRequestSet::add(AttributeRequestSet& reqs)
+void AttributeRequestSet::add(AttributeRequestSet &reqs)
{
- foreach(AttributeRequest& req, reqs.requests) {
- if(req.std == ATTR_STD_NONE)
- add(req.name);
- else
- add(req.std);
- }
+ foreach (AttributeRequest &req, reqs.requests) {
+ if (req.std == ATTR_STD_NONE)
+ add(req.name);
+ else
+ add(req.std);
+ }
}
void AttributeRequestSet::add_standard(ustring name)
{
- if(name.empty()) {
- return;
- }
+ if (name.empty()) {
+ return;
+ }
- AttributeStandard std = Attribute::name_standard(name.c_str());
+ AttributeStandard std = Attribute::name_standard(name.c_str());
- if(std) {
- add(std);
- }
- else {
- add(name);
- }
+ if (std) {
+ add(std);
+ }
+ else {
+ add(name);
+ }
}
bool AttributeRequestSet::find(ustring name)
{
- foreach(AttributeRequest& req, requests)
- if(req.name == name)
- return true;
+ foreach (AttributeRequest &req, requests)
+ if (req.name == name)
+ return true;
- return false;
+ return false;
}
bool AttributeRequestSet::find(AttributeStandard std)
{
- foreach(AttributeRequest& req, requests)
- if(req.std == std)
- return true;
+ foreach (AttributeRequest &req, requests)
+ if (req.std == std)
+ return true;
- return false;
+ return false;
}
size_t AttributeRequestSet::size()
{
- return requests.size();
+ return requests.size();
}
void AttributeRequestSet::clear()
{
- requests.clear();
+ requests.clear();
}
CCL_NAMESPACE_END