mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-12 06:23:23 -05:00
46 lines
1.7 KiB
GLSL
46 lines
1.7 KiB
GLSL
precision highp float;
|
|
precision highp int;
|
|
uniform sampler2D uTex;
|
|
uniform highp float resX;
|
|
uniform highp float resY;
|
|
varying highp vec2 vTexCoord;
|
|
|
|
varying vec4 v_texcoord1;
|
|
varying vec4 v_texcoord2;
|
|
varying vec4 v_texcoord3;
|
|
varying vec4 v_texcoord4;
|
|
varying vec2 v_texcoord5;
|
|
varying vec2 v_texcoord6;
|
|
float dist(vec2 coord, vec2 source)
|
|
{
|
|
vec2 delta = coord - source;
|
|
return sqrt(dot(delta, delta));
|
|
}
|
|
float color_bloom(vec3 color)
|
|
{
|
|
const vec3 gray_coeff = vec3(0.30, 0.59, 0.11);
|
|
float bright = dot(color, gray_coeff);
|
|
return mix(1.0 + 0.05, 1.0 - 0.05, bright);
|
|
}
|
|
vec3 lookup(vec2 pixel_no, float offset_x, float offset_y, vec3 color)
|
|
{
|
|
vec2 offset = vec2(offset_x, offset_y);
|
|
float delta = dist(fract(pixel_no), offset + vec2(0.5, 0.5));
|
|
return color * exp(-2.4 * delta * color_bloom(color));
|
|
}
|
|
void main()
|
|
{
|
|
vec3 mid_color = lookup(v_texcoord6, 0.0, 0.0, texture2D(uTex, v_texcoord5).rgb);
|
|
vec3 color = vec3(0.0, 0.0, 0.0);
|
|
color += lookup(v_texcoord6, -1.0, -1.0, texture2D(uTex, v_texcoord1.xy).rgb);
|
|
color += lookup(v_texcoord6, 0.0, -1.0, texture2D(uTex, v_texcoord1.zw).rgb);
|
|
color += lookup(v_texcoord6, 1.0, -1.0, texture2D(uTex, v_texcoord2.xy).rgb);
|
|
color += lookup(v_texcoord6, -1.0, 0.0, texture2D(uTex, v_texcoord2.zw).rgb);
|
|
color += mid_color;
|
|
color += lookup(v_texcoord6, 1.0, 0.0, texture2D(uTex, v_texcoord3.xy).rgb);
|
|
color += lookup(v_texcoord6, -1.0, 1.0, texture2D(uTex, v_texcoord3.zw).rgb);
|
|
color += lookup(v_texcoord6, 0.0, 1.0, texture2D(uTex, v_texcoord4.xy).rgb);
|
|
color += lookup(v_texcoord6, 1.0, 1.0, texture2D(uTex, v_texcoord4.zw).rgb);
|
|
vec3 out_color = mix(1.2 * mid_color, color, 0.65);
|
|
gl_FragColor = vec4(out_color, 1.0);
|
|
} |