mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-27 23:40:39 +00:00
d45049e7b5
Update natural.fsh Create 4xhqglsl.vsh Update 4xhqglsl.vsh Create 4xhqglsl.fsh Create aacolor.vsh Create aacolor.fsh Update cartoon.vsh Update cartoon.fsh Update cartoon.fsh Update cartoon.fsh Update and rename Scanlines.fsh to scanlines.fsh Update aacolor.fsh Update 4xhqglsl.vsh Update aacolor.vsh Update cartoon.vsh
64 lines
1.7 KiB
GLSL
64 lines
1.7 KiB
GLSL
// AA-Color shader, Modified to use in PPSSPP. Grabbed from:
|
|
// http://forums.ngemu.com/showthread.php?t=76098
|
|
|
|
// by guest(r) (guest.r@gmail.com)
|
|
// license: GNU-GPL
|
|
|
|
// Color variables
|
|
|
|
const vec3 c_ch = vec3(1.0,1.0,1.0); // rgb color channel intensity
|
|
const float a = 1.20 ; // saturation
|
|
const float b = 1.00 ; // brightness
|
|
const float c = 1.25 ; // contrast
|
|
|
|
// you can use contrast1,contrast2...contrast4 (or contrast0 for speedup)
|
|
|
|
float contrast0(float x)
|
|
{ return x; }
|
|
|
|
float contrast1(float x)
|
|
{ x = x*1.1547-1.0;
|
|
return sign(x)*pow(abs(x),1.0/c)*0.86 + 0.86;}
|
|
|
|
float contrast2(float x)
|
|
{ return normalize(vec2(pow(x,c),pow(0.86,c))).x*1.72;}
|
|
|
|
float contrast3(float x)
|
|
{ return 1.73*pow(0.57735*x,c); }
|
|
|
|
float contrast4(float x)
|
|
{ return clamp(0.866 + c*(x-0.866),0.05, 1.73); }
|
|
|
|
uniform sampler2D sampler0;
|
|
|
|
varying vec4 v_texcoord0;
|
|
varying vec4 v_texcoord1;
|
|
varying vec4 v_texcoord2;
|
|
varying vec4 v_texcoord3;
|
|
varying vec4 v_texcoord4;
|
|
varying vec4 v_texcoord5;
|
|
varying vec4 v_texcoord6;
|
|
|
|
void main()
|
|
{
|
|
vec3 c10 = texture2D(sampler0, v_texcoord1.xy).xyz;
|
|
vec3 c01 = texture2D(sampler0, v_texcoord4.xy).xyz;
|
|
vec3 c11 = texture2D(sampler0, v_texcoord0.xy).xyz;
|
|
vec3 c21 = texture2D(sampler0, v_texcoord5.xy).xyz;
|
|
vec3 c12 = texture2D(sampler0, v_texcoord2.xy).xyz;
|
|
|
|
vec3 dt = vec3(1.0,1.0,1.0);
|
|
float k1=dot(abs(c01-c21),dt);
|
|
float k2=dot(abs(c10-c12),dt);
|
|
|
|
vec3 color = (k1*(c10+c12)+k2*(c01+c21)+0.001*c11)/(2.0*(k1+k2)+0.001);
|
|
|
|
float x = sqrt(dot(color,color));
|
|
|
|
color.r = pow(color.r+0.001,a);
|
|
color.g = pow(color.g+0.001,a);
|
|
color.b = pow(color.b+0.001,a);
|
|
|
|
gl_FragColor.xyz = contrast4(x)*normalize(color*c_ch)*b;
|
|
}
|