paysages3d/src/render/opengl/shaders/water.frag

31 lines
1,002 B
GLSL
Raw Normal View History

uniform vec4 waterMaterialColor;
uniform float waterMaterialReflection;
uniform float waterMaterialShininess;
uniform float waterMaterialHardness;
uniform float waterReflection;
uniform float[4] waterNoise;
2015-12-07 22:32:55 +00:00
out vec4 final_color;
2013-12-24 10:48:06 +00:00
float getDetail(vec3 location) {
2016-01-13 16:49:42 +00:00
return max(min(pow(length(location - cameraLocation) * 0.001, 2.0), 0.01), 0.00002);
}
2013-12-21 23:41:19 +00:00
void main(void)
{
vec3 normal = noiseNormal2d(waterNoise, unprojected.xz, getDetail(unprojected));
2015-12-07 22:32:55 +00:00
final_color = applyLighting(unprojected, normal, waterMaterialColor, waterMaterialReflection, waterMaterialShininess, waterMaterialHardness);
vec3 reflected = reflect(unprojected - cameraLocation, normal);
reflected.y = max(reflected.y, 0.0);
2015-12-07 22:32:55 +00:00
final_color += getSkyColor(unprojected, reflected) * waterReflection;
2013-12-22 00:17:57 +00:00
2015-12-07 22:32:55 +00:00
final_color = applyAerialPerspective(final_color);
2013-12-22 00:17:57 +00:00
2015-12-07 22:32:55 +00:00
final_color = applyToneMapping(final_color);
2013-12-22 00:17:57 +00:00
2015-12-07 22:32:55 +00:00
final_color = applyMouseTracking(unprojected, final_color);
2015-12-07 22:32:55 +00:00
final_color.a = distanceFadeout();
2013-12-21 23:41:19 +00:00
}