Fog applied to line objects.

This commit is contained in:
stele
2018-12-24 23:50:17 +01:00
parent 141e812308
commit 8aca8bffe4
4 changed files with 16 additions and 11 deletions

9
shaders/apply_fog.glsl Normal file
View File

@@ -0,0 +1,9 @@
vec3 apply_fog(vec3 color)
{
float sun_amount = 0.0;
if (lights_count >= 1U && lights[0].type == LIGHT_DIR)
sun_amount = max(dot(normalize(f_pos.xyz), normalize(-lights[0].dir)), 0.0);
vec3 fog_color_v = mix(fog_color, lights[0].color, pow(sun_amount, 30.0));
float fog_amount_v = 1.0 - min(1.0, exp(-length(f_pos.xyz) * fog_density));
return mix(color, fog_color_v, fog_amount_v);
}

View File

@@ -1,3 +1,5 @@
#include <apply_fog.glsl>
float calc_shadow()
{
#if SHADOWMAP_ENABLED
@@ -23,16 +25,6 @@ float calc_shadow()
#endif
}
vec3 apply_fog(vec3 color)
{
float sun_amount = 0.0;
if (lights_count >= 1U && lights[0].type == LIGHT_DIR)
sun_amount = max(dot(normalize(f_pos.xyz), normalize(-lights[0].dir)), 0.0);
vec3 fog_color_v = mix(fog_color, lights[0].color, pow(sun_amount, 30.0));
float fog_amount_v = 1.0 - min(1.0, exp(-length(f_pos.xyz) * fog_density));
return mix(color, fog_color_v, fog_amount_v);
}
// [0] - diffuse, [1] - specular
// do magic here
vec2 calc_light(vec3 light_dir)

View File

@@ -1,5 +1,6 @@
#include <common>
in vec4 f_pos;
in vec4 f_clip_pos;
in vec4 f_clip_future_pos;
@@ -9,10 +10,11 @@ layout(location = 1) out vec4 out_motion;
#endif
#include <tonemapping.glsl>
#include <apply_fog.glsl>
void main()
{
vec4 color = vec4(pow(param[0].rgb, vec3(2.2)), param[0].a);
vec4 color = vec4(apply_fog(pow(param[0].rgb, vec3(2.2))), param[0].a);
#if POSTFX_ENABLED
out_color = color;
#else

View File

@@ -6,9 +6,11 @@ layout(location = 2) in vec2 v_coord;
out vec4 f_clip_pos;
out vec4 f_clip_future_pos;
out vec4 f_pos;
void main()
{
f_pos = modelview * vec4(v_vert, 1.0f);
f_clip_pos = (projection * modelview) * vec4(v_vert, 1.0f);
f_clip_future_pos = (projection * future * modelview) * vec4(v_vert, 1.0f);