luminance_trunced.glslf 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #version GLSL_VERSION
  2. #include <precision_statement.glslf>
  3. #include <std.glsl>
  4. uniform sampler2D u_main;
  5. uniform sampler2D u_luminance;
  6. uniform sampler2D u_average_lum;
  7. uniform float u_bloom_edge_lum;
  8. /*==============================================================================
  9. SHADER INTERFACE
  10. ==============================================================================*/
  11. GLSL_IN vec2 v_texcoord;
  12. GLSL_IN float v_bloom_factor;
  13. //------------------------------------------------------------------------------
  14. GLSL_OUT vec4 GLSL_OUT_FRAG_COLOR;
  15. /*==============================================================================
  16. MAIN
  17. ==============================================================================*/
  18. void main(void) {
  19. float average_lum = GLSL_TEXTURE(u_average_lum, vec2(0.5)).r;
  20. float lum = GLSL_TEXTURE(u_luminance, v_texcoord).r;
  21. vec4 color = GLSL_TEXTURE(u_main, v_texcoord);
  22. float rel_lum = lum / average_lum;
  23. float edge_lum = u_bloom_edge_lum;
  24. GLSL_OUT_FRAG_COLOR = color * max(rel_lum - edge_lum, 0.0) * v_bloom_factor;
  25. // NOTE: possible tone mapping
  26. //float mapped_lum = 0.3;
  27. //float D = rel_lum * (1.0 + rel_lum / (mapped_lum * mapped_lum)) / (1.0 + rel_lum);
  28. //GLSL_OUT_FRAG_COLOR = vec4(D / lum);
  29. }