+ world_global.sky_rate = 1.0;
+ world_global.sky_target_rate = 1.0;
+
+ shader_scene_standard_register();
+ shader_scene_standard_alphatest_register();
+ shader_scene_vertex_blend_register();
+ shader_scene_terrain_register();
+ shader_scene_depth_register();
+ shader_scene_position_register();
+
+ shader_model_sky_register();
+
+ vg_info( "Loading world resources\n" );
+
+ vg_linear_clear( vg_mem.scratch );
+ mdl_context *msky = mdl_load_full( vg_mem.scratch, "models/rs_skydome.mdl" );
+
+ mdl_node *nupper = mdl_node_from_name( msky, "dome_complete" );
+ world_global.dome_upper = *mdl_node_submesh( msky, nupper, 0 );
+
+ vg_acquire_thread_sync();
+ {
+ mdl_unpack_glmesh( msky, &world_global.skydome );
+ }
+ vg_release_thread_sync();
+
+ /* Other systems */
+ vg_info( "Loading other world systems\n" );
+
+ vg_loader_step( world_render_init, NULL );
+ vg_loader_step( world_sfd_init, NULL );
+ vg_loader_step( world_water_init, NULL );
+ vg_loader_step( world_gates_init, NULL );
+ vg_loader_step( world_routes_init, NULL );
+
+ /* Allocate dynamic world memory arena */
+ u32 max_size = 76*1024*1024;
+ world_global.generic_heap = vg_create_linear_allocator( vg_mem.rtmemory,
+ max_size,
+ VG_MEMORY_SYSTEM );