From 722e019f0498692d243c9a9f65c70b5d005f0bb1 Mon Sep 17 00:00:00 2001 From: hgn Date: Fri, 29 Dec 2023 10:37:57 +0000 Subject: [PATCH] texsheet, shader api, sav folder --- build.c | 1 + compile_texsheet.sh | 8 ++++++++ fishladder_vg1.c | 32 ++++++++++++++------------------ input.h | 3 ++- marblecomp.c | 10 ++++------ render.h | 4 ++-- shaders/background.h | 2 +- shaders/ball.h | 6 +++--- shaders/button.h | 8 +++++--- shaders/post_blur.h | 2 +- shaders/post_comp.h | 2 +- shaders/sprite.h | 4 ++-- shaders/tile_colour.h | 4 ++-- shaders/tile_main.h | 17 +++++++++-------- shaders/wire.h | 6 +++--- 15 files changed, 58 insertions(+), 51 deletions(-) create mode 100755 compile_texsheet.sh diff --git a/build.c b/build.c index bf4173e..009f67f 100644 --- a/build.c +++ b/build.c @@ -19,6 +19,7 @@ void build_game_content(void){ vg_symlink( "maps", "maps" ); vg_symlink( "sound", "sound" ); vg_syscall( "mkdir -p bin/%s/cfg", project_name ); + vg_syscall( "mkdir -p bin/%s/sav", project_name ); } void build_shaders(void); diff --git a/compile_texsheet.sh b/compile_texsheet.sh new file mode 100755 index 0000000..f9b0060 --- /dev/null +++ b/compile_texsheet.sh @@ -0,0 +1,8 @@ +cd textures_combine +../vg/bin/texsheet-linux-x86_64-clang/texsheet \ + ../textures_qoi/autocombine.qoi \ + ../sprites_autocombine.h \ + sprites_auto_combine \ + *.png +cd .. + diff --git a/fishladder_vg1.c b/fishladder_vg1.c index ddd2687..6eb5534 100644 --- a/fishladder_vg1.c +++ b/fishladder_vg1.c @@ -348,10 +348,10 @@ static void simulation_start(void); static int world_check_pos_ok( v2i co, int dist ); static int cell_interactive( v2i co ); -static void render_tiles( v4f const regular_colour, - v4f const selected_colour, int with_glow ); -static void render_tile_block( v2i start, v2i end, v4f const regular_colour, - v4f const selected_colour ); +static void render_tiles( v4f regular_colour, + v4f selected_colour, int with_glow ); +static void render_tile_block( v2i start, v2i end, v4f regular_colour, + v4f selected_colour ); #ifdef STEAM_LEADERBOARDS void leaderboard_set_score( struct cmp_level *cmp_level, u32 score ); @@ -1755,10 +1755,6 @@ static void _mc_vg1_update(void) m3x3_translate( m_view, origin_current ); m3x3_mul( m_projection, m_view, vg.pv ); -#if 0 - vg_projection_update(); -#endif - if( world.st.state == k_game_state_update ) return; @@ -2524,8 +2520,8 @@ static void _mc_vg1_update(void) } } -static void render_tile( v2i pos, struct cell *ptr, v4f const regular_colour, - v4f const selected_colour, int with_glow ) +static void render_tile( v2i pos, struct cell *ptr, v4f regular_colour, + v4f selected_colour, int with_glow ) { int selected = world.selected == pos[1]*world.w + pos[0]; int uv[2]; @@ -2559,7 +2555,7 @@ static void render_tile( v2i pos, struct cell *ptr, v4f const regular_colour, } // Renders specific chunk of tiles -static void render_tile_block( v2i start, v2i end, v4f const regular_colour, v4f const selected_colour ) +static void render_tile_block( v2i start, v2i end, v4f regular_colour, v4f selected_colour ) { v2i full_start = { 0,0 }; v2i full_end = { world.w, world.h }; @@ -2584,7 +2580,7 @@ static void render_tile_block( v2i start, v2i end, v4f const regular_colour, v4f } // Renders all tiles in the command list -static void render_tiles( v4f const regular_colour, v4f const selected_colour, +static void render_tiles( v4f regular_colour, v4f selected_colour, int with_glow ) { shader_tile_main_uColour( regular_colour ); @@ -2793,8 +2789,8 @@ static void _mc_vg1_render(void){ glClearColor( 0.14f, 0.14f, 0.14f, 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - v4f const colour_default = {1.0f, 1.0f, 1.0f, 1.0f}; - v4f const colour_selected = {0.90f, 0.92f, 1.0f, 1.0f}; + v4f colour_default = {1.0f, 1.0f, 1.0f, 1.0f}; + v4f colour_selected = {0.90f, 0.92f, 1.0f, 1.0f}; int const circle_base = 6; int const filled_start = circle_base+0; @@ -3291,9 +3287,9 @@ static void _mc_vg1_render(void){ glBindVertexArray( world.wire.vao ); shader_wire_uPv(vg.pv); - v4f const wire_left_colour = { 0.9f, 0.9f, 0.9f, 1.0f }; - v4f const wire_right_colour = { 0.5f, 0.5f, 0.5f, 1.0f }; - v4f const wire_drag_colour = { 0.3f, 0.3f, 0.3f, 0.6f }; + v4f wire_left_colour = { 0.9f, 0.9f, 0.9f, 1.0f }; + v4f wire_right_colour = { 0.5f, 0.5f, 0.5f, 1.0f }; + v4f wire_drag_colour = { 0.3f, 0.3f, 0.3f, 0.6f }; shader_wire_uTime( world.frame_lerp ); shader_wire_uGlow( 0.0f ); @@ -4228,7 +4224,7 @@ void _mc_vg1_start(void){ } /* FIXME: run this at vg exit */ -void vg_free(void) +void _mc_vg1_free(void) { #ifdef VG_STEAM sw_free_opengl(); diff --git a/input.h b/input.h index 787a61b..5bc501a 100644 --- a/input.h +++ b/input.h @@ -68,7 +68,8 @@ struct { static srinput; static int input_filter_generic(void){ - if( (srinput.state != k_input_state_enabled) || vg_console.enabled ) + if( (srinput.state != k_input_state_enabled) || + vg_console.enabled || vg.settings_open ) return 1; else return 0; diff --git a/marblecomp.c b/marblecomp.c index 07dbd7c..fe6176c 100644 --- a/marblecomp.c +++ b/marblecomp.c @@ -62,6 +62,7 @@ static void vg_load(void){ _mc_resource_load_main(); vg_bake_shaders(); vg_async_call( async_call_ready, NULL, 0 ); + vg_loader_step( NULL, _mc_vg1_free ); } void _mc_vg1_projection_update(void){ @@ -69,16 +70,13 @@ void _mc_vg1_projection_update(void){ * Reproject screenspace mouse into world */ - marblecomp.mouse_ws[0] = ((vg.mouse_pos[0]/(f32)vg.window_x)-0.5f)*2.0f; - marblecomp.mouse_ws[1] = -((vg.mouse_pos[1]/(f32)vg.window_y)-0.5f)*2.0f; - marblecomp.mouse_ws[2] = 1.0f; + marblecomp.mouse_ws[0]= (((i32)vg.mouse_pos[0]/(f32)vg.window_x)-0.5f)*2.0f; + marblecomp.mouse_ws[1]=-(((i32)vg.mouse_pos[1]/(f32)vg.window_y)-0.5f)*2.0f; + marblecomp.mouse_ws[2]=1.0f; m3x3f inverse; m3x3_inv( vg.pv, inverse ); m3x3_mulv( inverse, marblecomp.mouse_ws, marblecomp.mouse_ws ); - - vg_info( "VG %f %f\n", vg.mouse_pos[0], vg.mouse_pos[1] ); - vg_info( "WS %f %f\n", marblecomp.mouse_ws[0], marblecomp.mouse_ws[1] ); } diff --git a/render.h b/render.h index b451611..cd1da4e 100644 --- a/render.h +++ b/render.h @@ -32,8 +32,8 @@ static void use_mesh( struct mesh *m ){ static void render_init(void){ // Combined quad, long quad / empty circle / filled circle mesh float combined_mesh[6*6 + 32*6*3] = { - 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, - 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, + 0.0f,0.0f, 0.0f,1.0f, 1.0f,1.0f, + 0.0f,0.0f, 1.0f,1.0f, 1.0f,0.0f, 0.0f, 0.0f, 0.0f, 0.2f, 1.0f, 0.2f, 0.0f, 0.0f, 1.0f, 0.2f, 1.0f, 0.0f, diff --git a/shaders/background.h b/shaders/background.h index 9300213..f1ffbf3 100644 --- a/shaders/background.h +++ b/shaders/background.h @@ -71,7 +71,7 @@ static GLuint _uniform_background_uVisibility; static void shader_background_uPv(m3x3f m){ glUniformMatrix3fv(_uniform_background_uPv,1,GL_FALSE,(float*)m); } -static void shader_background_uOffset(v3f const v){ +static void shader_background_uOffset(v3f v){ glUniform3fv(_uniform_background_uOffset,1,v); } static void shader_background_uTexMain(int i){ diff --git a/shaders/ball.h b/shaders/ball.h index a7373ed..4ad07c4 100644 --- a/shaders/ball.h +++ b/shaders/ball.h @@ -66,7 +66,7 @@ static GLuint _uniform_ball_uPv; static GLuint _uniform_ball_uTexMain; static GLuint _uniform_ball_uColour; static GLuint _uniform_ball_uTexOffset; -static void shader_ball_uOffset(v3f const v){ +static void shader_ball_uOffset(v3f v){ glUniform3fv(_uniform_ball_uOffset,1,v); } static void shader_ball_uPv(m3x3f m){ @@ -75,10 +75,10 @@ static void shader_ball_uPv(m3x3f m){ static void shader_ball_uTexMain(int i){ glUniform1i(_uniform_ball_uTexMain,i); } -static void shader_ball_uColour(v3f const v){ +static void shader_ball_uColour(v3f v){ glUniform3fv(_uniform_ball_uColour,1,v); } -static void shader_ball_uTexOffset(v2f const v){ +static void shader_ball_uTexOffset(v2f v){ glUniform2fv(_uniform_ball_uTexOffset,1,v); } static void shader_ball_register(void){ diff --git a/shaders/button.h b/shaders/button.h index 3cfdc79..8210ef8 100644 --- a/shaders/button.h +++ b/shaders/button.h @@ -22,7 +22,9 @@ static struct vg_shader _shader_button = { "\n" " // Create texture coords\n" " vec2 edge_safe_coords = a_co * 0.98 + 0.01;\n" -" aTexCoords = (edge_safe_coords + uOffset.zw) * 0.25; \n" +" vec2 tex_uv = (edge_safe_coords + uOffset.zw) * 0.25;\n" +" tex_uv = vec2( tex_uv.x, 1.0-tex_uv.y );\n" +" aTexCoords = tex_uv;\n" "}\n" ""}, .fs = @@ -50,7 +52,7 @@ static GLuint _uniform_button_uOffset; static GLuint _uniform_button_uPv; static GLuint _uniform_button_uTexMain; static GLuint _uniform_button_uColour; -static void shader_button_uOffset(v4f const v){ +static void shader_button_uOffset(v4f v){ glUniform4fv(_uniform_button_uOffset,1,v); } static void shader_button_uPv(m3x3f m){ @@ -59,7 +61,7 @@ static void shader_button_uPv(m3x3f m){ static void shader_button_uTexMain(int i){ glUniform1i(_uniform_button_uTexMain,i); } -static void shader_button_uColour(v4f const v){ +static void shader_button_uColour(v4f v){ glUniform4fv(_uniform_button_uColour,1,v); } static void shader_button_register(void){ diff --git a/shaders/post_blur.h b/shaders/post_blur.h index dec41e9..991be24 100644 --- a/shaders/post_blur.h +++ b/shaders/post_blur.h @@ -50,7 +50,7 @@ static GLuint _uniform_post_blur_uDir; static void shader_post_blur_uTexMain(int i){ glUniform1i(_uniform_post_blur_uTexMain,i); } -static void shader_post_blur_uDir(v2f const v){ +static void shader_post_blur_uDir(v2f v){ glUniform2fv(_uniform_post_blur_uDir,1,v); } static void shader_post_blur_register(void){ diff --git a/shaders/post_comp.h b/shaders/post_comp.h index a53ee5d..0089548 100644 --- a/shaders/post_comp.h +++ b/shaders/post_comp.h @@ -50,7 +50,7 @@ static void shader_post_comp_uTexMain(int i){ static void shader_post_comp_uTexBloom(int i){ glUniform1i(_uniform_post_comp_uTexBloom,i); } -static void shader_post_comp_uComp(v2f const v){ +static void shader_post_comp_uComp(v2f v){ glUniform2fv(_uniform_post_comp_uComp,1,v); } static void shader_post_comp_register(void){ diff --git a/shaders/sprite.h b/shaders/sprite.h index c221ea8..1c7121e 100644 --- a/shaders/sprite.h +++ b/shaders/sprite.h @@ -43,10 +43,10 @@ static GLuint _uniform_sprite_uUv; static GLuint _uniform_sprite_uPos; static GLuint _uniform_sprite_uPv; static GLuint _uniform_sprite_uTexMain; -static void shader_sprite_uUv(v4f const v){ +static void shader_sprite_uUv(v4f v){ glUniform4fv(_uniform_sprite_uUv,1,v); } -static void shader_sprite_uPos(v3f const v){ +static void shader_sprite_uPos(v3f v){ glUniform3fv(_uniform_sprite_uPos,1,v); } static void shader_sprite_uPv(m3x3f m){ diff --git a/shaders/tile_colour.h b/shaders/tile_colour.h index 67aa2f2..da57334 100644 --- a/shaders/tile_colour.h +++ b/shaders/tile_colour.h @@ -35,10 +35,10 @@ static GLuint _uniform_tile_colour_uColour; static void shader_tile_colour_uPv(m3x3f m){ glUniformMatrix3fv(_uniform_tile_colour_uPv,1,GL_FALSE,(float*)m); } -static void shader_tile_colour_uOffset(v3f const v){ +static void shader_tile_colour_uOffset(v3f v){ glUniform3fv(_uniform_tile_colour_uOffset,1,v); } -static void shader_tile_colour_uColour(v4f const v){ +static void shader_tile_colour_uColour(v4f v){ glUniform4fv(_uniform_tile_colour_uColour,1,v); } static void shader_tile_colour_register(void){ diff --git a/shaders/tile_main.h b/shaders/tile_main.h index 283ef55..7ea89e6 100644 --- a/shaders/tile_main.h +++ b/shaders/tile_main.h @@ -36,8 +36,9 @@ static struct vg_shader _shader_tile_main = { " // Create texture coords\n" " vec2 random_offset = floor(hash_val * 4.0) * 0.25;\n" " vec2 edge_safe_coords = a_co * 0.98 + 0.01;\n" -" aTexCoords = vec4((edge_safe_coords + uOffset.zw) * 0.25, \n" -" edge_safe_coords * 0.25 + random_offset );\n" +" vec2 tex_uv = (edge_safe_coords + uOffset.zw) * 0.25;\n" +" tex_uv = vec2( tex_uv.x, 1.0-tex_uv.y );\n" +" aTexCoords = vec4( tex_uv, edge_safe_coords * 0.25 + random_offset );\n" " aWorldCoords = worldpos.xy; \n" "}\n" ""}, @@ -96,7 +97,7 @@ static GLuint _uniform_tile_main_uColour; static GLuint _uniform_tile_main_uShadowing; static GLuint _uniform_tile_main_uGlowA; static GLuint _uniform_tile_main_uGlowB; -static void shader_tile_main_uOffset(v4f const v){ +static void shader_tile_main_uOffset(v4f v){ glUniform4fv(_uniform_tile_main_uOffset,1,v); } static void shader_tile_main_uPv(m3x3f m){ @@ -123,19 +124,19 @@ static void shader_tile_main_uGhost(float f){ static void shader_tile_main_uForeground(float f){ glUniform1f(_uniform_tile_main_uForeground,f); } -static void shader_tile_main_uMousePos(v2f const v){ +static void shader_tile_main_uMousePos(v2f v){ glUniform2fv(_uniform_tile_main_uMousePos,1,v); } -static void shader_tile_main_uColour(v4f const v){ +static void shader_tile_main_uColour(v4f v){ glUniform4fv(_uniform_tile_main_uColour,1,v); } -static void shader_tile_main_uShadowing(v3f const v){ +static void shader_tile_main_uShadowing(v3f v){ glUniform3fv(_uniform_tile_main_uShadowing,1,v); } -static void shader_tile_main_uGlowA(v3f const v){ +static void shader_tile_main_uGlowA(v3f v){ glUniform3fv(_uniform_tile_main_uGlowA,1,v); } -static void shader_tile_main_uGlowB(v3f const v){ +static void shader_tile_main_uGlowB(v3f v){ glUniform3fv(_uniform_tile_main_uGlowB,1,v); } static void shader_tile_main_register(void){ diff --git a/shaders/wire.h b/shaders/wire.h index 1760469..4eb09a6 100644 --- a/shaders/wire.h +++ b/shaders/wire.h @@ -76,10 +76,10 @@ static GLuint _uniform_wire_uTexMain; static GLuint _uniform_wire_uColour; static GLuint _uniform_wire_uTime; static GLuint _uniform_wire_uGlow; -static void shader_wire_uStart(v3f const v){ +static void shader_wire_uStart(v3f v){ glUniform3fv(_uniform_wire_uStart,1,v); } -static void shader_wire_uEnd(v3f const v){ +static void shader_wire_uEnd(v3f v){ glUniform3fv(_uniform_wire_uEnd,1,v); } static void shader_wire_uPv(m3x3f m){ @@ -91,7 +91,7 @@ static void shader_wire_uCurve(float f){ static void shader_wire_uTexMain(int i){ glUniform1i(_uniform_wire_uTexMain,i); } -static void shader_wire_uColour(v4f const v){ +static void shader_wire_uColour(v4f v){ glUniform4fv(_uniform_wire_uColour,1,v); } static void shader_wire_uTime(float f){ -- 2.25.1