forked from bartvdbraak/blender
Fix new Cycles UV Map node not working correct for bump mapping.
Reviewed By: brecht Differential Revision: https://developer.blender.org/D475
This commit is contained in:
parent
f55ca54be1
commit
83988b6cdd
@ -17,18 +17,29 @@
|
|||||||
#include "stdosl.h"
|
#include "stdosl.h"
|
||||||
|
|
||||||
shader node_uv_map(
|
shader node_uv_map(
|
||||||
string name = "",
|
|
||||||
int from_dupli = 0,
|
int from_dupli = 0,
|
||||||
|
string name = "",
|
||||||
|
string bump_offset = "center",
|
||||||
output point UV = point(0.0, 0.0, 0.0))
|
output point UV = point(0.0, 0.0, 0.0))
|
||||||
|
|
||||||
{
|
{
|
||||||
if (from_dupli) {
|
if (from_dupli) {
|
||||||
getattribute("geom:dupli_uv", UV);
|
getattribute("geom:dupli_uv", UV);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (name == "")
|
if (name == "")
|
||||||
getattribute("geom:uv", UV);
|
getattribute("geom:uv", UV);
|
||||||
else
|
else
|
||||||
getattribute(name, UV);
|
getattribute(name, UV);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bump_offset == "dx") {
|
||||||
|
if (!from_dupli) {
|
||||||
|
UV += Dx(UV);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (bump_offset == "dy") {
|
||||||
|
if (!from_dupli) {
|
||||||
|
UV += Dy(UV);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2360,6 +2360,15 @@ void UVMapNode::compile(SVMCompiler& compiler)
|
|||||||
NodeType attr_node = NODE_ATTR;
|
NodeType attr_node = NODE_ATTR;
|
||||||
int attr;
|
int attr;
|
||||||
|
|
||||||
|
if(bump == SHADER_BUMP_DX) {
|
||||||
|
texco_node = NODE_TEX_COORD_BUMP_DX;
|
||||||
|
attr_node = NODE_ATTR_BUMP_DX;
|
||||||
|
}
|
||||||
|
else if(bump == SHADER_BUMP_DY) {
|
||||||
|
texco_node = NODE_TEX_COORD_BUMP_DY;
|
||||||
|
attr_node = NODE_ATTR_BUMP_DY;
|
||||||
|
}
|
||||||
|
|
||||||
if(!out->links.empty()) {
|
if(!out->links.empty()) {
|
||||||
if(from_dupli) {
|
if(from_dupli) {
|
||||||
compiler.stack_assign(out);
|
compiler.stack_assign(out);
|
||||||
@ -2379,6 +2388,13 @@ void UVMapNode::compile(SVMCompiler& compiler)
|
|||||||
|
|
||||||
void UVMapNode::compile(OSLCompiler& compiler)
|
void UVMapNode::compile(OSLCompiler& compiler)
|
||||||
{
|
{
|
||||||
|
if(bump == SHADER_BUMP_DX)
|
||||||
|
compiler.parameter("bump_offset", "dx");
|
||||||
|
else if(bump == SHADER_BUMP_DY)
|
||||||
|
compiler.parameter("bump_offset", "dy");
|
||||||
|
else
|
||||||
|
compiler.parameter("bump_offset", "center");
|
||||||
|
|
||||||
compiler.parameter("from_dupli", from_dupli);
|
compiler.parameter("from_dupli", from_dupli);
|
||||||
compiler.parameter("name", attribute.c_str());
|
compiler.parameter("name", attribute.c_str());
|
||||||
compiler.add(this, "node_uv_map");
|
compiler.add(this, "node_uv_map");
|
||||||
|
Loading…
Reference in New Issue
Block a user