diff --git a/Effects/forest.eff b/Effects/forest.eff
index 2ab35deb6..e189b587a 100644
--- a/Effects/forest.eff
+++ b/Effects/forest.eff
@@ -34,6 +34,13 @@
0.04
15.0
+
+
+ 0.12
+ 0.86
+ 0.22
+
+
6
@@ -173,6 +180,26 @@
float
+
+ red
+ float
+
+
+
+ green
+ float
+
+
+
+ blue
+ float
+
+
+
+ alpha
+ float
+ 0.0
+
diff --git a/Effects/glacier.eff b/Effects/glacier.eff
index 641c37be0..da9a06146 100644
--- a/Effects/glacier.eff
+++ b/Effects/glacier.eff
@@ -34,6 +34,13 @@
0.01
15.0
+
+
+ 0.12
+ 0.86
+ 0.22
+
+
6
@@ -173,6 +180,26 @@
float
+
+ red
+ float
+
+
+
+ green
+ float
+
+
+
+ blue
+ float
+
+
+
+ alpha
+ float
+ 0.0
+
diff --git a/Effects/herbtundra.eff b/Effects/herbtundra.eff
index 0d30ff2fd..5f97c2112 100644
--- a/Effects/herbtundra.eff
+++ b/Effects/herbtundra.eff
@@ -11,7 +11,7 @@
normalized
- Textures/Terrain/herbtundra-colors.png
+ Textures/Terrain/forest-colors.png
linear-mipmap-linear
mirror
normalized
@@ -33,6 +33,13 @@
0.01
15.0
+
+
+ 0.12
+ 0.86
+ 0.22
+
+
@@ -173,6 +180,26 @@
float
+
+ red
+ float
+
+
+
+ green
+ float
+
+
+
+ blue
+ float
+
+
+
+ alpha
+ float
+ 0.0
+
diff --git a/Shaders/forest.frag b/Shaders/forest.frag
index e54016026..4641a8000 100644
--- a/Shaders/forest.frag
+++ b/Shaders/forest.frag
@@ -15,6 +15,8 @@ uniform sampler2D SampleTex2;
uniform sampler2D NormalTex;
uniform float depth_factor;
+uniform float red, green, blue, alpha;
+
uniform float quality_level; // From /sim/rendering/quality-level
uniform float snowlevel; // From /sim/rendering/snow-level-m
@@ -102,7 +104,7 @@ void main (void)
fogFactor = exp2(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord * LOG2);
float biasFactor = exp2(-0.00000002 * fogCoord * fogCoord * LOG2);
- float n=0.02;
+ float n=0.06;
n += nvL[0]*0.4;
n += nvL[1]*0.6;
n += nvL[2]*2.0;
@@ -126,9 +128,10 @@ void main (void)
//draw floor where !steep, and another blurb for smoothing transitions
vec4 c3, c4, c5, c3a, c4a, c5a;
- c3 = mix(vec4(n-0.88, n-0.14, -n, 0.0), c1, smoothstep(0.990, 0.970, abs(normalize(Normal).z)+nvL[2]*1.3));
- c4 = mix(vec4(n-0.88, n-0.74, -n, 0.0), c1, smoothstep(0.990, 0.890, abs(normalize(Normal).z)+nvL[2]*0.9));
- c4a = mix(vec4(n-0.76, n-0.66, -n, 0.3), c1, smoothstep(0.990, 0.970, abs(normalize(Normal).z)+nvL[2]*1.32));
+ float subred = 1.0 - red; float subgreen = 1.0 - green; float subblue = 1.0 - blue;
+ c3 = mix(vec4(n-subred, n-subgreen, -n-subblue, 0.0), c1, smoothstep(0.990, 0.970, abs(normalize(Normal).z)+nvL[2]*1.3));
+ c4 = mix(vec4(n-subred, n-subgreen-0.6, -n-subblue, 0.0), c1, smoothstep(0.990, 0.890, abs(normalize(Normal).z)+nvL[2]*0.9));
+ c4a = mix(vec4(n-subred+0.12, n-subgreen-0.52, -n-subblue, 0.3), c1, smoothstep(0.990, 0.970, abs(normalize(Normal).z)+nvL[2]*1.32));
c5 = mix(c3, c4, 1.0);
c5a = mix(c3, c4a, 1.0);
@@ -172,11 +175,8 @@ void main (void)
c1 = mix(c1, c5, clamp(0.65, n*0.5, 0.6));
diffuse = gl_Color.rgb * max(0.8, dot(N, l)) * max(0.9, dot(VNormal, gl_LightSource[0].position.xyz));
}
-
- //should come as varying!
- vec4 constantColor = vec4(1.0, 1.0, 1.0, 0.0);
- vec4 ambient_light = gl_LightSource[0].diffuse * constantColor * vec4(diffuse, 1.0);
+ vec4 ambient_light = gl_LightSource[0].diffuse * vec4(diffuse, 0.0);
c1 *= ambient_light;
vec4 finalColor = c1;
@@ -184,5 +184,5 @@ void main (void)
if(gl_Fog.density == 1.0)
fogFactor=1.0;
- gl_FragColor = mix(gl_Fog.color ,finalColor, fogFactor);
+ gl_FragColor = mix(gl_Fog.color,finalColor, fogFactor);
}