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
+