Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 330
- out vec4 outputColor;
- in vec3 Position_worldspace;
- in vec3 Normal_cameraspace;
- in vec3 EyeDirection_cameraspace;
- in vec3 LightDirection_cameraspace;
- uniform vec3 lightPosition;
- void main()
- {
- vec3 LightColor = vec3(1,1,1);
- float LightPower = 50.0f;
- vec3 MaterialDiffuseColor = vec3(0.3,0.8,0.3);
- vec3 MaterialAmbientColor = vec3(0.1,0.1,0.1) * MaterialDiffuseColor;
- vec3 MaterialSpecularColor = vec3(0.3,0.3,0.3);
- float distance = length(lightPosition - Position_worldspace);
- vec3 n = normalize(Normal_cameraspace);
- vec3 l = normalize(LightDirection_cameraspace);
- float cosTheta = clamp(dot(n,l),0,1);
- vec3 E = normalize(EyeDirection_cameraspace);
- vec3 R = reflect(-l,n);
- float cosAlpha = clamp(dot(E,R),0,1);
- vec3 color =
- // Ambient : simulates indirect lighting
- MaterialAmbientColor +
- // Diffuse : "color" of the object
- MaterialDiffuseColor * LightColor * LightPower * cosTheta / (distance*distance) +
- // Specular : reflective highlight, like a mirror
- MaterialSpecularColor * LightColor * LightPower * pow(cosAlpha,5) / (distance*distance);
- outputColor = vec4(color, 1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement