- SHADER_USE( tilemap_shader );
- glUniformMatrix3fv( SHADER_UNIFORM( tilemap_shader, "uPv" ), 1, GL_FALSE, (float *)vg_pv );
-
- glUniform1i( SHADER_UNIFORM( tilemap_shader, "uTexTiles" ), 0 );
- glActiveTexture( GL_TEXTURE0 );
- glBindTexture( GL_TEXTURE_2D, map.tile_texture );
-
- glUniform1i( SHADER_UNIFORM( tilemap_shader, "uTexRipples" ), 1 );
- glActiveTexture( GL_TEXTURE1 );
- glBindTexture( GL_TEXTURE_2D, map.flow_texture );
-
- glUniform2fv( SHADER_UNIFORM( tilemap_shader, "uOrigin" ), 1, map.origin );
- glUniform1f( SHADER_UNIFORM( tilemap_shader, "uTime" ), vg_time * 0.5f );
-
- glDrawArraysInstanced( GL_TRIANGLES, 0, 6, map.x*map.y );
-
- /*
- SHADER_USE( fish_shader );
- glUniformMatrix3fv( SHADER_UNIFORM( fish_shader, "uPv" ), 1, GL_FALSE, (float *)vg_pv );
- glUniform1i( SHADER_UNIFORM( fish_shader, "uTexMain" ), 0 );
- glActiveTexture( GL_TEXTURE0 );
- glBindTexture( GL_TEXTURE_2D, fish_texture );
- glUniform3f( SHADER_UNIFORM( fish_shader, "uPosition" ), 0.0f, 0.0f, floorf( vg_time*20.0f ) );
- glUniform3f( SHADER_UNIFORM( fish_shader, "uColour" ), 1.0f, 0.1f, 0.1f );
-
- glEnable( GL_BLEND );
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
- glBlendEquation( GL_FUNC_ADD );
-
- glDrawArrays( GL_TRIANGLES, 0, 6 );
-
- glDisable( GL_BLEND );
- */
-}
-
-void vg_register(void)
-{
- SHADER_INIT( colour_shader );
- SHADER_INIT( tilemap_shader );
- SHADER_INIT( fish_shader );
-}
-
-void vg_start(void)
-{
- glGenVertexArrays( 1, &tile_vao );
- glGenBuffers( 1, &tile_vbo );
+ // Shadow layer
+ glUniform4f( SHADER_UNIFORM( shader_tile_colour, "uColour" ), 0.5f, 0.5f, 0.5f, 1.0f );
+ for( int y = 0; y < world.h; y ++ )
+ for( int x = 0; x < world.w; x ++ )
+ {
+ struct cell *cell = pcell((v2i){x,y});
+
+ if( cell->state & FLAG_CANAL )
+ {
+ continue;
+ }
+
+ glUniform3f( SHADER_UNIFORM( shader_tile_colour, "uOffset" ), (float)x - 0.2f, (float)y - 0.15f, 1.0f );
+ glDrawArrays( GL_TRIANGLES, 0, 6 );
+ }