X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=world.h;h=cfa809c4dfe2d852ecf9af9edf0ba07bd0b3d3e6;hb=98b9bcf0e10bc02cf679d03fa269613e140ba878;hp=3f806cb8714e00dbabf0d8564dede4a7b9acd43b;hpb=e61356f70eddb79f05d7b9e329e91963ec74f817;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/world.h b/world.h index 3f806cb..cfa809c 100644 --- a/world.h +++ b/world.h @@ -53,6 +53,8 @@ enum geo_type k_geo_type_water = 2 }; +static const float k_light_cube_size = 8.0f; + struct world_instance { /* This is a small flag we use to changelevel. @@ -79,6 +81,9 @@ struct world_instance /* STD140 */ struct ub_world_lighting { + v4f g_cube_min, + g_cube_inv_range; + /* v3f (padded) */ v4f g_light_colours[3], g_light_directions[3], @@ -93,6 +98,9 @@ struct world_instance int g_light_preview; int g_shadow_samples; + int g_debug_indices; + int g_debug_complexity; + #if 0 v4f g_point_light_positions[32]; v4f g_point_light_colours[32]; @@ -103,7 +111,10 @@ struct world_instance int ubo_bind_point; GLuint tbo_light_entities, - tex_light_entities; + tex_light_entities, + tex_light_cubes; + + v3i light_cubes; struct framebuffer heightmap; @@ -213,6 +224,8 @@ struct world_instance { mdl_node *node; struct classtype_world_light *inf; + m4x3f inverse_world; + v2f angle_sin_cos; /* enabled.. etc? * TODO: we should order entities in the binary by their type */ @@ -625,6 +638,8 @@ VG_STATIC void world_update( world_instance *world, v3f pos ) g_time += vg.time_delta * (1.0/(k_day_length*60.0)); world->ub_lighting.g_time = g_time; + world->ub_lighting.g_debug_indices = k_debug_light_indices; + world->ub_lighting.g_debug_complexity = k_debug_light_complexity; glBindBuffer( GL_UNIFORM_BUFFER, world->ubo_lighting ); glBufferSubData( GL_UNIFORM_BUFFER, 0, @@ -734,7 +749,7 @@ VG_STATIC void world_update( world_instance *world, v3f pos ) 0xff00ff00 ); } - if( k_debug_light_index ) + if( k_debug_light_indices ) { for( int i=0; ilight_count; i++ ) {