[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45176] trunk/blender/intern/cycles: Cycles: fix for ColorRamp node alpha output.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Mar 26 15:21:44 CEST 2012


Revision: 45176
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45176
Author:   blendix
Date:     2012-03-26 13:21:43 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Cycles: fix for ColorRamp node alpha output.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/svm/svm_ramp.h
    trunk/blender/intern/cycles/render/nodes.cpp

Modified: trunk/blender/intern/cycles/kernel/svm/svm_ramp.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_ramp.h	2012-03-26 13:21:13 UTC (rev 45175)
+++ trunk/blender/intern/cycles/kernel/svm/svm_ramp.h	2012-03-26 13:21:43 UTC (rev 45176)
@@ -40,11 +40,15 @@
 {
 	uint fac_offset = node.y;
 	uint color_offset = node.z;
+	uint alpha_offset = node.w;
 
 	float fac = stack_load_float(stack, fac_offset);
 	float4 color = rgb_ramp_lookup(kg, *offset, fac);
 
-	stack_store_float3(stack, color_offset, float4_to_float3(color));
+	if(stack_valid(color_offset))
+		stack_store_float3(stack, color_offset, float4_to_float3(color));
+	if(stack_valid(alpha_offset))
+		stack_store_float(stack, alpha_offset, color.w);
 
 	*offset += RAMP_TABLE_SIZE;
 }

Modified: trunk/blender/intern/cycles/render/nodes.cpp
===================================================================
--- trunk/blender/intern/cycles/render/nodes.cpp	2012-03-26 13:21:13 UTC (rev 45175)
+++ trunk/blender/intern/cycles/render/nodes.cpp	2012-03-26 13:21:43 UTC (rev 45176)
@@ -2388,17 +2388,22 @@
 {
 	add_input("Fac", SHADER_SOCKET_FLOAT);
 	add_output("Color", SHADER_SOCKET_COLOR);
+	add_output("Alpha", SHADER_SOCKET_FLOAT);
 }
 
 void RGBRampNode::compile(SVMCompiler& compiler)
 {
 	ShaderInput *fac_in = input("Fac");
 	ShaderOutput *color_out = output("Color");
+	ShaderOutput *alpha_out = output("Alpha");
 
 	compiler.stack_assign(fac_in);
-	compiler.stack_assign(color_out);
+	if(!color_out->links.empty())
+		compiler.stack_assign(color_out);
+	if(!alpha_out->links.empty())
+		compiler.stack_assign(alpha_out);
 
-	compiler.add_node(NODE_RGB_RAMP, fac_in->stack_offset, color_out->stack_offset);
+	compiler.add_node(NODE_RGB_RAMP, fac_in->stack_offset, color_out->stack_offset, alpha_out->stack_offset);
 	compiler.add_array(ramp, RAMP_TABLE_SIZE);
 }
 




More information about the Bf-blender-cvs mailing list