mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 14:03:23 -05:00
163 lines
3.0 KiB
Plaintext
163 lines
3.0 KiB
Plaintext
#ifdef GL_ES
|
|
precision mediump float;
|
|
#endif
|
|
|
|
//#define BR1
|
|
#define BR2
|
|
//#define BR3
|
|
|
|
varying vec2 v_texCoord;
|
|
uniform sampler2D Frame;
|
|
|
|
void br3(in vec4 natural, out vec4 fragcolor) {
|
|
int LUT[33];
|
|
LUT[0] = 0;
|
|
LUT[1] = 2;
|
|
LUT[2] = 4;
|
|
LUT[3] = 6;
|
|
LUT[4] = 8;
|
|
LUT[5] = 10;
|
|
LUT[6] = 12;
|
|
LUT[7] = 14;
|
|
LUT[8] = 16;
|
|
LUT[9] = 17;
|
|
LUT[10] = 17;
|
|
LUT[11] = 18;
|
|
LUT[12] = 19;
|
|
LUT[13] = 19;
|
|
LUT[14] = 20;
|
|
LUT[15] = 21;
|
|
LUT[16] = 21;
|
|
LUT[17] = 22;
|
|
LUT[18] = 23;
|
|
LUT[19] = 23;
|
|
LUT[20] = 24;
|
|
LUT[21] = 25;
|
|
LUT[22] = 25;
|
|
LUT[23] = 26;
|
|
LUT[24] = 27;
|
|
LUT[25] = 27;
|
|
LUT[26] = 28;
|
|
LUT[27] = 29;
|
|
LUT[28] = 29;
|
|
LUT[29] = 30;
|
|
LUT[30] = 30;
|
|
LUT[31] = 31;
|
|
LUT[32] = 31;
|
|
|
|
vec4 rgb16 = natural * vec4(31.0, 31.0, 31.0, 1.0);
|
|
rgb16.r = float(LUT[int(rgb16.r)])+float(LUT[int(rgb16.r)+1]-LUT[int(rgb16.r)])*fract(rgb16.r);
|
|
rgb16.g = float(LUT[int(rgb16.g)])+float(LUT[int(rgb16.g)+1]-LUT[int(rgb16.g)])*fract(rgb16.g);
|
|
rgb16.b = float(LUT[int(rgb16.b)])+float(LUT[int(rgb16.b)+1]-LUT[int(rgb16.b)])*fract(rgb16.b);
|
|
fragcolor = rgb16 / vec4(31.0,31.0,31.0,1.0);
|
|
}
|
|
|
|
void br2(in vec4 natural, out vec4 fragcolor) {
|
|
int LUT[33];
|
|
LUT[0] = 0;
|
|
LUT[1] = 2;
|
|
LUT[2] = 4;
|
|
LUT[3] = 6;
|
|
LUT[4] = 8;
|
|
LUT[5] = 10;
|
|
LUT[6] = 11;
|
|
LUT[7] = 12;
|
|
LUT[8] = 13;
|
|
LUT[9] = 14;
|
|
LUT[10] = 15;
|
|
LUT[11] = 16;
|
|
LUT[12] = 17;
|
|
LUT[13] = 18;
|
|
LUT[14] = 19;
|
|
LUT[15] = 19;
|
|
LUT[16] = 20;
|
|
LUT[17] = 21;
|
|
LUT[18] = 22;
|
|
LUT[19] = 22;
|
|
LUT[20] = 23;
|
|
LUT[21] = 24;
|
|
LUT[22] = 25;
|
|
LUT[23] = 25;
|
|
LUT[24] = 26;
|
|
LUT[25] = 27;
|
|
LUT[26] = 28;
|
|
LUT[27] = 28;
|
|
LUT[28] = 29;
|
|
LUT[29] = 30;
|
|
LUT[30] = 30;
|
|
LUT[31] = 31;
|
|
LUT[32] = 31;
|
|
|
|
vec4 rgb16 = natural * vec4(31.0, 31.0, 31.0, 1.0);
|
|
rgb16.r = float(LUT[int(rgb16.r)])+float(LUT[int(rgb16.r)+1]-LUT[int(rgb16.r)])*fract(rgb16.r);
|
|
rgb16.g = float(LUT[int(rgb16.g)])+float(LUT[int(rgb16.g)+1]-LUT[int(rgb16.g)])*fract(rgb16.g);
|
|
rgb16.b = float(LUT[int(rgb16.b)])+float(LUT[int(rgb16.b)+1]-LUT[int(rgb16.b)])*fract(rgb16.b);
|
|
fragcolor = rgb16 / vec4(31.0,31.0,31.0,1.0);
|
|
}
|
|
|
|
void br1(in vec4 natural, out vec4 fragcolor) {
|
|
int LUT[33];
|
|
LUT[0] = 0;
|
|
LUT[1] = 2;
|
|
LUT[2] = 4;
|
|
LUT[3] = 5;
|
|
LUT[4] = 7;
|
|
LUT[5] = 8;
|
|
LUT[6] = 9;
|
|
LUT[7] = 10;
|
|
LUT[8] = 11;
|
|
LUT[9] = 12;
|
|
LUT[10] = 13;
|
|
LUT[11] = 14;
|
|
LUT[12] = 15;
|
|
LUT[13] = 16;
|
|
LUT[14] = 17;
|
|
LUT[15] = 17;
|
|
LUT[16] = 18;
|
|
LUT[17] = 19;
|
|
LUT[18] = 20;
|
|
LUT[19] = 21;
|
|
LUT[20] = 22;
|
|
LUT[21] = 23;
|
|
LUT[22] = 24;
|
|
LUT[23] = 24;
|
|
LUT[24] = 25;
|
|
LUT[25] = 26;
|
|
LUT[26] = 27;
|
|
LUT[27] = 28;
|
|
LUT[28] = 29;
|
|
LUT[29] = 30;
|
|
LUT[30] = 30;
|
|
LUT[31] = 31;
|
|
LUT[32] = 31;
|
|
|
|
vec4 rgb16 = natural * vec4(31.0, 31.0, 31.0, 1.0);
|
|
rgb16.r = float(LUT[int(rgb16.r)])+float(LUT[int(rgb16.r)+1]-LUT[int(rgb16.r)])*fract(rgb16.r);
|
|
rgb16.g = float(LUT[int(rgb16.g)])+float(LUT[int(rgb16.g)+1]-LUT[int(rgb16.g)])*fract(rgb16.g);
|
|
rgb16.b = float(LUT[int(rgb16.b)])+float(LUT[int(rgb16.b)+1]-LUT[int(rgb16.b)])*fract(rgb16.b);
|
|
fragcolor = rgb16 / vec4(31.0,31.0,31.0,1.0);
|
|
}
|
|
|
|
|
|
void main()
|
|
{
|
|
vec4 natural = texture2D(Frame, v_texCoord);
|
|
vec4 rgb32 = natural;
|
|
|
|
#ifdef BR1
|
|
br1(natural,rgb32);
|
|
#else
|
|
#ifdef BR2
|
|
br2(natural, rgb32);
|
|
#else
|
|
#ifdef BR3
|
|
br3(natural, rgb32);
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
gl_FragColor = rgb32;
|
|
}
|
|
|
|
|