X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world_gen.c;h=e2ec14af8edd774ad28c7f441b624d3c66109d4c;hb=38514b4ba03412ad51df02dc2ba345e1be41005d;hp=543be6d178fb2d72426db6ba55db601c38830720;hpb=0c3d1d55160d5ce911ead69de84b1d8200a0036f;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world_gen.c b/world_gen.c index 543be6d..e2ec14a 100644 --- a/world_gen.c +++ b/world_gen.c @@ -46,7 +46,7 @@ static void world_add_all_if_material( m4x3f transform, scene_context *scene, * | | * |________| */ -static void world_gen_add_blob( world_instance *world, +static void world_gen_add_blob( vg_rand *rand, world_instance *world, scene_context *scene, ray_hit *hit ) { m4x3f transform; @@ -57,7 +57,7 @@ static void world_gen_add_blob( world_instance *world, float angle = v3_dot(hit->normal,(v3f){0.0f,1.0f,0.0f}); q_axis_angle( qsurface, axis, angle ); - q_axis_angle( qrandom, (v3f){0.0f,1.0f,0.0f}, vg_randf64()*VG_TAUf ); + q_axis_angle( qrandom, (v3f){0.0f,1.0f,0.0f}, vg_randf64(rand)*VG_TAUf ); q_mul( qsurface, qrandom, qsurface ); q_m3x3( qsurface, transform ); v3_copy( hit->pos, transform[3] ); @@ -123,9 +123,10 @@ static void world_apply_procedural_foliage( world_instance *world, float area = volume[0]*volume[2]; u32 particles = 0.08f * area; - /* TODO: Quasirandom? */ vg_info( "Map area: %f. Max particles: %u\n", area, particles ); + u64 t0 = SDL_GetPerformanceCounter(); +#if 0 for( u32 i=0; iscene_geo.bbx[0], co ); + + ray_hit hit; + hit.dist = INFINITY; + + if( ray_world( world, co, (v3f){0.0f,-1.0f,0.0f}, &hit, + k_material_flag_ghosts )){ + struct world_surface *m1 = ray_hit_surface( world, &hit ); + if((hit.normal[1] > 0.8f) && (m1 == mat) && + (hit.pos[1] > 0.0f+10.0f)){ + world_gen_add_blob( &rand, world, scene, &hit ); + count ++; + } + } + + } + } + } + +#endif + + + + u64 t1 = SDL_GetPerformanceCounter(), + utime_blobs = t1-t0, + ufreq = SDL_GetPerformanceFrequency(); + f64 ftime_blobs = ((f64)utime_blobs / (f64)ufreq)*1000.0; + + vg_info( "%d foliage models added. %f%% (%fms)\n", count, + 100.0*((f64)count/(f64)particles), ftime_blobs); } static