texsheet, shader api, sav folder
authorhgn <hgodden00@gmail.com>
Fri, 29 Dec 2023 10:37:57 +0000 (10:37 +0000)
committerhgn <hgodden00@gmail.com>
Fri, 29 Dec 2023 10:37:57 +0000 (10:37 +0000)
15 files changed:
build.c
compile_texsheet.sh [new file with mode: 0755]
fishladder_vg1.c
input.h
marblecomp.c
render.h
shaders/background.h
shaders/ball.h
shaders/button.h
shaders/post_blur.h
shaders/post_comp.h
shaders/sprite.h
shaders/tile_colour.h
shaders/tile_main.h
shaders/wire.h

diff --git a/build.c b/build.c
index bf4173ec72c2d61694abda553019f0cca8ef54ac..009f67fcfea850ad81b16d3683e8e642ce7368da 100644 (file)
--- 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 (executable)
index 0000000..f9b0060
--- /dev/null
@@ -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 ..
+
index ddd2687407faf1e366ee1640fc53fdb360878731..6eb55341d3bfb21649c040188dfaeae72e33955c 100644 (file)
@@ -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 787a61b91ad8be4f36d34ccc54479f9564a6769b..5bc501a16c2dcd64104f73dc49d536a8192cc406 100644 (file)
--- 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;
index 07dbd7c5514d80f2535e92f3de939d5964ca2ac3..fe6176c9893a565dc14a86a524b39fb94075804d 100644 (file)
@@ -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] );
 }
 
 
index b451611dd6b61d67fa2daaca01f7f08cbf92f835..cd1da4e9cdc7c8a4f382d0e3fd7b465c919f2266 100644 (file)
--- 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,
index 9300213357813b3b0273d9f5cbb5352d388c2a1f..f1ffbf335dc81650f76cd3e4e5532d4f253c0470 100644 (file)
@@ -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){
index a7373edd652fba1a580b6dd7b8c98f30838b8337..4ad07c47cb0c8c946a9b799615e66203397d75c5 100644 (file)
@@ -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){
index 3cfdc7975abc2cf9db0b1e5162765ff3d2f900fb..8210ef81b7fed334e72cfd47deedb2825be85677 100644 (file)
@@ -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){
index dec41e9b0c591ba334a92d53c231be6cae3b8cc0..991be244ed8d794cafe021653429e8960e32b84c 100644 (file)
@@ -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){
index a53ee5d593e20dd41ebd6b089d43b9b6cb055456..00895486b338dd584ddb3aaac2ebd1184d5ebdbf 100644 (file)
@@ -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){
index c221ea859a3220cf574a88f1f2b63d86101b82af..1c7121e9118c2e5e0233cccd25b9f2c4371c45bc 100644 (file)
@@ -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){
index 67aa2f2be0237060e935c45d38a4ec5086e0b97b..da573343374eee2f5af994ae7372bbdb5c72fc04 100644 (file)
@@ -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){
index 283ef558e7b5a4985f030e5d5dcfb15654fa034e..7ea89e66607dc6ff771d7c28ef73d8031aaa9534 100644 (file)
@@ -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){
index 1760469800b62a3d9bd662c42d3413ff14905f22..4eb09a68fbdafa67a20345da58876f23e6f703f1 100644 (file)
@@ -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){