Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 330 core
- struct Material {
- vec3 ambient;
- sampler2D diffuse;
- sampler2D specular;
- float shininess;
- };
- struct Light{
- vec3 ambient;
- vec3 diffuse;
- vec3 specular;
- vec3 pos;
- };
- in vec3 f_pos;
- in vec3 f_normal;
- in vec2 f_texCoord;
- uniform Material material;
- uniform Light light;
- uniform vec3 eyePos;
- out vec4 color;
- void main(){
- vec3 diffusePx = texture(material.diffuse, f_texCoord).rgb;
- vec3 ambient = light.ambient * diffusePx *0.5;
- vec3 normal = normalize(f_normal);
- vec3 ray = normalize(light.pos - f_pos);
- float intensity = max(dot(normal, ray), 0.0);
- vec3 diffuse = light.diffuse * (intensity * diffusePx);
- vec3 viewDir = normalize(eyePos - f_pos);
- vec3 reflectDir = reflect(-ray, normal);
- vec3 specularPx = texture(material.specular, f_texCoord).rgb;
- float spec = pow(max(dot(viewDir, reflectDir), 0.0),128 * material.shininess);
- vec3 specular = light.specular * (spec * specularPx);
- color.rgb = ambient + diffuse + specular;
- color.a = 1.0;
- }
Add Comment
Please, Sign In to add comment