Pps.glsl 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #pragma anki vertShaderBegins
  2. #pragma anki include "shaders/simple_vert.glsl"
  3. #pragma anki fragShaderBegins
  4. #pragma anki include "shaders/photoshop_filters.glsl"
  5. #pragma anki include "shaders/median_filter.glsl"
  6. uniform sampler2D isFai;
  7. uniform sampler2D ppsSsaoFai;
  8. uniform sampler2D msNormalFai;
  9. uniform sampler2D ppsHdrFai;
  10. uniform sampler2D ppsLscattFai;
  11. varying vec2 texCoords;
  12. /*
  13. =======================================================================================================================================
  14. GrayScale =
  15. =======================================================================================================================================
  16. */
  17. vec3 GrayScale( in vec3 _col )
  18. {
  19. float _grey = (_col.r + _col.g + _col.b) * 0.333333333; // aka: / 3.0
  20. return vec3(_grey);
  21. }
  22. /*
  23. =======================================================================================================================================
  24. Saturation =
  25. =======================================================================================================================================
  26. */
  27. vec3 Saturation( in vec3 _col, in float _satur_factor )
  28. {
  29. const vec3 lumCoeff = vec3 ( 0.2125, 0.7154, 0.0721);
  30. vec3 intensity = vec3( dot(_col, lumCoeff) );
  31. return mix( intensity, _col, _satur_factor );
  32. }
  33. /*
  34. =======================================================================================================================================
  35. EdgeAA =
  36. =======================================================================================================================================
  37. */
  38. #if defined(_EDGEAA_)
  39. vec3 EdgeAA()
  40. {
  41. ivec2 texSize = textureSize(msNormalFai,0);
  42. vec2 pixelsize = vec2( 1.0/(float(texSize.x)), 1.0/(float(texSize.y)) );
  43. const vec2 kernel[8] = vec2[]( vec2(-1.0,1.0), vec2(1.0,-1.0), vec2(-1.0,-1.0), vec2(1.0,1.0), vec2(-1.0,0.0), vec2(1.0,0.0), vec2(0.0,-1.0), vec2(0.0,1.0) );
  44. const float weight = 1.0;
  45. vec3 tex = texture2D( msNormalFai, texCoords ).rgb;
  46. float factor = -0.5;
  47. for( int i=0; i<4; i++ )
  48. {
  49. vec3 t = texture2D( msNormalFai, texCoords + kernel[i]*pixelsize ).rgb;
  50. t -= tex;
  51. factor += dot(t, t);
  52. }
  53. factor = min(1.0, factor) * weight;
  54. //return vec3(factor);
  55. //if( factor < 0.01 ) return texture2D( isFai, texCoords ).rgb;
  56. vec3 color = vec3(0.0);
  57. for( int i=0; i<8; i++ )
  58. {
  59. color += texture2D( isFai, texCoords + kernel[i]*pixelsize*factor ).rgb;
  60. }
  61. color += 2.0 * texture2D( isFai, texCoords ).rgb;
  62. return color*(1.0/9.0);
  63. // const float aob = 1.0; // area of blur
  64. //
  65. // vec2 kernel[8];
  66. // kernel[0] = vec2(-aob,aob);
  67. // kernel[1] = vec2(aob,-aob);
  68. // kernel[2] = vec2(-aob,-aob);
  69. // kernel[3] = vec2(aob,aob);
  70. // kernel[4] = vec2(-aob,0);
  71. // kernel[5] = vec2(aob,0);
  72. // kernel[6] = vec2(0,-aob);
  73. // kernel[7] = vec2(0,aob);
  74. //
  75. // vec2 pixelsize = vec2( 1.0/R_W, 1.0/R_H );
  76. //
  77. // float d = ReadLinearDepth( texCoords );
  78. // float factor = 0.0;
  79. //
  80. // const float weight = 8.0;
  81. //
  82. // for( int i=0; i<4; i++ )
  83. // {
  84. // float ds = ReadLinearDepth( texCoords + kernel[i]*pixelsize );
  85. //
  86. // factor += abs(d - ds);
  87. // }
  88. //
  89. // factor = (factor / 4)*weight;
  90. //
  91. // //return vec3(factor);
  92. //
  93. // /*if( factor < 0.001 )
  94. // {
  95. // return texture2D( isFai, texCoords ).rgb;
  96. // }*/
  97. //
  98. // vec3 color = vec3(0.0);
  99. //
  100. // for( int i=0; i<8; i++ )
  101. // {
  102. // color += texture2D( isFai, texCoords + kernel[i]*pixelsize*factor ).rgb;
  103. // }
  104. //
  105. // color += 2.0 * texture2D( isFai, texCoords ).rgb;
  106. //
  107. // return color*(1.0/10.0);
  108. }
  109. #endif
  110. /*
  111. =======================================================================================================================================
  112. main =
  113. =======================================================================================================================================
  114. */
  115. void main (void)
  116. {
  117. vec3 color;
  118. #if defined(_EDGEAA_)
  119. color = EdgeAA();
  120. #else
  121. color = texture2D( isFai, texCoords ).rgb;
  122. #endif
  123. /*const float gamma = 0.7;
  124. color.r = pow(color.r, 1.0 / gamma);
  125. color.g = pow(color.g, 1.0 / gamma);
  126. color.b = pow(color.b, 1.0 / gamma);*/
  127. #if defined(_SSAO_)
  128. float ssao_factor = texture2D( ppsSsaoFai, texCoords ).a;
  129. color *= ssao_factor;
  130. #endif
  131. #if defined(_LSCATT_)
  132. vec3 lscatt = texture2D( ppsLscattFai, texCoords ).rgb;
  133. color += lscatt;
  134. #endif
  135. #if defined(_HDR_)
  136. vec3 hdr = texture2D( ppsHdrFai, texCoords ).rgb;
  137. color += hdr;
  138. #endif
  139. color = BlendHardLight( vec3(0.6, 0.62, 0.4), color );
  140. gl_FragData[0].rgb = color;
  141. //gl_FragColor = vec4( color, 1.0 );
  142. //gl_FragColor = vec4( GrayScale(gl_FragColor.rgb), 1.0 );
  143. //gl_FragData[0] = vec4( ssao_factor );
  144. //gl_FragData[0] = vec4( lscatt, 1.0 );
  145. //gl_FragData[0] = vec4( bloom_factor );
  146. //gl_FragColor = vec4( EdgeAA(), 1.0 );
  147. //gl_FragColor = texture2D( pps_boom_fai, texCoords );
  148. //gl_FragColor = texture2D( isFai, texCoords );
  149. //gl_FragData[0].rgb = UnpackNormal( texture2D( msNormalFai, texCoords ).rg );
  150. //gl_FragData[0] = vec4( hdr, 1.0 );
  151. }