[Bf-blender-cvs] [de4dcda] master: Fix T43651: New pointiness attribute doesn't work with displacement

Sergey Sharybin noreply at git.blender.org
Fri Feb 20 13:21:20 CET 2015


Commit: de4dcda545e80a09fdc4ad61091eb303e4a22e6f
Author: Sergey Sharybin
Date:   Fri Feb 20 17:20:24 2015 +0500
Branches: master
https://developer.blender.org/rBde4dcda545e80a09fdc4ad61091eb303e4a22e6f

Fix T43651: New pointiness attribute doesn't work with displacement

Simple fix: just make pointiness aware of bump offset.

===================================================================

M	intern/cycles/kernel/shaders/node_geometry.osl
M	intern/cycles/render/nodes.cpp

===================================================================

diff --git a/intern/cycles/kernel/shaders/node_geometry.osl b/intern/cycles/kernel/shaders/node_geometry.osl
index 2bbaaff..b0bd769 100644
--- a/intern/cycles/kernel/shaders/node_geometry.osl
+++ b/intern/cycles/kernel/shaders/node_geometry.osl
@@ -60,5 +60,11 @@ shader node_geometry(
 	}
 
 	getattribute("geom:pointiness", Pointiness);
+	if (bump_offset == "dx") {
+		Pointiness += Dx(Pointiness);
+	}
+	else if (bump_offset == "dy") {
+		Pointiness += Dy(Pointiness);
+	}
 }
 
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp
index 46c962b..e82dd54 100644
--- a/intern/cycles/render/nodes.cpp
+++ b/intern/cycles/render/nodes.cpp
@@ -2242,8 +2242,15 @@ void GeometryNode::compile(SVMCompiler& compiler)
 
 	out = output("Pointiness");
 	if(!out->links.empty()) {
+		NodeType attr_node = NODE_ATTR;
+		if(bump == SHADER_BUMP_DX) {
+			attr_node = NODE_ATTR_BUMP_DX;
+		}
+		else if(bump == SHADER_BUMP_DY) {
+			attr_node = NODE_ATTR_BUMP_DY;
+		}
 		compiler.stack_assign(out);
-		compiler.add_node(NODE_ATTR,
+		compiler.add_node(attr_node,
 		                  ATTR_STD_POINTINESS,
 		                  out->stack_offset,
 		                  NODE_ATTR_FLOAT);




More information about the Bf-blender-cvs mailing list