Advertisement
Guest User

ar_with_adaptive_str.glsl

a guest
Dec 3rd, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. //!HOOK POSTKERNEL
  2. //!BIND PREKERNEL
  3. //!BIND HOOKED
  4. #define sqr(x) pow(x,2.0)
  5. #define GetH(x,y) POSTKERNEL_texOff(vec2(x,y))
  6. #define GetL(x,y) PREKERNEL_tex(base + PREKERNEL_pt*vec2(x,y))
  7.  
  8. #define Luma(rgb) ( dot(vec3(0.2126, 0.7152, 0.0722), rgb) )
  9. vec4 hook() {
  10. vec2 fcoord = fract(PREKERNEL_pos * PREKERNEL_size - vec2(0.5));
  11. vec2 base = PREKERNEL_pos - fcoord * PREKERNEL_pt;
  12.  
  13. float meanH = (Luma(GetH(0, 0).rgb) + (Luma(GetH(-1, 0).rgb) + Luma(GetH(0, 1).rgb) + Luma(GetH(1, 0).rgb) + Luma(GetH(0, -1).rgb)) / 4.0) / 2.0;
  14. float meanL = (Luma(GetL(0, 0).rgb) + (Luma(GetL(-1, 0).rgb) + Luma(GetL(0, 1).rgb) + Luma(GetL(1, 0).rgb) + Luma(GetL(0, -1).rgb)) / 4.0) / 2.0;
  15.  
  16. float varH = (sqr(Luma(GetH(0, 0).rgb) - meanH) + (sqr(Luma(GetH(-1, 0).rgb) - meanH) + sqr(Luma(GetH(0, 1).rgb) - meanH) + sqr(Luma(GetH(1, 0).rgb) - meanH) + sqr(Luma(GetH(0, -1).rgb) - meanH)) / 4.0) / 2.0 + sqr(0.5/255.0);
  17. float varL = (sqr(Luma(GetL(0, 0).rgb) - meanL) + (sqr(Luma(GetL(-1, 0).rgb) - meanL) + sqr(Luma(GetL(0, 1).rgb) - meanL) + sqr(Luma(GetL(1, 0).rgb) - meanL) + sqr(Luma(GetL(0, -1).rgb) - meanL)) / 4.0) / 2.0 + sqr(0.5/255.0);
  18.  
  19. // Get center four pixels
  20. vec4 c1 = PREKERNEL_tex(base + vec2(0,0) * PREKERNEL_pt);
  21. vec4 c2 = PREKERNEL_tex(base + vec2(0,1) * PREKERNEL_pt);
  22. vec4 c3 = PREKERNEL_tex(base + vec2(1,0) * PREKERNEL_pt);
  23. vec4 c4 = PREKERNEL_tex(base + vec2(1,1) * PREKERNEL_pt);
  24.  
  25. vec4 lo = min(min(c1, c2), min(c3, c4));
  26. vec4 hi = max(max(c1, c2), max(c3, c4));
  27.  
  28. vec4 color = HOOKED_texOff(0);
  29.  
  30. float E = sqrt(varL/varH);
  31. return mix(color, clamp(color, lo, hi), clamp(1.5*mix(max(2.0-E, 0.0), E, step(E, 1.0)),0.0,1.0));
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement