shape glyphs, ui drawcall colour
[vg.git] / vg_imgui.h
index 0a83a53f714e6fe6e59bac27fe03eedfa2582e7d..53d8472302f8f3f5e6acb07a81e1860d654a5084 100644 (file)
@@ -220,6 +220,8 @@ struct{
    cursor;
 
    SDL_Cursor *cursor_map[ k_ui_cursor_max ];
+
+   v4f colour;
 } 
 static vg_ui = {
    .scheme = {
@@ -258,7 +260,8 @@ static vg_ui = {
       [ k_ui_purple + k_ui_brighter ] = UI_RGB( 0xd3869b ),
       [ k_ui_gray   + k_ui_brighter ] = UI_RGB( 0xa89984 ),
    },
-   .font = &vg_ui_font_small
+   .font = &vg_ui_font_small,
+   .colour = {1.0f,1.0f,1.0f,1.0f}
 };
 
 static struct vg_shader _shader_ui =
@@ -292,6 +295,7 @@ static struct vg_shader _shader_ui =
       .orig_file = NULL,
       .static_src = 
        "uniform sampler2D uTexGlyphs;"
+   "uniform vec4 uColour;"
        "out vec4 FragColor;"
        ""
        "in vec2 aTexCoords;"
@@ -309,7 +313,7 @@ static struct vg_shader _shader_ui =
                        "diffuse.a = texture( uTexGlyphs, aTexCoords ).r;"
                "}"
                
-               "FragColor = diffuse;"
+               "FragColor = diffuse * uColour;"
        "}"
    }
 };
@@ -344,6 +348,7 @@ static struct vg_shader _shader_ui_image = {
       .orig_file = NULL,
       .static_src = 
        "uniform sampler2D uTexImage;"
+   "uniform vec4 uColour;"
        "out vec4 FragColor;"
 
        "in vec2 aTexCoords;"
@@ -353,7 +358,7 @@ static struct vg_shader _shader_ui_image = {
        "void main()"
        "{"
                "vec4 colour = texture( uTexImage, aTexCoords );"
-               "FragColor = colour;"
+               "FragColor = colour * uColour;"
        "}"
    }
 };
@@ -512,6 +517,8 @@ static void ui_flush( enum ui_shader shader ){
       
       glUniformMatrix3fv( glGetUniformLocation( _shader_ui.id, "uPv" ), 1, 
                           GL_FALSE, (float *)view );
+      glUniform4fv( glGetUniformLocation( _shader_ui.id, "uColour" ), 1,
+                     vg_ui.colour );
        
       glActiveTexture( GL_TEXTURE0 );
       glBindTexture( GL_TEXTURE_2D, vg_ui.tex_glyphs );
@@ -522,6 +529,8 @@ static void ui_flush( enum ui_shader shader ){
       glUniformMatrix3fv( glGetUniformLocation( _shader_ui_image.id, "uPv" ), 1, 
                           GL_FALSE, (float *)view );
       glUniform1i( glGetUniformLocation(_shader_ui_image.id,"uTexImage"), 0 );
+      glUniform4fv( glGetUniformLocation( _shader_ui_image.id, "uColour" ), 1,
+                     vg_ui.colour );
    }
    else
       vg_fatal_error( "Invalid UI shader (%d)\n", shader );