[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57250] trunk/blender: Cycles: GLSL materials now can use multiple UV maps with the attribute node.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jun 5 17:54:39 CEST 2013


Revision: 57250
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57250
Author:   blendix
Date:     2013-06-05 15:54:39 +0000 (Wed, 05 Jun 2013)
Log Message:
-----------
Cycles: GLSL materials now can use multiple UV maps with the attribute node.

Modified Paths:
--------------
    trunk/blender/intern/cycles/render/graph.cpp
    trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_attribute.c

Modified: trunk/blender/intern/cycles/render/graph.cpp
===================================================================
--- trunk/blender/intern/cycles/render/graph.cpp	2013-06-05 09:21:17 UTC (rev 57249)
+++ trunk/blender/intern/cycles/render/graph.cpp	2013-06-05 15:54:39 UTC (rev 57250)
@@ -192,9 +192,9 @@
 		/* for closures we can't do automatic conversion */
 		if(from->type == SHADER_SOCKET_CLOSURE || to->type == SHADER_SOCKET_CLOSURE) {
 			fprintf(stderr, "Cycles shader graph connect: can only connect closure to closure "
-			        "(ShaderNode:%s, ShaderOutput:%s , type:%d -> to ShaderNode:%s, ShaderInput:%s, type:%d).\n",
-			        from->parent->name.c_str(), from->name, (int)from->type,
-			        to->parent->name.c_str(),   to->name,   (int)to->type);
+			        "(%s.%s to %s.%s).\n",
+			        from->parent->name.c_str(), from->name,
+			        to->parent->name.c_str(), to->name);
 			return;
 		}
 

Modified: trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl
===================================================================
--- trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-06-05 09:21:17 UTC (rev 57249)
+++ trunk/blender/source/blender/gpu/shaders/gpu_shader_material.glsl	2013-06-05 15:54:39 UTC (rev 57250)
@@ -2121,6 +2121,13 @@
 
 /* geometry */
 
+void node_attribute(vec3 attr_uv, out vec4 outcol, out vec3 outvec, out float outf)
+{
+	outcol = vec4(attr_uv, 1.0);
+	outvec = attr_uv;
+	outf = (attr_uv.x + attr_uv.y + attr_uv.z)/3.0;
+}
+
 void node_geometry(vec3 I, vec3 N, mat4 toworld,
 	out vec3 position, out vec3 normal, out vec3 tangent,
 	out vec3 true_normal, out vec3 incoming, out vec3 parametric,

Modified: trunk/blender/source/blender/nodes/shader/nodes/node_shader_attribute.c
===================================================================
--- trunk/blender/source/blender/nodes/shader/nodes/node_shader_attribute.c	2013-06-05 09:21:17 UTC (rev 57249)
+++ trunk/blender/source/blender/nodes/shader/nodes/node_shader_attribute.c	2013-06-05 15:54:39 UTC (rev 57250)
@@ -42,6 +42,14 @@
 	node->storage = attr;
 }
 
+static int node_shader_gpu_attribute(GPUMaterial *mat, bNode *node, bNodeExecData *UNUSED(execdata), GPUNodeStack *in, GPUNodeStack *out)
+{
+	NodeShaderAttribute *attr = node->storage;
+	GPUNodeLink *mtface = GPU_attribute(CD_MTFACE, attr->name);
+
+	return GPU_stack_link(mat, "node_attribute", in, out, mtface);
+}
+
 /* node type definition */
 void register_node_type_sh_attribute(void)
 {
@@ -52,6 +60,8 @@
 	node_type_socket_templates(&ntype, NULL, sh_node_attribute_out);
 	node_type_init(&ntype, node_shader_init_attribute);
 	node_type_storage(&ntype, "NodeShaderAttribute", node_free_standard_storage, node_copy_standard_storage);
+	node_type_gpu(&ntype, node_shader_gpu_attribute);
 
 	nodeRegisterType(&ntype);
 }
+




More information about the Bf-blender-cvs mailing list