diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index d32b1513e42..6ba98391a61 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -3384,6 +3384,20 @@ void GeometryNode::compile(OSLCompiler& compiler) compiler.add(this, "node_geometry"); } +int GeometryNode::get_group() +{ + ShaderOutput *out; + int result = ShaderNode::get_group(); + + /* Backfacing uses NODE_LIGHT_PATH */ + out = output("Backfacing"); + if (!out->links.empty()) { + result = max(result, NODE_GROUP_LEVEL_1); + } + + return result; +} + /* TextureCoordinate */ NODE_DEFINE(TextureCoordinateNode) diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h index 429a1130a9b..5c27929719a 100644 --- a/intern/cycles/render/nodes.h +++ b/intern/cycles/render/nodes.h @@ -666,6 +666,7 @@ public: void attributes(Shader *shader, AttributeRequestSet *attributes); bool has_attribute_dependency() { return true; } bool has_spatial_varying() { return true; } + int get_group(); float3 normal_osl; };