first sorta working port
[fishladder.git] / shaders / tile_colour.h
1 #ifndef SHADER_tile_colour_H
2 #define SHADER_tile_colour_H
3 static void shader_tile_colour_link(void);
4 static void shader_tile_colour_register(void);
5 static struct vg_shader _shader_tile_colour = {
6 .name = "tile_colour",
7 .link = shader_tile_colour_link,
8 .vs =
9 {
10 .orig_file = "shaders/tile_colour.vs.glsl",
11 .static_src =
12 "layout (location=0) in vec2 a_co;\n"
13 "uniform mat3 uPv;\n"
14 "uniform vec3 uOffset;\n"
15 "\n"
16 "void main(){\n"
17 " gl_Position = vec4( uPv * vec3( a_co * uOffset.z + uOffset.xy, 1.0 ), 1.0 );\n"
18 "}\n"
19 ""},
20 .fs =
21 {
22 .orig_file = "shaders/tile_colour.fs.glsl",
23 .static_src =
24 "out vec4 FragColor;\n"
25 "uniform vec4 uColour;\n"
26 "void main(){\n"
27 " FragColor = uColour;\n"
28 "}\n"
29 ""},
30 };
31
32 static GLuint _uniform_tile_colour_uPv;
33 static GLuint _uniform_tile_colour_uOffset;
34 static GLuint _uniform_tile_colour_uColour;
35 static void shader_tile_colour_uPv(m3x3f m){
36 glUniformMatrix3fv(_uniform_tile_colour_uPv,1,GL_FALSE,(float*)m);
37 }
38 static void shader_tile_colour_uOffset(v3f const v){
39 glUniform3fv(_uniform_tile_colour_uOffset,1,v);
40 }
41 static void shader_tile_colour_uColour(v4f const v){
42 glUniform4fv(_uniform_tile_colour_uColour,1,v);
43 }
44 static void shader_tile_colour_register(void){
45 vg_shader_register( &_shader_tile_colour );
46 }
47 static void shader_tile_colour_use(void){ glUseProgram(_shader_tile_colour.id); }
48 static void shader_tile_colour_link(void){
49 _uniform_tile_colour_uPv = glGetUniformLocation( _shader_tile_colour.id, "uPv" );
50 _uniform_tile_colour_uOffset = glGetUniformLocation( _shader_tile_colour.id, "uOffset" );
51 _uniform_tile_colour_uColour = glGetUniformLocation( _shader_tile_colour.id, "uColour" );
52 }
53 #endif /* SHADER_tile_colour_H */