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
}
};
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
{
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) );
}
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) );
}
}
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 );
}
// 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 ++ )
draw_mesh( cell->state & FLAG_FLIP_FLOP? 5: 4, 1 );
}
}
+ */
// LIGHT FLARES
// ========================================================================================================
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 );
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();
}
"uniform float uForeground;"
"uniform vec2 uMousePos;"
"uniform vec4 uColour;"
+ "uniform vec3 uShadowing;"
""
"in vec4 aTexCoords;"
"in vec2 aWorldCoords;"
"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 ) );"
"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,