Improved fog quality

This commit is contained in:
MihailRis 2021-09-17 19:16:57 +03:00 committed by GitHub
parent 01c6c854e1
commit e796bd0e69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 5 deletions

View File

@ -2,13 +2,16 @@
in vec4 a_color;
in vec2 a_texCoord;
in float a_distance;
out vec4 f_color;
uniform sampler2D u_texture0;
uniform vec3 u_fogColor;
void main(){
vec4 tex_color = texture(u_texture0, a_texCoord);
if (tex_color.a < 0.5)
discard;
f_color = a_color * tex_color;
float depth = (a_distance/256.0)*(a_distance/256.0)*256.0;
f_color = mix(a_color * tex_color, vec4(u_fogColor,1.0), min(1.0, depth/256.0));
}

View File

@ -6,17 +6,19 @@ layout (location = 2) in vec4 v_light;
out vec4 a_color;
out vec2 a_texCoord;
out float a_distance;
uniform mat4 u_model;
uniform mat4 u_projview;
uniform mat4 u_proj;
uniform mat4 u_view;
uniform vec3 u_skyLightColor;
uniform float u_gamma;
void main(){
vec4 position = u_projview * u_model * vec4(v_position, 1.0);
vec4 viewmodelpos = u_view * u_model * vec4(v_position, 1.0);
a_color = vec4(pow(v_light.rgb, vec3(u_gamma)),1.0f);
a_texCoord = v_texCoord;
a_color.rgb += u_skyLightColor * v_light.a*0.5;
a_color.rgb *= 1.0-position.z*0.0025;
gl_Position = position;
a_distance = length(viewmodelpos);
gl_Position = u_proj * viewmodelpos;
}