diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-10-16 00:13:35 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-10-16 00:13:35 +0400 |
commit | 9c959d98fe5b873f2538882e041f00b6cd90d7cf (patch) | |
tree | 3556a4621c44a06b07df1497fe4a2151d311c487 /intern/cycles | |
parent | 19a42adc61877dfbc584ef84f52bdbfa5061b43c (diff) |
Cycles: make Attribute node work, code for it was implemented in kernel, only
missing was the ability to specify the attribute name in the node. This makes
it possible to use multiple uv or vertex color layers now.
Diffstat (limited to 'intern/cycles')
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 17 | ||||
-rw-r--r-- | intern/cycles/blender/blender_shader.cpp | 3 |
2 files changed, 11 insertions, 9 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 0dc0b91be79..af14bad6402 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -121,17 +121,18 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< size_t i = 0; for(l->data.begin(c); c != l->data.end(); ++c, ++i) { - fdata[0] = get_float3(c->color1()); - fdata[1] = get_float3(c->color2()); - fdata[2] = get_float3(c->color3()); - fdata += 3; + fdata[0] = color_srgb_to_scene_linear(get_float3(c->color1())); + fdata[1] = color_srgb_to_scene_linear(get_float3(c->color2())); + fdata[2] = color_srgb_to_scene_linear(get_float3(c->color3())); if(nverts[i] == 4) { - fdata[0] = get_float3(c->color1()); - fdata[1] = get_float3(c->color3()); - fdata[2] = get_float3(c->color4()); - fdata += 3; + fdata[3] = fdata[0]; + fdata[4] = fdata[2]; + fdata[5] = color_srgb_to_scene_linear(get_float3(c->color4())); + fdata += 6; } + else + fdata += 3; } } } diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index f798d4ff44a..9e3095f23e2 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -196,8 +196,9 @@ static ShaderNode *add_node(BL::BlendData b_data, ShaderGraph *graph, BL::Node * break; } case BL::ShaderNode::type_ATTRIBUTE: { + BL::ShaderNodeAttribute b_attr_node(b_node); AttributeNode *attr = new AttributeNode(); - attr->attribute = ""; + attr->attribute = b_attr_node.attribute_name(); node = attr; break; } |