.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)
{
wrender.mdl = *surf;
wrender.height = height;
+ wrender.enabled = 1;
v4_copy( (v4f){ 0.0f, 1.0f, 0.0f, height }, wrender.plane );
}