first sorta working port
[fishladder.git] / shaders / post_blur.h
1 #ifndef SHADER_post_blur_H
2 #define SHADER_post_blur_H
3 static void shader_post_blur_link(void);
4 static void shader_post_blur_register(void);
5 static struct vg_shader _shader_post_blur = {
6 .name = "post_blur",
7 .link = shader_post_blur_link,
8 .vs =
9 {
10 .orig_file = "shaders/post_blur.vs.glsl",
11 .static_src =
12 "layout (location=0) in vec2 a_co;\n"
13 "out vec2 aTexCoords;\n"
14 "\n"
15 "void main(){\n"
16 " gl_Position = vec4( a_co * 2.0 - 1.0, 0.0, 1.0 );\n"
17 " aTexCoords = a_co;\n"
18 "}\n"
19 ""},
20 .fs =
21 {
22 .orig_file = "shaders/post_blur.fs.glsl",
23 .static_src =
24 "uniform sampler2D uTexMain;\n"
25 "uniform vec2 uDir;\n"
26 "out vec4 FragColor;\n"
27 "\n"
28 "in vec2 aTexCoords;\n"
29 "\n"
30 "void main(){\n"
31 " vec4 colour = vec4(0.0);\n"
32 "\n"
33 " vec2 off1 = vec2(1.411764705882353) * uDir;\n"
34 " vec2 off2 = vec2(3.2941176470588234) * uDir;\n"
35 " vec2 off3 = vec2(5.176470588235294) * uDir;\n"
36 " colour += texture2D( uTexMain, aTexCoords ) * 0.1964825501511404;\n"
37 " colour += texture2D( uTexMain, aTexCoords + off1 ) * 0.2969069646728344;\n"
38 " colour += texture2D( uTexMain, aTexCoords - off1 ) * 0.2969069646728344;\n"
39 " colour += texture2D( uTexMain, aTexCoords + off2 ) * 0.09447039785044732;\n"
40 " colour += texture2D( uTexMain, aTexCoords - off2 ) * 0.09447039785044732;\n"
41 " colour += texture2D( uTexMain, aTexCoords + off3 ) * 0.010381362401148057;\n"
42 " colour += texture2D( uTexMain, aTexCoords - off3 ) * 0.010381362401148057;\n"
43 " FragColor = colour;\n"
44 "}\n"
45 ""},
46 };
47
48 static GLuint _uniform_post_blur_uTexMain;
49 static GLuint _uniform_post_blur_uDir;
50 static void shader_post_blur_uTexMain(int i){
51 glUniform1i(_uniform_post_blur_uTexMain,i);
52 }
53 static void shader_post_blur_uDir(v2f const v){
54 glUniform2fv(_uniform_post_blur_uDir,1,v);
55 }
56 static void shader_post_blur_register(void){
57 vg_shader_register( &_shader_post_blur );
58 }
59 static void shader_post_blur_use(void){ glUseProgram(_shader_post_blur.id); }
60 static void shader_post_blur_link(void){
61 _uniform_post_blur_uTexMain = glGetUniformLocation( _shader_post_blur.id, "uTexMain" );
62 _uniform_post_blur_uDir = glGetUniformLocation( _shader_post_blur.id, "uDir" );
63 }
64 #endif /* SHADER_post_blur_H */