Eevee: Support monochromatic Transparent BSDF correctly
This fits Cycles better even if it is only for grey scale values. This only work if the blend mode is Alpha Blend or Alpha Hashed.
This commit is contained in:
parent
bc1c263a8a
commit
8a204ccdb4
|
@ -719,7 +719,6 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac)
|
|||
Closure cl;
|
||||
|
||||
if (cl1.ssr_id == TRANSPARENT_CLOSURE_FLAG) {
|
||||
cl1.radiance = cl2.radiance;
|
||||
cl1.ssr_normal = cl2.ssr_normal;
|
||||
cl1.ssr_data = cl2.ssr_data;
|
||||
cl1.ssr_id = cl2.ssr_id;
|
||||
|
@ -731,7 +730,6 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac)
|
|||
# endif
|
||||
}
|
||||
if (cl2.ssr_id == TRANSPARENT_CLOSURE_FLAG) {
|
||||
cl2.radiance = cl1.radiance;
|
||||
cl2.ssr_normal = cl1.ssr_normal;
|
||||
cl2.ssr_data = cl1.ssr_data;
|
||||
cl2.ssr_id = cl1.ssr_id;
|
||||
|
@ -752,8 +750,9 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac)
|
|||
cl.ssr_normal = cl2.ssr_normal;
|
||||
cl.ssr_id = cl2.ssr_id;
|
||||
}
|
||||
cl.radiance = mix(cl1.radiance, cl2.radiance, fac);
|
||||
cl.opacity = mix(cl1.opacity, cl2.opacity, fac);
|
||||
cl.radiance = mix(cl1.radiance * cl1.opacity, cl2.radiance * cl2.opacity, fac);
|
||||
cl.radiance /= max(1e-8, cl.opacity);
|
||||
|
||||
# ifdef USE_SSS
|
||||
cl.sss_data.rgb = mix(cl1.sss_data.rgb, cl2.sss_data.rgb, fac);
|
||||
|
|
|
@ -1351,7 +1351,7 @@ void node_bsdf_transparent(vec4 color, out Closure result)
|
|||
/* this isn't right */
|
||||
result = CLOSURE_DEFAULT;
|
||||
result.radiance = vec3(0.0);
|
||||
result.opacity = 0.0;
|
||||
result.opacity = clamp(1.0 - dot(color.rgb, vec3(0.3333334)), 0.0, 1.0);
|
||||
result.ssr_id = TRANSPARENT_CLOSURE_FLAG;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue