Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-05-10 00:51:50 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-05-10 00:52:31 +0300
commit35594f4b92fa4cbb5b848f447b7a3323e572b676 (patch)
tree2f5bcfdc0d4bd8ba87bfa6ffa6b89be17ff2fbc7 /source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl
parent10865c8f349892cda4715cfe0b2e984c9a844deb (diff)
Fix T97985 EEVEE: Shader mixing not working correctly when reusing shader nodes
This was caused by the `Closure` members being added to the final contribution more than once. The workaround is to clear the members once a closure has been added to the final contribution. I used `inout` on `Closure` inputs so that the render engine implementation of mix and add closure nodes can do its own thing. The nodegraph handling of inout was changed for this to work.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl4
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl b/source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl
index 9698b5ea6f5..21d347942ca 100644
--- a/source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/closure_type_lib.glsl
@@ -87,8 +87,8 @@ Closure closure_eval(ClosureDiffuse diffuse,
ClosureReflection clearcoat,
ClosureRefraction refraction);
-Closure closure_add(Closure cl1, Closure cl2);
-Closure closure_mix(Closure cl1, Closure cl2, float fac);
+Closure closure_add(inout Closure cl1, inout Closure cl2);
+Closure closure_mix(inout Closure cl1, inout Closure cl2, float fac);
float ambient_occlusion_eval(vec3 normal,
float distance,