lensHighlights.fragment.fx 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. // samplers
  2. uniform sampler2D textureSampler; // original color
  3. // uniforms
  4. uniform float gain;
  5. uniform float threshold;
  6. uniform float screen_width;
  7. uniform float screen_height;
  8. // varyings
  9. varying vec2 vUV;
  10. // apply luminance filter
  11. vec4 highlightColor(vec4 color) {
  12. vec4 highlight = color;
  13. float luminance = dot(highlight.rgb, vec3(0.2125, 0.7154, 0.0721));
  14. float lum_threshold;
  15. if (threshold > 1.0) { lum_threshold = 0.94 + 0.01 * threshold; }
  16. else { lum_threshold = 0.5 + 0.44 * threshold; }
  17. luminance = clamp((luminance - lum_threshold) * (1.0 / (1.0 - lum_threshold)), 0.0, 1.0);
  18. highlight *= luminance * gain;
  19. highlight.a = 1.0;
  20. return highlight;
  21. }
  22. void main(void)
  23. {
  24. vec4 original = texture2D(textureSampler, vUV);
  25. // quick exit if no highlight computing
  26. if (gain == -1.0) {
  27. gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
  28. return;
  29. }
  30. float w = 2.0 / screen_width;
  31. float h = 2.0 / screen_height;
  32. float weight = 1.0;
  33. // compute blurred color
  34. vec4 blurred = vec4(0.0, 0.0, 0.0, 0.0);
  35. #ifdef PENTAGON
  36. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.84*w, 0.43*h)));
  37. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.48*w, -1.29*h)));
  38. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.61*w, 1.51*h)));
  39. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.55*w, -0.74*h)));
  40. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.71*w, -0.52*h)));
  41. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.94*w, 1.59*h)));
  42. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.40*w, -1.87*h)));
  43. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.62*w, 1.16*h)));
  44. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.09*w, 0.25*h)));
  45. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.46*w, -1.71*h)));
  46. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.08*w, 2.42*h)));
  47. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.85*w, -1.89*h)));
  48. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.89*w, 0.16*h)));
  49. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.29*w, 1.88*h)));
  50. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.40*w, -2.81*h)));
  51. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.54*w, 2.26*h)));
  52. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.60*w, -0.61*h)));
  53. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.31*w, -1.30*h)));
  54. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.83*w, 2.53*h)));
  55. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.12*w, -2.48*h)));
  56. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.60*w, 1.11*h)));
  57. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.82*w, 0.99*h)));
  58. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.50*w, -2.81*h)));
  59. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.85*w, 3.33*h)));
  60. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.94*w, -1.92*h)));
  61. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.27*w, -0.53*h)));
  62. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.95*w, 2.48*h)));
  63. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.23*w, -3.04*h)));
  64. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.17*w, 2.05*h)));
  65. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.97*w, -0.04*h)));
  66. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.25*w, -2.00*h)));
  67. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.31*w, 3.08*h)));
  68. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.94*w, -2.59*h)));
  69. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.37*w, 0.64*h)));
  70. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.13*w, 1.93*h)));
  71. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.03*w, -3.65*h)));
  72. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.60*w, 3.17*h)));
  73. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.14*w, -1.19*h)));
  74. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.00*w, -1.19*h)));
  75. #else
  76. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.85*w, 0.36*h)));
  77. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.52*w, -1.14*h)));
  78. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.46*w, 1.42*h)));
  79. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.46*w, -0.83*h)));
  80. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.79*w, -0.42*h)));
  81. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.11*w, 1.62*h)));
  82. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.29*w, -2.07*h)));
  83. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.69*w, 1.39*h)));
  84. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.28*w, 0.12*h)));
  85. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.65*w, -1.69*h)));
  86. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.08*w, 2.44*h)));
  87. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.63*w, -1.90*h)));
  88. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.55*w, 0.31*h)));
  89. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.13*w, 1.52*h)));
  90. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.56*w, -2.61*h)));
  91. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.38*w, 2.34*h)));
  92. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.64*w, -0.81*h)));
  93. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.53*w, -1.21*h)));
  94. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.06*w, 2.63*h)));
  95. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.00*w, -2.69*h)));
  96. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.59*w, 1.32*h)));
  97. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.82*w, 0.78*h)));
  98. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.57*w, -2.50*h)));
  99. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(0.54*w, 2.93*h)));
  100. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.39*w, -1.81*h)));
  101. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.01*w, -0.28*h)));
  102. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.04*w, 2.25*h)));
  103. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.02*w, -3.05*h)));
  104. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.09*w, 2.25*h)));
  105. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-3.07*w, -0.25*h)));
  106. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.44*w, -1.90*h)));
  107. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-0.52*w, 3.05*h)));
  108. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-1.68*w, -2.61*h)));
  109. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(3.01*w, 0.79*h)));
  110. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.76*w, 1.46*h)));
  111. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.05*w, -2.94*h)));
  112. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(1.21*w, 2.88*h)));
  113. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(-2.84*w, -1.30*h)));
  114. blurred += highlightColor(texture2D(textureSampler, vUV + vec2(2.98*w, -0.96*h)));
  115. #endif
  116. blurred /= 39.0;
  117. gl_FragColor = blurred;
  118. //if(vUV.x > 0.5) { gl_FragColor.rgb *= 0.0; }
  119. }