diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2019-03-14 11:20:11 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2019-03-14 11:20:11 +0300 |
commit | 4887baf7d69c6c44c265044600ec00c77e9aa406 (patch) | |
tree | c49c1fb9fc11ee85f6b03a938c05b70f1f720ad2 | |
parent | 6eeac735f2425ce4dffaee747b7e8823a793e464 (diff) |
Fix T62145: Geometry.Backface Node Renders Black
The NODE_GROUP_LEVEL of the Geometry node should be bumped to 1
when Backface is connected. Backface uses `NODE_LIGHT_PATH` that
is part of NODE_GROUP_LEVEL1, the rest of the geometry ndoe is
NODE_GROUP_LEVEL_0.
-rw-r--r-- | intern/cycles/render/nodes.cpp | 14 | ||||
-rw-r--r-- | intern/cycles/render/nodes.h | 1 |
2 files changed, 15 insertions, 0 deletions
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; }; |