Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. #define shininess 0.0325
  2.  
  3. uniform samplerCube environment_map;
  4.  
  5. #ifdef DOUBLE_REFRACTION
  6. uniform sampler2D backface_texture;
  7. uniform sampler2D backface_depth;
  8. uniform mat4 mModelViewProjection;
  9. uniform mat4 mModelViewProjectionInverse;
  10. uniform vec3 vCamera;
  11. #endif
  12.  
  13. uniform vec3 cLightColor;
  14. uniform float indexOfRefraction;
  15.  
  16. in vec3 vLightWS;
  17. in vec3 vViewWS;
  18. in vec3 vNormalWS;
  19. in vec2 TexCoord;
  20. in vec4 vProjectedVertex;
  21. in vec4 vVertexWS;
  22.  
  23. out vec4 FragColor;
  24.  
  25. #include <include\CookTorranceEx.h>
  26. #include <include\ImageSpaceIntersection.h>
  27. #include <include\Fresnel.h>
  28. #include <include\Refraction.h>
  29.  
  30. void main()
  31. {
  32. vec3 vNormal = normalize(vNormalWS);
  33. vec3 vLightNormal = normalize(vLightWS);
  34. vec3 vViewNormal = normalize(vViewWS);
  35.  
  36. float VdotN = max(0.0, dot(vViewNormal, vNormal));
  37. float fFresnel = fresnel(VdotN, indexOfRefraction);
  38.  
  39. vec3 vReflected = reflect(-vViewNormal, vNormal);
  40. vec4 cReflection = texture(environment_map, vReflected);
  41.  
  42. vec3 vRefracted = computeRefractedVector(-vViewNormal, vNormal, indexOfRefraction);
  43.  
  44. #ifdef DOUBLE_REFRACTION
  45. vec3 vBackfaceIntersection = estimateIntersection(vVertexWS.xyz, vRefracted, mModelViewProjection, mModelViewProjectionInverse, backface_depth);
  46. vec3 vInnerRay = normalize(vBackfaceIntersection - vVertexWS.xyz);
  47. vec4 vProjectedBI = mModelViewProjection * vec4(vBackfaceIntersection, 1.0);
  48. vec3 vBackfaceNormal = vec3(1.0) - 2.0 * texture(backface_texture, vec2(0.5) + 0.5 * vProjectedBI.xy / vProjectedBI.w).xyz;
  49. vec3 vBackfaceRefracted = computeRefractedVector(vInnerRay, vBackfaceNormal.xyz, 1.0 / indexOfRefraction);
  50. vec4 cBackfaceColor = texture(environment_map, vBackfaceRefracted);
  51. #else
  52. vec4 cBackfaceColor = texture(environment_map, vRefracted);
  53. #endif
  54.  
  55. vec4 cColor = mix(cBackfaceColor, cReflection, fFresnel);
  56. float fLight = CookTorranceEx(vNormal, vLightNormal, vViewNormal, fFresnel, shininess);
  57. vec4 vSpecularColor = cLightColor.xyzz * fLight;
  58.  
  59. FragColor = mix(indexOfRefraction, cReflection, fFresnel);//cColor + vSpecularColor;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement