ProjectArcade
58 строк · 1.7 Кб
1// Natural Vision Shader, modified to use in PPSSPP.
2
3// by ShadX (Modded by SimoneT)
4// http://forums.ngemu.com/showthread.php?t=76098
5
6#ifdef GL_ES
7precision mediump float;
8precision mediump int;
9#endif
10
11uniform sampler2D sampler0;
12varying vec4 v_texcoord0;
13varying vec4 v_texcoord1;
14varying vec4 v_texcoord2;
15varying vec4 v_texcoord3;
16
17const mat3 RGBtoYIQ = mat3(0.299, 0.596, 0.212,
180.587,-0.275,-0.523,
190.114,-0.321, 0.311);
20
21const mat3 YIQtoRGB = mat3(1.0, 1.0, 1.0,
220.95568806036115671171,-0.27158179694405859326,-1.1081773266826619523,
230.61985809445637075388,-0.64687381613840131330, 1.7050645599191817149);
24
25const vec3 val00 = vec3( 1.2, 1.2, 1.2);
26
27void main()
28{
29vec3 c0,c1;
30
31c0 = texture2D(sampler0,v_texcoord0.xy).xyz;
32c0+=(texture2D(sampler0,v_texcoord0.zy).xyz)*0.25;
33c0+=(texture2D(sampler0,v_texcoord0.xw).xyz)*0.25;
34c0+=(texture2D(sampler0,v_texcoord0.zw).xyz)*0.125;
35
36c0+= texture2D(sampler0,v_texcoord1.xy).xyz;
37c0+=(texture2D(sampler0,v_texcoord1.zy).xyz)*0.25;
38c0+=(texture2D(sampler0,v_texcoord1.xw).xyz)*0.25;
39c0+=(texture2D(sampler0,v_texcoord1.zw).xyz)*0.125;
40
41c0+= texture2D(sampler0,v_texcoord2.xy).xyz;
42c0+=(texture2D(sampler0,v_texcoord2.zy).xyz)*0.25;
43c0+=(texture2D(sampler0,v_texcoord2.xw).xyz)*0.25;
44c0+=(texture2D(sampler0,v_texcoord2.zw).xyz)*0.125;
45
46c0+= texture2D(sampler0,v_texcoord3.xy).xyz;
47c0+=(texture2D(sampler0,v_texcoord3.zy).xyz)*0.25;
48c0+=(texture2D(sampler0,v_texcoord3.xw).xyz)*0.25;
49c0+=(texture2D(sampler0,v_texcoord3.zw).xyz)*0.125;
50c0*=0.153846153846;
51
52c1=RGBtoYIQ*c0;
53
54c1=vec3(pow(c1.x,val00.x),c1.yz*val00.yz);
55
56gl_FragColor.rgb=YIQtoRGB*c1;
57gl_FragColor.a = 1.0;
58}
59