From 4887baf7d69c6c44c265044600ec00c77e9aa406 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Thu, 14 Mar 2019 09:20:11 +0100 Subject: 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. --- intern/cycles/render/nodes.cpp | 14 ++++++++++++++ intern/cycles/render/nodes.h | 1 + 2 files changed, 15 insertions(+) (limited to 'intern/cycles/render') 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; }; -- cgit v1.2.3