diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index 54acc6e14cd..cdded403cbe 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -117,9 +117,14 @@ ShaderOutput *ShaderNode::add_output(const char *name, ShaderSocketType type) void ShaderNode::attributes(AttributeRequestSet *attributes) { - foreach(ShaderInput *input, inputs) - if(!input->link && input->default_value == ShaderInput::TEXTURE_COORDINATE) - attributes->add(Attribute::STD_GENERATED); + foreach(ShaderInput *input, inputs) { + if(!input->link) { + if(input->default_value == ShaderInput::TEXTURE_GENERATED) + attributes->add(Attribute::STD_GENERATED); + else if(input->default_value == ShaderInput::TEXTURE_UV) + attributes->add(Attribute::STD_UV); + } + } } /* Graph */ @@ -347,12 +352,18 @@ void ShaderGraph::default_inputs(bool do_osl) foreach(ShaderNode *node, nodes) { foreach(ShaderInput *input, node->inputs) { if(!input->link && !(input->osl_only && !do_osl)) { - if(input->default_value == ShaderInput::TEXTURE_COORDINATE) { + if(input->default_value == ShaderInput::TEXTURE_GENERATED) { if(!texco) texco = new TextureCoordinateNode(); connect(texco->output("Generated"), input); } + else if(input->default_value == ShaderInput::TEXTURE_UV) { + if(!texco) + texco = new TextureCoordinateNode(); + + connect(texco->output("UV"), input); + } else if(input->default_value == ShaderInput::INCOMING) { if(!geom) geom = new GeometryNode(); diff --git a/intern/cycles/render/graph.h b/intern/cycles/render/graph.h index a79a68da358..2a2df5e1377 100644 --- a/intern/cycles/render/graph.h +++ b/intern/cycles/render/graph.h @@ -96,7 +96,8 @@ protected: class ShaderInput { public: enum DefaultValue { - TEXTURE_COORDINATE, + TEXTURE_GENERATED, + TEXTURE_UV, INCOMING, NORMAL, POSITION, diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index 1d21e43217a..88be4b6d26f 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -47,7 +47,7 @@ ImageTextureNode::ImageTextureNode() filename = ""; color_space = ustring("sRGB"); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_UV); add_output("Color", SHADER_SOCKET_COLOR); add_output("Alpha", SHADER_SOCKET_FLOAT); } @@ -285,7 +285,7 @@ void SkyTextureNode::compile(OSLCompiler& compiler) NoiseTextureNode::NoiseTextureNode() : ShaderNode("noise_texture") { - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Color", SHADER_SOCKET_COLOR); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -350,7 +350,7 @@ BlendTextureNode::BlendTextureNode() progression = ustring("Linear"); axis = ustring("Horizontal"); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -402,7 +402,7 @@ CloudsTextureNode::CloudsTextureNode() depth = 2; add_input("Size", SHADER_SOCKET_FLOAT, 0.25f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Color", SHADER_SOCKET_COLOR); add_output("Fac", SHADER_SOCKET_FLOAT); @@ -479,7 +479,7 @@ VoronoiTextureNode::VoronoiTextureNode() add_input("Weight3", SHADER_SOCKET_FLOAT, 0.0f); add_input("Weight4", SHADER_SOCKET_FLOAT, 0.0f); add_input("Exponent", SHADER_SOCKET_FLOAT, 2.5f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Color", SHADER_SOCKET_COLOR); add_output("Fac", SHADER_SOCKET_FLOAT); @@ -557,7 +557,7 @@ MusgraveTextureNode::MusgraveTextureNode() add_input("Offset", SHADER_SOCKET_FLOAT, 0.0f); add_input("Gain", SHADER_SOCKET_FLOAT, 1.0f); add_input("Size", SHADER_SOCKET_FLOAT, 0.25f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -641,7 +641,7 @@ MarbleTextureNode::MarbleTextureNode() add_input("Size", SHADER_SOCKET_FLOAT, 0.25f); add_input("Turbulence", SHADER_SOCKET_FLOAT, 5.0f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -684,7 +684,7 @@ MagicTextureNode::MagicTextureNode() depth = 2; add_input("Turbulence", SHADER_SOCKET_FLOAT, 5.0f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Color", SHADER_SOCKET_COLOR); } @@ -734,7 +734,7 @@ StucciTextureNode::StucciTextureNode() add_input("Size", SHADER_SOCKET_FLOAT, 1.0f); add_input("Turbulence", SHADER_SOCKET_FLOAT, 1.0f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -780,7 +780,7 @@ DistortedNoiseTextureNode::DistortedNoiseTextureNode() add_input("Size", SHADER_SOCKET_FLOAT, 0.25f); add_input("Distortion", SHADER_SOCKET_FLOAT, 1.0f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); } @@ -840,7 +840,7 @@ WoodTextureNode::WoodTextureNode() add_input("Size", SHADER_SOCKET_FLOAT, 0.25f); add_input("Turbulence", SHADER_SOCKET_FLOAT, 5.0f); - add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_COORDINATE); + add_input("Vector", SHADER_SOCKET_POINT, ShaderInput::TEXTURE_GENERATED); add_output("Fac", SHADER_SOCKET_FLOAT); }