Bloom.frag.glsl 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include "shaders/Common.glsl"
  6. #include "shaders/Tonemapping.glsl"
  7. // Vars
  8. layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex; ///< Its the IS RT
  9. layout(ANKI_UBO_BINDING(0, 0), std140) uniform u0_
  10. {
  11. vec4 u_thresholdScalePad2;
  12. };
  13. layout(ANKI_SS_BINDING(0, 0), std140) readonly buffer ss0_
  14. {
  15. vec4 u_averageLuminancePad3;
  16. };
  17. layout(location = 0) in vec2 in_uv;
  18. layout(location = 0) out vec4 out_color;
  19. void main()
  20. {
  21. const vec2 TEXEL_SIZE = 1.0 / vec2(WIDTH, HEIGHT);
  22. vec3 color = textureLod(u_tex, in_uv, 0.0).rgb;
  23. color += textureLod(u_tex, in_uv + TEXEL_SIZE, 0.0).rgb;
  24. color += textureLod(u_tex, in_uv - TEXEL_SIZE, 0.0).rgb;
  25. color += textureLod(u_tex, in_uv + vec2(TEXEL_SIZE.x, -TEXEL_SIZE.y), 0.0).rgb;
  26. color += textureLod(u_tex, in_uv + vec2(-TEXEL_SIZE.x, TEXEL_SIZE.y), 0.0).rgb;
  27. color /= 5.0;
  28. color = tonemap(color, u_averageLuminancePad3.x, u_thresholdScalePad2.x) * u_thresholdScalePad2.y;
  29. out_color = vec4(color, 0.25);
  30. }