ProjectArcade

Форк
0
69 строк · 1.8 Кб
1
// AA-Color shader, Modified to use in PPSSPP. Grabbed from:
2
// http://forums.ngemu.com/showthread.php?t=76098
3

4
// by guest(r) (guest.r@gmail.com)
5
// license: GNU-GPL
6

7
// Color variables
8

9
#ifdef GL_ES
10
precision mediump float;
11
precision mediump int;
12
#endif
13

14
const vec3 c_ch = vec3(1.0,1.0,1.0);  //  rgb color channel intensity
15
const float   a = 1.20 ;              //  saturation 
16
const float   b = 1.00 ;              //  brightness 
17
const float   c = 1.25 ;              //  contrast   
18

19
// you can use contrast1,contrast2...contrast4 (or contrast0 for speedup)
20

21
float contrast0(float x)
22
{ return x; }
23

24
float contrast1(float x)
25
{ x = x*1.1547-1.0;
26
  return sign(x)*pow(abs(x),1.0/c)*0.86 +  0.86;}
27

28
float contrast2(float x) 
29
{ return normalize(vec2(pow(x,c),pow(0.86,c))).x*1.72;}
30

31
float contrast3(float x)
32
{ return 1.73*pow(0.57735*x,c); }
33

34
float contrast4(float x)
35
{ return clamp(0.866 + c*(x-0.866),0.05, 1.73); }
36

37
uniform sampler2D sampler0;
38

39
varying vec4 v_texcoord0;
40
varying vec4 v_texcoord1;
41
varying vec4 v_texcoord2;
42
varying vec4 v_texcoord3;
43
varying vec4 v_texcoord4;
44
varying vec4 v_texcoord5;
45
varying vec4 v_texcoord6;
46

47
void main()
48
{
49
  vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz; 
50
  vec3 c01 = texture2D(sampler0, v_texcoord4.xy).xyz; 
51
  vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz; 
52
  vec3 c21 = texture2D(sampler0, v_texcoord5.xy).xyz; 
53
  vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz; 
54

55
  vec3 dt = vec3(1.0,1.0,1.0);
56
  float k1=dot(abs(c01-c21),dt);
57
  float k2=dot(abs(c10-c12),dt);
58

59
  vec3 color = (k1*(c10+c12)+k2*(c01+c21)+0.001*c11)/(2.0*(k1+k2)+0.001);
60

61
  float x = sqrt(dot(color,color));
62

63
  color.r = pow(color.r+0.001,a);
64
  color.g = pow(color.g+0.001,a);
65
  color.b = pow(color.b+0.001,a);
66

67
  gl_FragColor.rgb = contrast4(x)*normalize(color*c_ch)*b;
68
  gl_FragColor.a = 1.0;
69
}
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.