24 lines
653 B
GLSL
24 lines
653 B
GLSL
varying vec2 texCoords;
|
|
varying vec3 normal, viewVector;
|
|
varying vec4 lightVector, lightColor;
|
|
|
|
uniform sampler2D Texture1;
|
|
|
|
void main(void)
|
|
{
|
|
float intensity = dot(normal, lightVector.xyz);
|
|
float fresnel = pow(1.0 - dot(viewVector, normal), 5.0);
|
|
fresnel = fresnel < 0.5 ? 0.0 : 0.4;
|
|
|
|
float shade = 1.0;
|
|
if( intensity > 0.35 )
|
|
shade = clamp(1.0 * intensity + 0.4, 0.0, 1.0);
|
|
else
|
|
shade = clamp(0.85 * intensity + 0.25, 0.4, 0.6);
|
|
shade = clamp(shade - fresnel, 0.3, 1.0);
|
|
|
|
vec4 vcol = gl_FrontMaterial.diffuse;
|
|
vec4 tex = texture2D(Texture1, texCoords);
|
|
|
|
gl_FragColor = lightColor * vec4(tex.rgb * shade, 1.0);
|
|
} |