Fix T70640 EEVEE: Alpha hashed material is darker when alpha is not 1.0
Predivide all radiance components as the alpha effect comes from the hashed transparency (pixel rejection).
This commit is contained in:
parent
7790298f61
commit
4aabea8b87
@ -918,14 +918,15 @@ void main()
|
|||||||
Closure cl = nodetree_exec();
|
Closure cl = nodetree_exec();
|
||||||
|
|
||||||
float holdout = 1.0 - saturate(cl.holdout);
|
float holdout = 1.0 - saturate(cl.holdout);
|
||||||
|
float transmit = saturate(avg(cl.transmittance));
|
||||||
|
float alpha = 1.0 - transmit;
|
||||||
|
|
||||||
# ifdef USE_ALPHA_BLEND
|
# ifdef USE_ALPHA_BLEND
|
||||||
vec2 uvs = gl_FragCoord.xy * volCoordScale.zw;
|
vec2 uvs = gl_FragCoord.xy * volCoordScale.zw;
|
||||||
vec3 vol_transmit, vol_scatter;
|
vec3 vol_transmit, vol_scatter;
|
||||||
volumetric_resolve(uvs, gl_FragCoord.z, vol_transmit, vol_scatter);
|
volumetric_resolve(uvs, gl_FragCoord.z, vol_transmit, vol_scatter);
|
||||||
|
|
||||||
float transmit = saturate(avg(cl.transmittance));
|
outRadiance = vec4(cl.radiance * vol_transmit + vol_scatter, alpha * holdout);
|
||||||
outRadiance = vec4(cl.radiance * vol_transmit + vol_scatter, (1.0 - transmit) * holdout);
|
|
||||||
outTransmittance = vec4(cl.transmittance, transmit * holdout);
|
outTransmittance = vec4(cl.transmittance, transmit * holdout);
|
||||||
# else
|
# else
|
||||||
outRadiance = vec4(cl.radiance, holdout);
|
outRadiance = vec4(cl.radiance, holdout);
|
||||||
@ -953,6 +954,15 @@ void main()
|
|||||||
|
|
||||||
outRadiance.rgb += cl.sss_irradiance.rgb * cl.sss_albedo.rgb * fac;
|
outRadiance.rgb += cl.sss_irradiance.rgb * cl.sss_albedo.rgb * fac;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# ifndef USE_ALPHA_BLEND
|
||||||
|
float alpha_div = 1.0 / max(1e-8, alpha);
|
||||||
|
outRadiance *= alpha_div;
|
||||||
|
ssrData.rgb *= alpha_div;
|
||||||
|
# ifdef USE_SSS
|
||||||
|
sssAlbedo.rgb *= alpha_div;
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
# endif /* MESH_SHADER && !SHADOW_SHADER */
|
# endif /* MESH_SHADER && !SHADOW_SHADER */
|
||||||
|
Loading…
Reference in New Issue
Block a user