wire fadeout
authorhgn <hgodden00@gmail.com>
Wed, 19 Jan 2022 00:39:32 +0000 (00:39 +0000)
committerhgn <hgodden00@gmail.com>
Wed, 19 Jan 2022 00:39:32 +0000 (00:39 +0000)
fishladder.c
fishladder_resources.h
textures/tile_minimal.png

index 2a2da7520751101d4ff725de383d1bdd0817622a..015ddd8901f42b181caf158fc97cacd1d9ddb639 100644 (file)
@@ -423,24 +423,25 @@ static v3f colour_sets[][4] =
 static struct world_theme
 {
    const char *name;
-   v3f colour_bg;
+   v3f col_shadow;
+
    vg_tex2d *tex_tiles;
 }
 world_themes[] =
 {
    {
       "Wood",
-      {},
+      { 0.89f, 0.8f, 0.7f },
       &tex_tiles_wood
    },
    {
       "Minimal",
-      {},
+      { 0.8f, 0.8f, 0.8f },
       &tex_tiles_min
    },
    {
       "Lab",
-      {},
+      { 0.7f, 0.7f, 0.7f },
       &tex_tiles_lab
    }
 };
@@ -2664,13 +2665,12 @@ void vg_render(void)
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glBlendEquation(GL_FUNC_ADD);
        
-       // Bind textures
+       // rebind textures
        vg_tex2d_bind( &tex_tile_data, 0 );
-       glUniform1i( SHADER_UNIFORM( shader_tile_main, "uTexGlyphs" ), 0 );
-
        vg_tex2d_bind( theme->tex_tiles, 1 );
-       glUniform1i( SHADER_UNIFORM( shader_tile_main, "uTexWood" ), 1 );
-       
+   
+   glUniform3fv( SHADER_UNIFORM( shader_tile_main, "uShadowing" ), 1, theme->col_shadow );
+
        render_tiles( colour_default, colour_default );
        
        // MARBLES
@@ -2936,8 +2936,8 @@ void vg_render(void)
        {
                glUniform4fv( SHADER_UNIFORM( shader_wire, "uColour" ), 1, wire_drag_colour );
                glUniform1f( SHADER_UNIFORM( shader_wire, "uCurve" ), 0.4f );
-               glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), world.drag_from_co[0], world.drag_from_co[1], 0.20f );
-               glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), world.drag_to_co[0], world.drag_to_co[1], 0.20f );
+               glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), world.drag_from_co[0], world.drag_from_co[1], 0.20f*world.st.world_transition );
+               glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), world.drag_to_co[0], world.drag_to_co[1], 0.20f*world.st.world_transition );
                glDrawElements( GL_TRIANGLES, world.wire.em, GL_UNSIGNED_SHORT, (void*)(0) );
        }
        
@@ -2984,14 +2984,12 @@ void vg_render(void)
                                        glUniform4fv( SHADER_UNIFORM( shader_wire, "uColour" ), 1, wire_colour );
                                }
                                else
-                               {
                                        glUniform4fv( SHADER_UNIFORM( shader_wire, "uColour" ), 1, j? wire_right_colour: wire_left_colour );
-                               }
 
                                glUniform1f( SHADER_UNIFORM( shader_wire, "uCurve" ), other_cell->state & FLAG_TRIGGERED? rp_x2 * 0.4f: 0.4f );
                                glUniform1f( SHADER_UNIFORM( shader_wire, "uGlow" ), other_cell->state & FLAG_TRIGGERED? rp_xa: 0.0f );
-                               glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), startpoint[0], startpoint[1], 0.18f );
-                               glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), endpoint[0], endpoint[1], 0.18f );
+                               glUniform3f( SHADER_UNIFORM( shader_wire, "uEnd" ), startpoint[0], startpoint[1], 0.18f*world.st.world_transition );
+                               glUniform3f( SHADER_UNIFORM( shader_wire, "uStart" ), endpoint[0], endpoint[1], 0.18f*world.st.world_transition );
                                glDrawElements( GL_TRIANGLES, world.wire.em, GL_UNSIGNED_SHORT, (void*)(0) );
                        }
                }
@@ -3053,7 +3051,7 @@ void vg_render(void)
                                        glUniform3f( SHADER_UNIFORM( shader_tile_colour, "uOffset" ), 
                                                pts[i][0],
                                                pts[i][1], 
-                                               0.08f 
+                                               0.08f * world.st.world_transition
                                        );
                                        draw_mesh( filled_start, filled_count );        
                                }
@@ -3063,7 +3061,8 @@ void vg_render(void)
 
        // SUB SPLITTER DIRECTION
        // ========================================================================================================
-
+   
+   /*
        glUniform4f( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 0.9f, 0.35f, 0.1f, 0.75f );
        
        for( int i = 0; i < world.tile_special_count; i ++ )
@@ -3077,6 +3076,7 @@ void vg_render(void)
                        draw_mesh( cell->state & FLAG_FLIP_FLOP? 5: 4, 1 );
                }
        }
+   */
 
        // LIGHT FLARES
        // ========================================================================================================
