ho3/resources/shaders/NIU/multilight_bump.fragment

44 lines
1015 B
Plaintext
Raw Normal View History

2024-06-06 13:25:38 +00:00
uniform sampler2D Texture;
uniform sampler2D NormalMap;
uniform int NormalMapExists;
varying vec2 texCoord;
varying int activeLightCount;
varying vec3 camVec;
varying vec3 lightVec[8];
void main()
{
vec3 norm;
vec4 ambient;
vec4 diffuse;
vec4 specular;
vec3 cVec = normalize(camVec);
vec3 lVec;
vec3 TexRGB = texture2D(Texture, texCoord.st).rgb;
if (NormalMapExists == 0)
{
norm = vec3(0.0,0.0,1.0);
}
else
{
norm = (texture2D(NormalMap, texCoord.st).rgb - 0.5) * 2.0;
}
float shineFactor = 15.0 * pow(max(dot(cVec, norm),0.0),gl_FrontMaterial.shininess) / (129.0 - gl_FrontMaterial.shininess);
gl_FragColor = vec4(0.0,0.0,0.0,1.0);
for (int i=0; i<activeLightCount; i++)
{
lVec = normalize(lightVec[i]);
ambient = gl_LightSource[i].ambient;
diffuse = gl_FrontMaterial.diffuse * gl_LightSource[i].diffuse * max( dot(lVec,norm),0.0);
specular = gl_LightSource[i].specular * shineFactor;
gl_FragColor += vec4(TexRGB,1.0)*ambient+(vec4(TexRGB,1.0)*diffuse+specular);
}
}