X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=skaterift.c;h=6d402bfc260422a819dcff16154e075413bc6c62;hb=65de5fb65850b8eb282455d15ca7466b656c1ef8;hp=baa3b84c01a7887453807dead178322a2ba6281c;hpb=a1adba47558099cab82aa6d10abdc1dca11d3342;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/skaterift.c b/skaterift.c index baa3b84..6d402bf 100644 --- a/skaterift.c +++ b/skaterift.c @@ -96,7 +96,9 @@ VG_STATIC void vg_load(void) /* 'systems' are completely loaded now */ strcpy( world.world_name, "maps/mp_mtzero.mdl" ); +#if 0 strcpy( world.world_name, "maps/mp_gridmap.mdl" ); +#endif world_load(); vg_console_load_autos(); } @@ -158,22 +160,57 @@ VG_STATIC void present_view_with_post_processing(void) glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA); glBlendEquation(GL_FUNC_ADD); - shader_blitblur_use(); - shader_blitblur_uTexMain( 0 ); - shader_blitblur_uTexMotion( 1 ); - shader_blitblur_uBlurStrength( cl_blur_strength / (vg.frame_delta*60.0f) ); + if( cl_blur ) + { + shader_blitblur_use(); + shader_blitblur_uTexMain( 0 ); + shader_blitblur_uTexMotion( 1 ); + shader_blitblur_uBlurStrength(cl_blur_strength / (vg.frame_delta*60.0f)); + + v2f menu_blurring; + v2_muls( (v2f){ 0.04f, 0.001f }, menu_opacity, menu_blurring ); + shader_blitblur_uOverrideDir( menu_blurring ); + + if( cl_view_id == 0 ) + render_fb_bind_texture( gpipeline.fb_main, 0, 0 ); + else if( cl_view_id == 1 ) + render_fb_bind_texture( gpipeline.fb_main, 1, 0 ); + else + render_fb_bind_texture( gpipeline.fb_main, 0, 0 ); - if( cl_view_id == 0 ) - render_fb_bind_texture( gpipeline.fb_main, 0, 0 ); - else if( cl_view_id == 1 ) - render_fb_bind_texture( gpipeline.fb_main, 1, 0 ); + render_fb_bind_texture( gpipeline.fb_main, 1, 1 ); + } else + { + shader_blit_use(); + shader_blit_uTexMain( 0 ); render_fb_bind_texture( gpipeline.fb_main, 0, 0 ); + } - render_fb_bind_texture( gpipeline.fb_main, 1, 1 ); render_fsquad(); } +VG_STATIC void render_player_transparent(void) +{ + static camera small_cam; /* DOES NOT NEED TO BE STATIC BUT MINGW + SAIS OTHERWISE */ + + m4x3_copy( main_camera.transform, small_cam.transform ); + + small_cam.fov = main_camera.fov; + small_cam.nearz = 0.05f; + small_cam.farz = 60.0f; + + camera_update_view( &small_cam ); + camera_update_projection( &small_cam ); + camera_finalize( &small_cam ); + + /* Draw player to window buffer and blend background ontop */ + + glBindFramebuffer( GL_FRAMEBUFFER, 0 ); + draw_player( &small_cam ); +} + VG_STATIC void render_scene(void) { render_fb_bind( gpipeline.fb_main ); @@ -184,10 +221,20 @@ VG_STATIC void render_scene(void) glEnable( GL_DEPTH_TEST ); render_world( &main_camera ); + + int player_transparent = !(player.is_dead || freecam), + player_draw = !cl_menu; + + if( !player_transparent && player_draw ) + draw_player( &main_camera ); + render_water_texture( &main_camera ); render_fb_bind( gpipeline.fb_main ); render_water_surface( &main_camera ); render_world_gates( &main_camera ); + + if( player_transparent && player_draw ) + render_player_transparent(); } VG_STATIC void render_menu(void) @@ -196,31 +243,6 @@ VG_STATIC void render_menu(void) menu_render( &main_camera ); } -VG_STATIC void render_player_into_world(void) -{ - render_fb_bind( gpipeline.fb_main ); - draw_player( &main_camera ); -} - -VG_STATIC void render_player_transparent(void) -{ - camera small_cam; - m4x3_copy( main_camera.transform, small_cam.transform ); - - small_cam.fov = main_camera.fov; - small_cam.nearz = 0.05f; - small_cam.farz = 60.0f; - - camera_update_view( &small_cam ); - camera_update_projection( &small_cam ); - camera_finalize( &small_cam ); - - /* Draw player to window buffer and blend background ontop */ - - glBindFramebuffer( GL_FRAMEBUFFER, 0 ); - draw_player( &small_cam ); -} - VG_STATIC void render_main_game(void) { static float fov = 60.0f; @@ -243,15 +265,6 @@ VG_STATIC void render_main_game(void) /* ========== Begin Frame ========== */ render_scene(); - - if( !cl_menu ) - { - if( player.is_dead | freecam ) - render_player_into_world(); - else - render_player_transparent(); - } - present_view_with_post_processing(); if( cl_menu ) @@ -331,6 +344,7 @@ VG_STATIC void vg_ui(void) //glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); audio_debug_soundscapes(); + render_view_framebuffer_ui(); } #if 0