grind sound
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / blitblur.h
1 #ifndef SHADER_blitblur_H
2 #define SHADER_blitblur_H
3 static void shader_blitblur_link(void);
4 static void shader_blitblur_register(void);
5 static struct vg_shader _shader_blitblur = {
6 .name = "blitblur",
7 .link = shader_blitblur_link,
8 .vs =
9 {
10 .static_src =
11 "layout (location=0) in vec2 a_co;\n"
12 "out vec2 aUv;\n"
13 "\n"
14 "void main()\n"
15 "{\n"
16 " gl_Position = vec4(a_co*2.0-1.0,0.0,1.0);\n"
17 " aUv = a_co;\n"
18 "}\n"
19 ""},
20 .fs =
21 {
22 .static_src =
23 "out vec4 FragColor;\n"
24 "uniform sampler2D uTexMain;\n"
25 "\n"
26 "in vec2 aUv;\n"
27 "\n"
28 "vec2 rand_hash22( vec2 p )\n"
29 "{\n"
30 " vec3 p3 = fract(vec3(p.xyx) * 213.8976123);\n"
31 " p3 += dot(p3, p3.yzx+19.19);\n"
32 " return fract(vec2((p3.x + p3.y)*p3.z, (p3.x+p3.z)*p3.y));\n"
33 "}\n"
34 "\n"
35 "void main()\n"
36 "{\n"
37 " vec2 voffset = rand_hash22( aUv );\n"
38 " \n"
39 " float bamt = abs(aUv.x-0.5)*2.0;\n"
40 " bamt = pow(bamt,4.0)*0.05;\n"
41 "\n"
42 " FragColor = texture( uTexMain, aUv + voffset*bamt );\n"
43 "}\n"
44 ""},
45 };
46
47 static GLuint _uniform_blitblur_uTexMain;
48 static void shader_blitblur_uTexMain(int i){
49 glUniform1i(_uniform_blitblur_uTexMain,i);
50 }
51 static void shader_blitblur_register(void){
52 vg_shader_register( &_shader_blitblur );
53 }
54 static void shader_blitblur_use(void){ glUseProgram(_shader_blitblur.id); }
55 static void shader_blitblur_link(void){
56 _uniform_blitblur_uTexMain = glGetUniformLocation( _shader_blitblur.id, "uTexMain" );
57 }
58 #endif /* SHADER_blitblur_H */