Guest User

fsh

a guest
Aug 14th, 2016
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #version 330 core
  2.  
  3.  
  4. struct Material {
  5.     vec3 ambient;
  6.     sampler2D diffuse;
  7.     sampler2D specular;
  8.     float shininess;
  9. };
  10.  
  11. struct Light{
  12.     vec3 ambient;
  13.     vec3 diffuse;
  14.     vec3 specular;
  15.     vec3 pos;
  16. };
  17.  
  18. in vec3 f_pos;
  19. in vec3 f_normal;
  20. in vec2 f_texCoord;
  21.  
  22. uniform Material material;
  23. uniform Light light;
  24. uniform vec3 eyePos;
  25.  
  26. out vec4 color;
  27.  
  28. void main(){
  29.     vec3 diffusePx = texture(material.diffuse, f_texCoord).rgb;
  30.    
  31.     vec3 ambient = light.ambient * diffusePx *0.5;
  32.    
  33.    
  34.     vec3 normal = normalize(f_normal);
  35.     vec3 ray = normalize(light.pos - f_pos);
  36.     float intensity = max(dot(normal, ray), 0.0);
  37.    
  38.     vec3 diffuse = light.diffuse * (intensity * diffusePx);
  39.    
  40.     vec3 viewDir = normalize(eyePos - f_pos);
  41.     vec3 reflectDir = reflect(-ray, normal);
  42.     vec3 specularPx = texture(material.specular, f_texCoord).rgb;
  43.     float spec = pow(max(dot(viewDir, reflectDir), 0.0),128 * material.shininess);
  44.     vec3 specular = light.specular * (spec * specularPx);  
  45.            
  46.     color.rgb = ambient + diffuse + specular;
  47.     color.a = 1.0;
  48. }
Add Comment
Please, Sign In to add comment