ProjectArcade

Форк
0
43 строки · 1.2 Кб
1
// Simple Bloom shader; created to use in PPSSPP.
2
// Without excessive samples and complex nested loops
3
// (to make it compatible with low-end GPUs and to ensure ps_2_0 compatibility).
4

5
#ifdef GL_ES
6
precision mediump float;
7
precision mediump int;
8
#endif
9

10
uniform sampler2D sampler0;
11
varying vec2 v_texcoord0;	
12

13
uniform vec4 u_setting;
14

15
void main()
16
{
17
  //get the pixel color
18
  vec3 color = texture2D(sampler0, v_texcoord0.xy).xyz;
19
  gl_FragColor.rgb = color;
20
  float gray = (color.r + color.g + color.b) / 3.0;
21
  float saturation = (abs(color.r - gray) + abs(color.g - gray) + abs(color.b - gray)) / 3.0;
22
  
23
  //show the effect mainly on bright parts of the screen
24
  float step = 0.001 * gray / max(saturation, 0.25) * u_setting.x;
25

26
  //sum the neightbor pixels
27
  vec3 sum = vec3(0);
28
  for (int x = -3; x <= 3; x += 2)
29
  {
30
    for (int y = -3; y <= 3; y += 2)
31
    {
32
      color = texture2D(sampler0, v_texcoord0 + vec2(x, y)*step).xyz;
33
      gray = (color.r + color.g + color.b) / 3.0;
34
      saturation = (abs(color.r - gray) + abs(color.g - gray) + abs(color.b - gray)) / 3.0;
35
      sum += color * gray * gray / max(saturation, 0.25);
36
    }
37
  }
38
  sum /= 16.0;
39

40
  //mix the color
41
  gl_FragColor.rgb += sum * u_setting.y;
42
  gl_FragColor.a = 1.0;
43
}
44

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

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

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

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