[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41040] branches/cycles: Cycles: make Attribute node work, code for it was implemented in kernel, only

Brecht Van Lommel brechtvanlommel at pandora.be
Sat Oct 15 22:13:38 CEST 2011


Revision: 41040
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41040
Author:   blendix
Date:     2011-10-15 20:13:35 +0000 (Sat, 15 Oct 2011)
Log Message:
-----------
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.

Modified Paths:
--------------
    branches/cycles/intern/cycles/blender/blender_mesh.cpp
    branches/cycles/intern/cycles/blender/blender_shader.cpp
    branches/cycles/source/blender/editors/space_node/drawnode.c
    branches/cycles/source/blender/makesdna/DNA_node_types.h
    branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h
    branches/cycles/source/blender/nodes/shader/node_shader_tree.c
    branches/cycles/source/blender/nodes/shader/nodes/node_shader_attribute.c

Modified: branches/cycles/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-10-15 19:30:51 UTC (rev 41039)
+++ branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-10-15 20:13:35 UTC (rev 41040)
@@ -121,17 +121,18 @@
 			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[0];
+					fdata[4] = fdata[2];
+					fdata[5] = color_srgb_to_scene_linear(get_float3(c->color4()));
+					fdata += 6;
+				}
+				else
 					fdata += 3;
-				}
 			}
 		}
 	}

Modified: branches/cycles/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-10-15 19:30:51 UTC (rev 41039)
+++ branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-10-15 20:13:35 UTC (rev 41040)
@@ -196,8 +196,9 @@
 			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;
 		}

Modified: branches/cycles/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/cycles/source/blender/editors/space_node/drawnode.c	2011-10-15 19:30:51 UTC (rev 41039)
+++ branches/cycles/source/blender/editors/space_node/drawnode.c	2011-10-15 20:13:35 UTC (rev 41040)
@@ -1006,6 +1006,11 @@
 	}
 }*/
 
+static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
+{
+	uiItemR(layout, ptr, "attribute_name", 0, "Name", ICON_NONE);
+}
+
 static void node_shader_buts_tex_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
 	//uiItemR(layout, ptr, "image", 0, "", ICON_NONE);
@@ -1170,6 +1175,9 @@
 		case SH_NODE_GEOM:
 			ntype->uifunc= node_shader_buts_geometry;
 			break;
+		case SH_NODE_ATTRIBUTE:
+			ntype->uifunc= node_shader_buts_attribute;
+			break;
 		case SH_NODE_TEX_SKY:
 			ntype->uifunc= node_shader_buts_tex_sky;
 			break;

Modified: branches/cycles/source/blender/makesdna/DNA_node_types.h
===================================================================
--- branches/cycles/source/blender/makesdna/DNA_node_types.h	2011-10-15 19:30:51 UTC (rev 41039)
+++ branches/cycles/source/blender/makesdna/DNA_node_types.h	2011-10-15 20:13:35 UTC (rev 41040)
@@ -487,6 +487,10 @@
 	int hard;
 } NodeTexWood;
 
