From 5c60721c9e3d5af2bd4f80b3013fe0c804cf7531 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 23 Aug 2017 12:32:48 +0200 Subject: Fix T51805: Overlapping volumes renders incorrect on AMD GPU We need to make sure we can store all volume closures for all objects in volume stack. This is a bit tricky to detect what would be the "nestness" level of volumes so for now use maximum possible stack depth. Might cause some slowdown, but better to give reliable render output than to fail quickly. Should be safe for 2.79 after extra eyes. --- intern/cycles/render/graph.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'intern') diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index 41e7e0205b0..08203163d1a 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -1018,6 +1018,9 @@ int ShaderGraph::get_num_closures() else if(CLOSURE_IS_PRINCIPLED(closure_type)) { num_closures += 8; } + else if(CLOSURE_IS_VOLUME(closure_type)) { + num_closures += VOLUME_STACK_SIZE; + } else { ++num_closures; } -- cgit v1.2.3