common.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright 2011-2025 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
  4. */
  5. #include "../common/common.sh"
  6. uniform vec4 u_offset[16];
  7. uniform vec4 u_tonemap;
  8. #define u_time u_tonemap.w
  9. float reinhard(float _x)
  10. {
  11. return _x / (_x + 1.0);
  12. }
  13. vec3 reinhard(vec3 _x)
  14. {
  15. return _x / (_x + 1.0);
  16. }
  17. float reinhard2(float _x, float _whiteSqr)
  18. {
  19. return (_x * (1.0 + _x/_whiteSqr) ) / (1.0 + _x);
  20. }
  21. vec3 reinhard2(vec3 _x, float _whiteSqr)
  22. {
  23. return (_x * (1.0 + _x/_whiteSqr) ) / (1.0 + _x);
  24. }
  25. vec4 blur9(sampler2D _sampler, vec2 _uv0, vec4 _uv1, vec4 _uv2, vec4 _uv3, vec4 _uv4)
  26. {
  27. #define _BLUR9_WEIGHT_0 1.0
  28. #define _BLUR9_WEIGHT_1 0.9
  29. #define _BLUR9_WEIGHT_2 0.55
  30. #define _BLUR9_WEIGHT_3 0.18
  31. #define _BLUR9_WEIGHT_4 0.1
  32. #define _BLUR9_NORMALIZE (_BLUR9_WEIGHT_0+2.0*(_BLUR9_WEIGHT_1+_BLUR9_WEIGHT_2+_BLUR9_WEIGHT_3+_BLUR9_WEIGHT_4) )
  33. #define BLUR9_WEIGHT(_x) (_BLUR9_WEIGHT_##_x/_BLUR9_NORMALIZE)
  34. vec4 blur;
  35. blur = texture2D(_sampler, _uv0)*BLUR9_WEIGHT(0);
  36. blur += texture2D(_sampler, _uv1.xy)*BLUR9_WEIGHT(1);
  37. blur += texture2D(_sampler, _uv1.zw)*BLUR9_WEIGHT(1);
  38. blur += texture2D(_sampler, _uv2.xy)*BLUR9_WEIGHT(2);
  39. blur += texture2D(_sampler, _uv2.zw)*BLUR9_WEIGHT(2);
  40. blur += texture2D(_sampler, _uv3.xy)*BLUR9_WEIGHT(3);
  41. blur += texture2D(_sampler, _uv3.zw)*BLUR9_WEIGHT(3);
  42. blur += texture2D(_sampler, _uv4.xy)*BLUR9_WEIGHT(4);
  43. blur += texture2D(_sampler, _uv4.zw)*BLUR9_WEIGHT(4);
  44. return blur;
  45. }