@@ -3294,6 +3294,7 @@ void vg_ui(void)
                                ui_global_ctx.cursor[2] = 150;
                                gui_new_node();
                                {
+               gui_fill_rect( ui_global_ctx.cursor, 0x33ffffff );
                                        ui_global_ctx.cursor[0] += 45;
                                        ui_global_ctx.cursor[1] += 6;
                                        gui_text( (const char *[]){ "Normal", "Extra1", "Extra2" }[ colour_set_id ], 2 );
@@ -3310,6 +3311,45 @@ void vg_ui(void)
                                gui_end_down();
                        }
                        gui_end_down();
+
+         // Theme select
+         // TODO: remove code dupe
+         ui_global_ctx.cursor[1] += 16;
+
+                       gui_text( "Tile Theme", 2 );
+                       ui_global_ctx.cursor[1] += 20;
+
+                       gui_new_node();
+                       {
+                               ui_global_ctx.cursor[2] = 25;
+                               if( gui_button( 0 ) == k_button_click )
+                               {
+                                       if( world_theme_id > 0 )
+                                               world_theme_id --;
+                               }
+                               gui_text( "<", 2 );
+                               gui_end_right();
+                               
+                               ui_global_ctx.cursor[2] = 150;
+                               gui_new_node();
+                               {
+               gui_fill_rect( ui_global_ctx.cursor, 0x33ffffff );
+                                       ui_global_ctx.cursor[0] += 45;
+                                       ui_global_ctx.cursor[1] += 6;
+                                       gui_text( world_themes[ world_theme_id ].name, 2 );
+                               }
+                               gui_end_right();
+
+                               ui_global_ctx.cursor[2] = 25;
+                               if( gui_button( 1 ) == k_button_click )
+                               {
+                                       if( world_theme_id < vg_list_size( world_themes )-1 )
+                                               world_theme_id ++;
+                               }
+                               gui_text( ">", 2 );
+                               gui_end_down();
+                       }
+                       gui_end_down();
                }
                gui_end();
        }
index d1f2210fe8b08d0362a676427627a3372507e7af..b486ec6c93d5ea49a40376242db15e69fc2bff8f 100644 (file)
@@ -419,6 +419,7 @@ SHADER_DEFINE( shader_tile_main,
        "uniform float uForeground;"
        "uniform vec2 uMousePos;"
        "uniform vec4 uColour;"
+   "uniform vec3 uShadowing;"
        ""
        "in vec4 aTexCoords;"
        "in vec2 aWorldCoords;"
@@ -426,15 +427,15 @@ SHADER_DEFINE( shader_tile_main,
        "void main()"
        "{"
                //"vec3 shadowing_colour = vec3( 0.93, 0.88536, 0.8184 ) * 0.97;"
-               "vec3 shadowing_colour = vec3( 0.8, 0.8, 0.8 );"
+               //"vec3 shadowing_colour = vec3( 0.8, 0.8, 0.8 );"
 
                "vec4 glyph = texture( uTexGlyphs, aTexCoords.xy );"
                "vec4 wood = texture( uTexWood, aTexCoords.zw );"
                "vec4 wood_secondary = texture( uTexWood, aTexCoords.zw + 0.25 );"
-               "vec3 wood_comp = mix( wood_secondary.rgb * shadowing_colour, wood.rgb, clamp( glyph.b * 2.0 - 1.0, 0.0, 1.0 ) );"
+               "vec3 wood_comp = mix( wood_secondary.rgb * uShadowing, wood.rgb, clamp( glyph.b*2.0-1.0, 0.0, 1.0 ) );"
                
                //"vec3 shadows = mix( vec3( 0.85, 0.7344, 0.561 ), vec3(1.0,1.0,1.0), glyph.r );"
-               "vec3 shadows = mix( shadowing_colour, vec3(1.0,1.0,1.0), glyph.r );"
+               "vec3 shadows = mix( uShadowing, vec3(1.0,1.0,1.0), glyph.r );"
                
                "vec4 output_regular = vec4( wood_comp * shadows, mix( glyph.a, glyph.b, uForeground ) );"
                
@@ -444,7 +445,8 @@ SHADER_DEFINE( shader_tile_main,
                "FragColor = mix( output_regular, output_ghost, uGhost ) * uColour;"
        "}"
        ,
-       UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", "uColour", "uForeground", "uVisibility" })
+       UNIFORMS({ "uPv", "uOffset", "uTexGlyphs", "uTexWood", "uSubTransform", "uGhost", "uMousePos", 
+         "uColour", "uForeground", "uVisibility", "uShadowing" })
 )
 
 SHADER_DEFINE( shader_background,
index 5e431ac015840fa6563d325ce3f1f7500d5665ea..9173567f8c6798252def196f6253727976af7081 100644 (file)
Binary files a/textures/tile_minimal.png and b/textures/tile_minimal.png differ