daily pastebin goal
71%
SHARE
TWEET

Untitled

a guest Dec 13th, 2013 37 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uniform sampler2D baseTexture;
  2. uniform sampler2D normalTexture;
  3. uniform sampler2D useNormalmap;
  4.  
  5. uniform vec4 skyBgColor;
  6. uniform float fogDistance;
  7. uniform vec3 eyePosition;
  8.  
  9. varying vec3 vPosition;
  10. varying vec3 eyeVec;
  11.  
  12. #ifdef ENABLE_PARALLAX_OCCLUSION
  13. varying vec3 tsEyeVec;
  14. #endif
  15.  
  16. float intensity (vec3 color){
  17. return (color.r + color.g + color.b) / 3.0;
  18. }
  19.  
  20. const float e = 2.718281828459;
  21.  
  22. void main (void)
  23. {
  24.         vec3 color;
  25.         vec2 uv = gl_TexCoord[0].st;
  26.  
  27. #ifdef USE_NORMALMAPS
  28.         float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
  29. #endif
  30.  
  31.  
  32.  
  33. /* Steep parallax code, for future use
  34.         if ((parallaxMappingMode == 2.0) && (use_normalmap > 0.0)) {
  35.                 const float numSteps = 40.0;
  36.                 float height = 1.0;
  37.                 float step = 1.0 / numSteps;
  38.                 vec4 NB = texture2D(normalTexture, uv);
  39.                 vec2 delta = tsEye * parallaxMappingScale / numSteps;
  40.                 for (float i = 0.0; i < numSteps; i++) {
  41.                 if (NB.a < height) {
  42.                         height -= step;
  43.                         uv += delta;
  44.                         NB = texture2D(normalTexture, uv);
  45.                 } else {
  46.                         break;
  47.                 }
  48.                 }
  49.         }
  50. */
  51.  
  52. #ifdef ENABLE_BUMPMAPPING
  53.  
  54.         float ps = 1 / 16.0;
  55.         float step = 1 / 16.0 / 16.0;
  56.         float strength = 4.0;
  57.         float sx = (abs(fract(uv.x / ps) * 2.0 - 1.0));
  58.         float sy = (abs(fract(uv.y / ps) * 2.0 - 1.0));
  59.  
  60.         float tl = intensity(texture2D(baseTexture, vec2(uv.x-step,uv.y+step)).rgb);
  61.         float t = intensity(texture2D(baseTexture, vec2(uv.x,uv.y-step)).rgb);
  62.         float tr = intensity(texture2D(baseTexture, vec2(uv.x+step,uv.y+step)).rgb);
  63.         float r = intensity(texture2D(baseTexture, vec2(uv.x+step,uv.y)).rgb);
  64.         float br = intensity(texture2D(baseTexture, vec2(uv.x+step,uv.y-step)).rgb);
  65.         float b = intensity(texture2D(baseTexture, vec2(uv.x,uv.y-step)).rgb);
  66.         float bl = intensity(texture2D(baseTexture, vec2(uv.x-step,uv.y-step)).rgb);
  67.         float l = intensity(texture2D(baseTexture, vec2(uv.x-step,uv.y)).rgb);
  68.  
  69.         float dX = (tr + 2.0 * r + br) - (tl + 2.0 * l + bl);
  70.         float dY = (bl + 2.0 * b + br) - (tl + 2.0 * t + tr);
  71.         float dZ = 1.0 / (strength);
  72.         //float dZ = 0.5 * sqrt( 1.0 - dX * dX - dY * dY );
  73.  
  74.         vec3 bump = normalize(vec3 (dX, dY, dZ));
  75.  
  76. if (1) {
  77.                 vec3 base = texture2D(baseTexture, uv).rgb;
  78.                 vec3 vVec = normalize(eyeVec);
  79.                 //vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
  80.                 vec3 R = reflect(-vVec, bump);
  81.                 vec3 lVec = normalize(vVec);
  82.                 float diffuse = max(dot(lVec, bump), 0.0);
  83.                 float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
  84.                 color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
  85.         } else {
  86.                 color = texture2D(baseTexture, uv).rgb;
  87.         }
  88. #else
  89.         color = texture2D(baseTexture, uv).rgb;
  90. #endif
  91.  
  92.         float alpha = texture2D(baseTexture, uv).a;
  93.         vec4 col = vec4(color.r, color.g, color.b, alpha);
  94.         col *= gl_Color;
  95.         col = col * col; // SRGB -> Linear
  96.         col *= 1.8;
  97.         col.r = 1.0 - exp(1.0 - col.r) / e;
  98.         col.g = 1.0 - exp(1.0 - col.g) / e;
  99.         col.b = 1.0 - exp(1.0 - col.b) / e;
  100.         col = sqrt(col); // Linear -> SRGB
  101.         if(fogDistance != 0.0){
  102.                 float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
  103.                 col = mix(col, skyBgColor, d);
  104.         }
  105.     gl_FragColor = vec4(col.r, col.g, col.b, alpha);
  106. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top