+typedef struct NodeShaderAttribute {
+	char name[64];
+} NodeShaderAttribute;
+
 /* TEX_output */
 typedef struct TexNodeOutput {
 	char name[32];

Modified: branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h
===================================================================
--- branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h	2011-10-15 19:30:51 UTC (rev 41039)
+++ branches/cycles/source/blender/makesrna/intern/rna_nodetree_types.h	2011-10-15 20:13:35 UTC (rev 41040)
@@ -42,7 +42,7 @@
 DefNode( ShaderNode,     SH_NODE_RGBTOBW,         0,                      "RGBTOBW",        RGBToBW,          "RGB to BW",         ""              )
 DefNode( ShaderNode,     SH_NODE_TEXTURE,         def_texture,            "TEXTURE",        Texture,          "Texture",           ""              )
 DefNode( ShaderNode,     SH_NODE_NORMAL,          0,                      "NORMAL",         Normal,           "Normal",            ""              )
-DefNode( ShaderNode,     SH_NODE_GEOM,        def_sh_geometry,        "GEOM",       Geom,         "Geometry",          ""              )
+DefNode( ShaderNode,     SH_NODE_GEOM,            def_sh_geometry,        "GEOM",       Geom,         "Geometry",          ""              )
 DefNode( ShaderNode,     SH_NODE_MAPPING,         def_sh_mapping,         "MAPPING",        Mapping,          "Mapping",           ""              )
 DefNode( ShaderNode,     SH_NODE_CURVE_VEC,       def_vector_curve,       "CURVE_VEC",      VectorCurve,      "Vector Curve",      ""              )
 DefNode( ShaderNode,     SH_NODE_CURVE_RGB,       def_rgb_curve,          "CURVE_RGB",      RGBCurve,         "RGB Curve",         ""              )
@@ -64,35 +64,35 @@
 DefNode( ShaderNode,     SH_NODE_MIX_SHADER,      0,                      "MIX_SHADER",     MixShader,        "Mix Shader",        ""              )
 DefNode( ShaderNode,     SH_NODE_ADD_SHADER,      0,                      "ADD_SHADER",     AddShader,        "Add Shader",        ""              )
 
-DefNode( ShaderNode,     SH_NODE_ATTRIBUTE, 0, "ATTRIBUTE", Attribute, "Attribute", "")
-DefNode( ShaderNode,     SH_NODE_BACKGROUND, 0, "BACKGROUND", Background, "Background", "")
-DefNode( ShaderNode,     SH_NODE_HOLDOUT, 0, "HOLDOUT", Holdout, "Holdout", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_ANISOTROPIC, 0, "BSDF_ANISOTROPIC", BsdfAnisotropic, "Bsdf Anisotropic", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_DIFFUSE, 0, "BSDF_DIFFUSE", BsdfDiffuse, "Diffuse Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_GLOSSY, def_glossy, "BSDF_GLOSSY", BsdfGlossy, "Glossy Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_GLASS, def_glossy, "BSDF_GLASS", BsdfGlass, "Glass Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_TRANSLUCENT, 0, "BSDF_TRANSLUCENT", BsdfTranslucent, "Translucent Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_TRANSPARENT, 0, "BSDF_TRANSPARENT", BsdfTransparent, "Transparent Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_BSDF_VELVET, 0, "BSDF_VELVET", BsdfVelvet, "Velvet Bsdf", "")
-DefNode( ShaderNode,     SH_NODE_VOLUME_TRANSPARENT, 0, "VOLUME_TRANSPARENT", VolumeTransparent, "Transparent Volume", "")
-DefNode( ShaderNode,     SH_NODE_VOLUME_ISOTROPIC, 0, "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "")
-DefNode( ShaderNode,     SH_NODE_EMISSION, 0, "EMISSION", Emission, "Emission", "")
-DefNode( ShaderNode,     SH_NODE_GEOMETRY, 0, "GEOMETRY", Geometry, "Geometry", "")
-DefNode( ShaderNode,     SH_NODE_LIGHT_PATH, 0, "LIGHT_PATH", Light_path, "Light_path", "")
-DefNode( ShaderNode,     SH_NODE_TEX_IMAGE, def_sh_tex_image, "TEX_IMAGE", TexImage, "Image Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_ENVIRONMENT, def_sh_tex_environment, "TEX_ENVIRONMENT", TexEnvironment, "Environment Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_NOISE, 0, "TEX_NOISE", TexNoise, "Noise Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_SKY, def_sh_tex_sky, "TEX_SKY", TexSky, "Sky Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_BLEND, def_sh_tex_blend, "TEX_BLEND", TexBlend, "Blend Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_CLOUDS, def_sh_tex_clouds, "TEX_CLOUDS", TexClouds, "Clouds Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_DISTNOISE, def_sh_tex_distnoise, "TEX_DISTORTED_NOISE", TexDistortedNoise, "Distorted Noise Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_MAGIC, def_sh_tex_magic, "TEX_MAGIC", TexMagic, "Magic Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_MARBLE, def_sh_tex_marble, "TEX_MARBLE", TexMarble, "Marble Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_MUSGRAVE, def_sh_tex_musgrave, "TEX_MUSGRAVE", TexMusgrave, "Musgrave Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_STUCCI, def_sh_tex_stucci, "TEX_STUCCI", TexStucci, "Stucci Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_VORONOI, def_sh_tex_voronoi, "TEX_VORONOI", TexVoronoi, "Voronoi Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_WOOD, def_sh_tex_wood, "TEX_WOOD", TexWood, "Wood Texture", "")
-DefNode( ShaderNode,     SH_NODE_TEX_COORD, 0, "TEX_COORD", TexCoord, "Texture Coordinate", "")
+DefNode( ShaderNode,     SH_NODE_ATTRIBUTE,          def_sh_attribute,       "ATTRIBUTE",          Attribute, "Attribute", "")
+DefNode( ShaderNode,     SH_NODE_BACKGROUND,         0,                      "BACKGROUND",         Background, "Background", "")
+DefNode( ShaderNode,     SH_NODE_HOLDOUT,            0,                      "HOLDOUT",            Holdout, "Holdout", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_ANISOTROPIC,   0,                      "BSDF_ANISOTROPIC",   BsdfAnisotropic, "Bsdf Anisotropic", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_DIFFUSE,       0,                      "BSDF_DIFFUSE",       BsdfDiffuse, "Diffuse Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_GLOSSY,        def_glossy,             "BSDF_GLOSSY",        BsdfGlossy, "Glossy Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_GLASS,         def_glossy,             "BSDF_GLASS",         BsdfGlass, "Glass Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_TRANSLUCENT,   0,                      "BSDF_TRANSLUCENT",   BsdfTranslucent, "Translucent Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_TRANSPARENT,   0,                      "BSDF_TRANSPARENT",   BsdfTransparent, "Transparent Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_BSDF_VELVET,        0,                      "BSDF_VELVET",        BsdfVelvet, "Velvet Bsdf", "")
+DefNode( ShaderNode,     SH_NODE_VOLUME_TRANSPARENT, 0,                      "VOLUME_TRANSPARENT", VolumeTransparent, "Transparent Volume", "")
+DefNode( ShaderNode,     SH_NODE_VOLUME_ISOTROPIC,   0,                      "VOLUME_ISOTROPIC", VolumeIsotropic, "Isotropic Volume", "")
+DefNode( ShaderNode,     SH_NODE_EMISSION,           0,                      "EMISSION", Emission, "Emission", "")
+DefNode( ShaderNode,     SH_NODE_GEOMETRY,           0,                      "GEOMETRY", Geometry, "Geometry", "")
+DefNode( ShaderNode,     SH_NODE_LIGHT_PATH,         0,                      "LIGHT_PATH", Light_path, "Light_path", "")
+DefNode( ShaderNode,     SH_NODE_TEX_IMAGE,          def_sh_tex_image,       "TEX_IMAGE", TexImage, "Image Texture", "")

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list