postgiF.glsl
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:1k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file postgiF.glsl
  3.  *
  4.  * Copyright (c) 2007-$CurrentYear$, Linden Research, Inc.
  5.  * $License$
  6.  */
  7. #extension GL_ARB_texture_rectangle : enable
  8. uniform sampler2DRect depthMap;
  9. uniform sampler2DRect normalMap;
  10. uniform sampler2DRect giLightMap;
  11. uniform sampler2D noiseMap;
  12. uniform sampler2D giMip;
  13. uniform sampler2DRect edgeMap;
  14. uniform vec2 delta;
  15. uniform float kern_scale;
  16. uniform float gi_edge_weight;
  17. uniform float gi_blur_brightness;
  18. varying vec2 vary_fragcoord;
  19. void main() 
  20. {
  21. vec2 dlt = kern_scale*delta;
  22. float defined_weight = 0.0; 
  23. vec3 col = vec3(0.0); 
  24. float e = 1.0;
  25. for (int i = 1; i < 8; i++)
  26. {
  27. vec2 tc = vary_fragcoord.xy + float(i) * dlt;
  28. e = max(e, 0.0);
  29. float wght = e;
  30.     col += texture2DRect(giLightMap, tc).rgb*wght;
  31. defined_weight += wght;
  32. e *= e;
  33. e -=(texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
  34. texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
  35. }
  36. e = 1.0;
  37. for (int i = 1; i < 8; i++)
  38. {
  39. vec2 tc = vary_fragcoord.xy - float(i) * dlt;
  40. e = max(e,0.0);
  41. float wght = e;
  42.     col += texture2DRect(giLightMap, tc).rgb*wght;
  43. defined_weight += wght;
  44. e *= e;
  45. e -= (texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
  46. texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
  47. }
  48. col /= max(defined_weight, 0.01);
  49. gl_FragColor.rgb = col * gi_blur_brightness;
  50. }