Advertisement
Guest User

Untitled

a guest
Oct 19th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. // SG_lab2 23-11-2016
  2. // fog.fs
  3. //
  4. varying vec3 N; // interpolowany wektor normalny powierzchni
  5. varying vec3 L[ 3 ]; // maksymalnie trzy intepolowane wektory światła
  6.  
  7. void main( void )
  8. {
  9. const float specularExp = 128.0;
  10. const vec4 fogColor = vec4(0.5,1.0,0.0,1.0);
  11. const float e=2.71828;
  12. const float density = 0.9;
  13. float fogExp = gl_FragCoord.z * density;
  14. fogExp = fogExp *fogExp;
  15. float fogFactor = clamp(pow(e, -fogExp),0.0,1.0);
  16.  
  17. vec3 NN = normalize(N);
  18. vec3 color[ 3 ];
  19. color[0] = vec3(2,1,1);
  20. color[1] = vec3(1,2,1);
  21. color[2] = vec3(1,1,2);
  22.  
  23. for(int i=0;i<3;i++){
  24. vec3 NL = normalize(L[i]);
  25. vec3 NH = normalize(NL + vec3(0.0, 0.0, 1.0));
  26. float intensity = max(0.0,dot(NN,NL));
  27. vec3 diffuse = gl_Color.xyz * intensity;
  28. vec3 specular;
  29. if(intensity <= 0){
  30. specular = vec3(0.0, 0.0, 0.0);
  31. }else{
  32. intensity = max(0.0,dot(NN,NH));
  33. specular = vec3(pow(intensity,specularExp));
  34. }
  35. gl_FragColor.xyz += color[i]*diffuse + color[i]*specular;
  36. }
  37. gl_FragColor.a = gl_Color.a;
  38.  
  39. gl_FragColor = mix(fogColor,gl_FragColor,fogFactor); // skopiowanie głównego koloru (primary color)
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement