ProjectArcade
72 строки · 2.6 Кб
1// PPSSPP: Simple Gauss filter
2// Made by Bigpet
3
4#ifdef GL_ES
5precision mediump float;
6precision mediump int;
7#endif
8
9uniform sampler2D sampler0;
10
11// The inverse of the texture dimensions along X and Y
12uniform vec2 u_texelDelta;
13uniform vec2 u_pixelDelta;
14varying vec2 v_texcoord0;
15
16void main() {
17// The parameters are hardcoded for now, but could be
18// made into uniforms to control fromt he program.
19float GAUSS_SPAN_MAX = 1.5;
20
21//just a variable to describe the maximu
22float GAUSS_KERNEL_SIZE = 5.0;
23//indices
24// XX XX 00 XX XX
25// XX 01 02 03 XX
26// 04 05 06 07 08
27// XX 09 10 11 XX
28// XX XX 12 XX XX
29
30//filter strength, rather smooth
31// XX XX 01 XX XX
32// XX 03 08 03 XX
33// 01 08 10 08 01
34// XX 03 08 03 XX
35// XX XX 01 XX XX
36
37vec2 offset = u_pixelDelta*GAUSS_SPAN_MAX/GAUSS_KERNEL_SIZE;
38
39vec3 rgbSimple0 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-2.0)).xyz;
40vec3 rgbSimple1 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0,-1.0)).xyz;
41vec3 rgbSimple2 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0,-1.0)).xyz;
42vec3 rgbSimple3 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0,-1.0)).xyz;
43vec3 rgbSimple4 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-2.0, 0.0)).xyz;
44vec3 rgbSimple5 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 0.0)).xyz;
45vec3 rgbSimple6 = 10.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 0.0)).xyz;
46vec3 rgbSimple7 = 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 0.0)).xyz;
47vec3 rgbSimple8 = 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 2.0, 0.0)).xyz;
48vec3 rgbSimple9 = 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2(-1.0, 1.0)).xyz;
49vec3 rgbSimple10= 8.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 1.0)).xyz;
50vec3 rgbSimple11= 3.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 1.0, 1.0)).xyz;
51vec3 rgbSimple12= 1.0 * texture2D(sampler0, v_texcoord0.xy + offset * vec2( 0.0, 2.0)).xyz;
52//vec3 rgbSimple10= vec3(1.0,0.0,0.0);
53//vec3 rgbSimple11= vec3(1.0,0.0,0.0);
54//vec3 rgbSimple12= vec3(1.0,0.0,0.0);
55
56vec3 rgb = rgbSimple0 +
57rgbSimple1 +
58rgbSimple2 +
59rgbSimple3 +
60rgbSimple4 +
61rgbSimple5 +
62rgbSimple6 +
63rgbSimple7 +
64rgbSimple8 +
65rgbSimple9 +
66rgbSimple10 +
67rgbSimple11 +
68rgbSimple12;
69rgb = rgb / 58.0;
70gl_FragColor.xyz=rgb;
71gl_FragColor.a = 1.0;
72}
73
74