Multi-Color Lack
Ein Mehrfarbiger Lack.
Screenshot:
Vertex Shader:
uniform vec3 LightPos;
varying float LightIntensity;
varying float SpecIntensity;
varying float CrossP;
vec3 Normal;
void main(){
vec3 zMinus = vec3(0.0,0.0,-1.0);
gl_Position = ftransform();
vec3 pos = vec3(gl_ModelViewMatrix * gl_Vertex);
Normal = normalize(gl_NormalMatrix * gl_Normal);
LightIntensity = max(dot(normalize(LightPos - pos), Normal), 0.0);
//Specular Calculation inspired by Randi Rost's brick-shader: www.3dshaders.com
vec3 lightVec = normalize(LightPos - pos);
vec3 reflectVec = reflect(-lightVec, Normal);
vec3 viewVec = normalize(-pos);
SpecIntensity = max(dot(reflectVec, viewVec), 0.0);
CrossP = max(dot(Normal, viewVec),0.0);
//CrossP = clamp(dot(Normal, zMinus),0.0,1.0);
}
Fragment Shader:
uniform vec3 Color1;
uniform vec3 Color2;
uniform float SpecularLevel;
uniform float SpecularSize;
varying float LightIntensity;
varying float SpecIntensity;
varying float CrossP;
void main(){
vec3 tmpCol = mix(Color1, Color2, CrossP)*LightIntensity;
tmpCol += max(0.0, SpecularLevel * pow(SpecIntensity, SpecularSize));
gl_FragColor = vec4(tmpCol, 1.0);
}