Fix T99019 EEVEE: Regression: Specular BSDF does not apply occlusion
Since the occlusion input is going to be removed in EEVEE-Next, I just added a temporary workaround. The occlusion is passed as SSS radius as the Specular BSDF does not use it. The final result matches 3.1 release
This commit is contained in:
parent
72b8f607e7
commit
9e94525681
Notes:
blender-bot
2023-02-14 11:21:40 +01:00
Referenced by issue #99019, EEVEE: Regression: Specular BSDF does not apply occlusion Referenced by issue #98661, 3.2: Potential candidates for corrective releases
|
@ -181,6 +181,8 @@ Closure closure_eval(ClosureDiffuse diffuse, ClosureReflection reflection)
|
|||
/* Glue with the old system. */
|
||||
CLOSURE_VARS_DECLARE_2(Diffuse, Glossy);
|
||||
|
||||
/* WORKAROUND: This is to avoid regression in 3.2 and avoid messing with EEVEE-Next. */
|
||||
in_common.occlusion = (diffuse.sss_radius.g == -1.0) ? diffuse.sss_radius.r : 1.0;
|
||||
in_Diffuse_0.N = diffuse.N;
|
||||
in_Diffuse_0.albedo = diffuse.color;
|
||||
in_Glossy_1.N = reflection.N;
|
||||
|
@ -207,6 +209,8 @@ Closure closure_eval(ClosureDiffuse diffuse,
|
|||
/* Glue with the old system. */
|
||||
CLOSURE_VARS_DECLARE_3(Diffuse, Glossy, Glossy);
|
||||
|
||||
/* WORKAROUND: This is to avoid regression in 3.2 and avoid messing with EEVEE-Next. */
|
||||
in_common.occlusion = (diffuse.sss_radius.g == -1.0) ? diffuse.sss_radius.r : 1.0;
|
||||
in_Diffuse_0.N = diffuse.N;
|
||||
in_Diffuse_0.albedo = diffuse.color;
|
||||
in_Glossy_1.N = reflection.N;
|
||||
|
|
|
@ -34,6 +34,13 @@ void node_eevee_specular(vec4 diffuse,
|
|||
diffuse_data.N = N;
|
||||
diffuse_data.sss_id = 0u;
|
||||
|
||||
/* WORKAROUND: Nasty workaround to the current interface with the closure evaluation.
|
||||
* Ideally the occlusion input should be move to the output node or removed all-together.
|
||||
* This is temporary to avoid a regression in 3.2 and should be removed after EEVEE-Next rewrite.
|
||||
*/
|
||||
diffuse_data.sss_radius.r = occlusion;
|
||||
diffuse_data.sss_radius.g = -1.0; /* Flag */
|
||||
|
||||
ClosureReflection reflection_data;
|
||||
reflection_data.weight = alpha;
|
||||
if (true) {
|
||||
|
|
Loading…
Reference in New Issue