diff --git a/src/distrib/shaders/reflexion_lines.frag b/src/distrib/shaders/reflexion_lines.frag index 5a21c4a8d..1236e164a 100644 --- a/src/distrib/shaders/reflexion_lines.frag +++ b/src/distrib/shaders/reflexion_lines.frag @@ -31,6 +31,11 @@ varying vec3 Normal; uniform float ScaleFactor; uniform float Smoothing; +uniform float Shading; + +float arcSinus(float x) { + return x * (1 + x*x * ((1.0/6.0) + x*x * ((3.0/40.0) + (15.0/336.0)*x*x))); +} void main (void) { @@ -44,8 +49,14 @@ void main (void) reflexionVector.z = 0.5/sqrt(dot(reflexionVector,reflexionVector)); reflexionVector.xy = (reflexionVector.xy*reflexionVector.z) + 0.5; reflexionVector *= 2.0; - color = vec4(clamp(0.5 + Smoothing * sin(2.0 * 3.1428 * reflexionVector.x*ScaleFactor), 0.0, 1.0)); - +// color = vec4(clamp(0.5 + Smoothing * sin(2.0 * 3.1428 * reflexionVector.x*ScaleFactor), 0.0, 1.0), +// clamp(0.5 + Smoothing * sin(2.0 * 3.1428 * reflexionVector.y*ScaleFactor), 0.0, 1.0), +// clamp(0.5 + Smoothing * sin(2.0 * 3.1428 * reflexionVector.z*ScaleFactor), 0.0, 1.0), +// 1.0); + + float sharpness = 1.0/arcSinus(Smoothing*fwidth(reflexionVector.x)*2.0*ScaleFactor); + color = vec4(clamp(0.5 + sharpness * sin(2.0 * 3.1428 * reflexionVector.x*ScaleFactor), 0.0, 1.0)); color.a = 1.0; - gl_FragColor = min(color, vec4(1.0,1.0,1.0,1.0)); + gl_FragColor = vec4(vec3(sharpness), 1.0); + gl_FragColor = clamp(dot(gl_LightSource[0].position.xyz, n)*Shading + (1.0-Shading), 0.0, 1.0) * min(color, vec4(1.0,1.0,1.0,1.0)); } diff --git a/src/distrib/shaders/reflexion_lines.gdp b/src/distrib/shaders/reflexion_lines.gdp index f57a626c3..6cd7e6ad8 100644 --- a/src/distrib/shaders/reflexion_lines.gdp +++ b/src/distrib/shaders/reflexion_lines.gdp @@ -42,13 +42,17 @@ - + - + - + + + + + @@ -64,4 +68,4 @@ - \ No newline at end of file +