Fix "fixed" fog drawing in front of volumetric fog with a sky background
This closes #42820. Co-authored-by: Clay John <claynjohn@gmail.com>
This commit is contained in:
parent
4dce52e4cb
commit
4357506e64
@ -2726,14 +2726,15 @@ FRAGMENT_SHADER_CODE
|
|||||||
specular_buffer = vec4(specular_light, metallic);
|
specular_buffer = vec4(specular_light, metallic);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (scene_data.volumetric_fog_enabled) {
|
// Draw "fixed" fog before volumetric fog to ensure volumetric fog can appear in front of the sky.
|
||||||
vec4 fog = volumetric_fog_process(screen_uv, -vertex.z);
|
if (scene_data.fog_enabled) {
|
||||||
|
vec4 fog = fog_process(vertex);
|
||||||
diffuse_buffer.rgb = mix(diffuse_buffer.rgb, fog.rgb, fog.a);
|
diffuse_buffer.rgb = mix(diffuse_buffer.rgb, fog.rgb, fog.a);
|
||||||
specular_buffer.rgb = mix(specular_buffer.rgb, vec3(0.0), fog.a);
|
specular_buffer.rgb = mix(specular_buffer.rgb, vec3(0.0), fog.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scene_data.fog_enabled) {
|
if (scene_data.volumetric_fog_enabled) {
|
||||||
vec4 fog = fog_process(vertex);
|
vec4 fog = volumetric_fog_process(screen_uv, -vertex.z);
|
||||||
diffuse_buffer.rgb = mix(diffuse_buffer.rgb, fog.rgb, fog.a);
|
diffuse_buffer.rgb = mix(diffuse_buffer.rgb, fog.rgb, fog.a);
|
||||||
specular_buffer.rgb = mix(specular_buffer.rgb, vec3(0.0), fog.a);
|
specular_buffer.rgb = mix(specular_buffer.rgb, vec3(0.0), fog.a);
|
||||||
}
|
}
|
||||||
@ -2747,13 +2748,14 @@ FRAGMENT_SHADER_CODE
|
|||||||
//frag_color = vec4(1.0);
|
//frag_color = vec4(1.0);
|
||||||
#endif //USE_NO_SHADING
|
#endif //USE_NO_SHADING
|
||||||
|
|
||||||
if (scene_data.volumetric_fog_enabled) {
|
// Draw "fixed" fog before volumetric fog to ensure volumetric fog can appear in front of the sky.
|
||||||
vec4 fog = volumetric_fog_process(screen_uv, -vertex.z);
|
if (scene_data.fog_enabled) {
|
||||||
|
vec4 fog = fog_process(vertex);
|
||||||
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scene_data.fog_enabled) {
|
if (scene_data.volumetric_fog_enabled) {
|
||||||
vec4 fog = fog_process(vertex);
|
vec4 fog = volumetric_fog_process(screen_uv, -vertex.z);
|
||||||
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,13 +223,14 @@ FRAGMENT_SHADER_CODE
|
|||||||
|
|
||||||
#if !defined(DISABLE_FOG) && !defined(USE_CUBEMAP_PASS)
|
#if !defined(DISABLE_FOG) && !defined(USE_CUBEMAP_PASS)
|
||||||
|
|
||||||
if (scene_data.volumetric_fog_enabled) {
|
// Draw "fixed" fog before volumetric fog to ensure volumetric fog can appear in front of the sky.
|
||||||
vec4 fog = volumetric_fog_process(uv);
|
if (scene_data.fog_enabled) {
|
||||||
|
vec4 fog = fog_process(cube_normal);
|
||||||
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scene_data.fog_enabled) {
|
if (scene_data.volumetric_fog_enabled) {
|
||||||
vec4 fog = fog_process(cube_normal);
|
vec4 fog = volumetric_fog_process(uv);
|
||||||
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
frag_color.rgb = mix(frag_color.rgb, fog.rgb, fog.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user