X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_water.h;h=11d9594d6fada5c0729b066d172db2cb7467b73a;hb=c2d67378dd5c82de50b8fbbbe222ec6be2da4eee;hp=85f4b5debd4766d7ee81f1fb3f379d8454653347;hpb=1740c935bfdacc65c5c7e4bb95fba1ada1f7118a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_water.h b/world_water.h index 85f4b5d..11d9594 100644 --- a/world_water.h +++ b/world_water.h @@ -26,18 +26,35 @@ wrender = .fbdepth = { .format = GL_RGBA, .div = 4 } }; -static void world_water_register(void) +static int world_water_init(void) { + vg_info( "world_water_init\n" ); shader_water_register(); + + if( vg_acquire_thread_sync(1) ) + { + if( !fb_init( &wrender.fbreflect ) || + !fb_init( &wrender.fbdepth ) ) + { + vg_release_thread_sync(1); + return 0; + } + + vg_tex2d_init( (vg_tex2d *[]){&tex_water_surf}, 1 ); + + vg_success( "done\n" ); + vg_release_thread_sync(1); + return 1; + } + else + return 0; } -static void world_water_init(void) +static void world_water_free(void *_) { - /* TODO: probably dont do this every time */ - wrender.enabled = 1; - - fb_init( &wrender.fbreflect ); - fb_init( &wrender.fbdepth ); + vg_tex2d_free( (vg_tex2d *[]){&tex_water_surf}, 1 ); + fb_free( &wrender.fbreflect ); + fb_free( &wrender.fbdepth ); } static void water_fb_resize(void) @@ -53,6 +70,7 @@ static void water_set_surface( glmesh *surf, float height ) { wrender.mdl = *surf; wrender.height = height; + wrender.enabled = 1; v4_copy( (v4f){ 0.0f, 1.0f, 0.0f, height }, wrender.plane ); }