VG_STATIC void vg_framebuffer_resize( int w, int h )
{
render_fb_resize();
- water_fb_resize();
}
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 );
- glActiveTexture( GL_TEXTURE0 );
+ 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 )
- glBindTexture( GL_TEXTURE_2D, gpipeline.rgb_background );
- else if( cl_view_id == 1 )
- glBindTexture( GL_TEXTURE_2D, gpipeline.mv_background );
+ render_fb_bind_texture( gpipeline.fb_main, 1, 1 );
+ }
else
- glBindTexture( GL_TEXTURE_2D, gpipeline.rgb_background );
-
- glActiveTexture( GL_TEXTURE1 );
- glBindTexture( GL_TEXTURE_2D, gpipeline.mv_background );
+ {
+ shader_blit_use();
+ shader_blit_uTexMain( 0 );
+ render_fb_bind_texture( gpipeline.fb_main, 0, 0 );
+ }
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)
{
- glBindFramebuffer( GL_FRAMEBUFFER, gpipeline.fb_background );
+ render_fb_bind( gpipeline.fb_main );
glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
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 );
- glBindFramebuffer( GL_FRAMEBUFFER, gpipeline.fb_background );
+ 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)
menu_render( &main_camera );
}
-VG_STATIC void render_player_into_world(void)
-{
- glBindFramebuffer( GL_FRAMEBUFFER, gpipeline.fb_background );
- 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;
/* ========== 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 )
//glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
audio_debug_soundscapes();
+ render_view_framebuffer_ui();
}
#if 0