X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_render.c;h=1c030a6b66f79a90165856589caaa6832fb49c54;hb=fdd41609e59c7df548682b25001f0015dc1acbea;hp=8255d5355b35ffa31bbc418d17851ad08c51ef3c;hpb=342fcbf6fda017bdd38d56ce0fa7c9e59e589f3b;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_render.c b/world_render.c index 8255d53..1c030a6 100644 --- a/world_render.c +++ b/world_render.c @@ -8,6 +8,17 @@ #include "world.h" #include "world_render.h" +static int ccmd_set_time( int argc, const char *argv[] ){ + if( argc == 1 ){ + world_instance *world = world_current_instance(); + world->time = atof( argv[0] ); + } + else { + vg_error( "Usage set_time <0-1.0>\n" ); + } + return 0; +} + VG_STATIC void async_world_render_init( void *payload, u32 size ) { vg_info( "Allocate uniform buffers\n" ); @@ -53,6 +64,15 @@ VG_STATIC void async_world_render_init( void *payload, u32 size ) VG_STATIC void world_render_init(void) { + VG_VAR_F32( k_day_length ); + VG_VAR_I32( k_debug_light_indices ); + VG_VAR_I32( k_debug_light_complexity ); + VG_VAR_I32( k_light_preview ); + vg_console_reg_cmd( "set_time", ccmd_set_time, NULL ); + + world_render.sky_rate = 1.0; + world_render.sky_target_rate = 1.0; + shader_scene_standard_register(); shader_scene_standard_alphatest_register(); shader_scene_vertex_blend_register(); @@ -61,6 +81,15 @@ VG_STATIC void world_render_init(void) shader_scene_position_register(); shader_model_sky_register(); + vg_info( "Loading world resources\n" ); + vg_linear_clear( vg_mem.scratch ); + + mdl_context msky; + mdl_open( &msky, "models/rs_skydome.mdl", vg_mem.scratch ); + mdl_load_metadata_block( &msky, vg_mem.scratch ); + mdl_async_load_glmesh( &msky, &world_render.skydome ); + mdl_close( &msky ); + vg_info( "Loading default world textures\n" ); vg_tex2d_load_qoi_async_file( "textures/garbage.qoi", VG_TEX2D_NEAREST|VG_TEX2D_REPEAT, @@ -423,7 +452,8 @@ VG_STATIC void render_world_gates( world_instance *world, camera *cam, VG_STATIC void world_prerender( world_instance *world ) { - world->time += vg.time_delta * (1.0/(k_day_length*60.0)); + f32 day_length = vg_maxf(0.1f, fabsf(k_day_length)) * vg_signf(k_day_length); + world->time += vg.time_delta * (1.0/(day_length*60.0)); struct ub_world_lighting *state = &world->ub_lighting;