uniform float matPower;
uniform bool matTwoSided;
+// Fog
+uniform bool fogOn;
+uniform float fogDensity;
+uniform vec3 fogColor;
+
in vec2 texCoord;
in vec3 vertex;
in vec3 normal;
void main(void)
{
+ float f = 1;
vec3 n = normalize(mat3x3(modelview_matrix) * normal);
- gl_Position = projection_matrix * modelview_matrix * vec4(vertex, 1.0);
+ vec4 pos = modelview_matrix * vec4(vertex, 1.0);
+
+ gl_Position = projection_matrix * pos;
fTexCoord = texCoord;
+ if(fogOn)
+ f = clamp(exp(fogDensity * pos.z), 0, 1);
+
if(lightingOn)
{
int i;
float opacity = perVertexColor ? color.w : matOpacity;
vec3 c = vec3(0);
vec3 c2 = vec3(0);
- vec3 ecPosition3 = vec3(gl_Position) / gl_Position.w;
+ // vec3 ecPosition3 = vec3(gl_Position) / gl_Position.w;
vec3 eye = vec3(0.0, 0.0, 1.0);
fColor = vec4(0);
c += matEmissive;
fColor = vec4(c, opacity);
+ if(fogOn)
+ fColor = f * fColor + (1-f) * vec4(fogColor, 1);
+
if(matTwoSided)
{
c2 += ambientColor * globalAmbient;
c2 += matEmissive;
fColorBack = vec4(c2, opacity);
+
+ if(fogOn)
+ fColorBack = f * fColorBack + (1-f) * vec4(fogColor, 1);
}
}
else
+ {
fColor = current_color * color;
+
+ if(fogOn)
+ fColor = f * fColor + (1-f) * vec4(fogColor, 1);
+ }
}