From 82dae85738b0ce35de8965398b775c9f57ab20e5 Mon Sep 17 00:00:00 2001 From: hgn Date: Sat, 11 Jun 2022 13:09:18 +0100 Subject: [PATCH] switch to raycast & bvh --- blender_export.py | 6 - character.h | 43 ++-- main.c | 528 ++++++++++++-------------------------- model.h | 8 +- scene.h | 532 ++++++++++++++++++++++++++++++++++----- terrain.h | 5 + textures/ch_gradient.png | Bin 157540 -> 168300 bytes 7 files changed, 658 insertions(+), 464 deletions(-) create mode 100644 terrain.h diff --git a/blender_export.py b/blender_export.py index e599ee7..38de929 100644 --- a/blender_export.py +++ b/blender_export.py @@ -141,11 +141,5 @@ def write_model(name): fp.close() -write_model( "test" ) -write_model( "free_dev" ) -write_model( "char_dev" ) -write_model( "skydome" ) -write_model( "cement_r1" ) - for col in bpy.data.collections["export"].children: write_model( col.name ) diff --git a/character.h b/character.h index 762511f..51f2c16 100644 --- a/character.h +++ b/character.h @@ -11,7 +11,7 @@ SHADER_DEFINE( shader_player, "uniform mat4 uPv;" "uniform mat4x3 uMdl;" - "uniform vec3 uOpacityLight;" + "uniform float uOpacity;" "" "out vec4 aColour;" "out vec2 aUv;" @@ -28,7 +28,7 @@ SHADER_DEFINE( shader_player, "aUv = a_uv;" "aNorm = mat3(uMdl) * a_norm;" "aCo = a_co;" - "aOpacity = 1.0-(gl_Position.y+0.5);" + "aOpacity = 1.0-(gl_Position.y+0.5)*uOpacity;" "}", /* Fragment */ "out vec4 FragColor;" @@ -48,7 +48,7 @@ SHADER_DEFINE( shader_player, "FragColor = vec4(pow(diffuse,vec3(1.0)),aOpacity);" "}" , - UNIFORMS({ "uTexMain", "uPv", "uMdl", "uOpacityLight" }) + UNIFORMS({ "uTexMain", "uPv", "uMdl", "uOpacity" }) ) #define FOREACH_PART(FN) \ @@ -274,12 +274,13 @@ static void character_eval( struct character *ch ) #define B3D_CO( X, Y, Z ) (v3f){ X, Z, -Y } -struct character_rig_lower +typedef struct character_pose character_pose; +struct character_pose { v3f b0, b1, p, fr, fl, pl, pr, hl, hr, apl, apr, cam; }; -static struct character_rig_lower character_pose_aero = +static character_pose pose_aero = { .b0 = {0.0721f, 0.8167f, 0.1365f}, .b1 = {-0.0773f, 1.1559f, -0.1699f}, @@ -295,7 +296,7 @@ static struct character_rig_lower character_pose_aero = .cam = {-0.3394f, 1.2661f, 0.2936f} }; -static struct character_rig_lower character_pose_slide = +static character_pose pose_slide = { .b0 = {0.6732f, 0.5565f, -0.0000f}, .b1 = {0.8116f, 1.0547f, 0.0613f}, @@ -311,7 +312,7 @@ static struct character_rig_lower character_pose_slide = .cam = {0.9888f, 1.4037f, 0.6081f} }; -static struct character_rig_lower character_pose_slide1 = +static character_pose pose_slide1 = { .b0 = {-0.2385f, 0.6403f, 0.1368f}, .b1 = {-0.5151f, 1.1351f, 0.1380f}, @@ -327,7 +328,7 @@ static struct character_rig_lower character_pose_slide1 = .cam = {-1.0508f, 1.0769f, 0.0528f} }; -static struct character_rig_lower character_pose_aero_reverse = +static character_pose pose_aero_reverse = { .b0 = {0.0616f, 0.8167f, -0.1415f}, .b1 = {0.0148f, 1.1559f, 0.1861f}, @@ -343,7 +344,7 @@ static struct character_rig_lower character_pose_aero_reverse = .cam = {-0.3394f, 1.2661f, -0.2936f} }; -static struct character_rig_lower character_pose_stand = +static character_pose pose_stand = { .b0 = {0.1877f, 1.0663f, 0.0063f}, .b1 = {0.0499f, 1.5564f, -0.0584f}, @@ -359,7 +360,7 @@ static struct character_rig_lower character_pose_stand = .cam = {-0.3477f, 1.5884f, -0.0019f} }; -static struct character_rig_lower character_pose_fly = +static character_pose pose_fly = { .b0 = {0.2995f, 0.6819f, -0.1369f}, .b1 = {0.1618f, 1.1720f, -0.2016f}, @@ -375,8 +376,8 @@ static struct character_rig_lower character_pose_fly = .cam = {-0.2727f, 1.2606f, 0.3564f} }; -static void character_rig_lower_blend( struct character *ch, - struct character_rig_lower *pose, float q ) +static +void character_pose_blend( struct character *ch, character_pose *pose, float q ) { v3_muladds( ch->ik_body.base, pose->b0, q, ch->ik_body.base ); v3_muladds( ch->ik_body.end, pose->b1, q, ch->ik_body.end ); @@ -392,10 +393,11 @@ static void character_rig_lower_blend( struct character *ch, v3_muladds( ch->cam_pos, pose->cam, q, ch->cam_pos ); } -static void character_pose_with_tilt( struct character *ch, v3f cog, - struct character_rig_lower *pose, float q ) +static +void character_final_pose( struct character *ch, v3f cog, + character_pose *pose, float q ) { - struct character_rig_lower npose; + character_pose npose; float dip = vg_clampf(cog[1], -1.0f, 0.3f) * 0.35f, tilt = vg_clampf(cog[2], -1.0f, 1.0f) * 0.3f; @@ -418,7 +420,7 @@ static void character_pose_with_tilt( struct character *ch, v3f cog, v3_copy( pose->fl, npose.fl ); v3_copy( pose->cam, npose.cam ); - character_rig_lower_blend( ch, &npose, q ); + character_pose_blend( ch, &npose, q ); } static void zero_ik_basic( struct ik_basic *ik ) @@ -500,15 +502,14 @@ static void character_testpose( struct character *ch, float t ) m4x3_identity( ch->matrices[k_chpart_wf] ); } -static void character_draw( struct character *ch ) +static void character_draw( struct character *ch, float temp ) { SHADER_USE(shader_player); glUniformMatrix4fv( SHADER_UNIFORM( shader_player, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); glUniform1i( SHADER_UNIFORM( shader_player, "uTexMain" ), 0 ); - glUniform3fv( SHADER_UNIFORM( shader_player, "uOpacityLight" ), 1, - ch->matrices[k_chpart_neck][3] ); + glUniform1f( SHADER_UNIFORM( shader_player, "uOpacity" ), temp ); GLint kuMdl = SHADER_UNIFORM( shader_player, "uMdl" ); @@ -529,8 +530,4 @@ static void character_shader_register(void) SHADER_INIT(shader_player); } -#undef FOREACH_PART -#undef MAKE_ENUM -#undef MAKE_STRING -#undef ADD_ONE #endif diff --git a/main.c b/main.c index 6c1714c..69d4df9 100644 --- a/main.c +++ b/main.c @@ -54,12 +54,19 @@ static int sv_debugcam = 0; static int sv_phys = 0; static int thirdperson = 0; static int clock_divider = 1; +static int replay_record = 0; + +static m4x3f *replay_buffer = NULL; +static int replay_buffer_frame = 0; + +#define REPLAY_LENGTH 120*60 /* Components */ #include "road.h" #include "scene.h" #include "ik.h" #include "character.h" +#include "terrain.h" int main( int argc, char *argv[] ) { @@ -97,29 +104,6 @@ static struct gplayer struct character mdl; - /* Opengl */ -#if 0 - glmesh mesh; - submodel legl, - legu, - board, - torso, - wheels, - foot, - - /* NEW MODEL */ - leg_r0, leg_r1, foot_r, - leg_l0, leg_l1, foot_l, - arm_r0, arm_r1, hand_r, - arm_l0, arm_l1, hand_l, - body, head; - - /* Rendering */ - m4x3f mleg_l, mknee_l, mleg_r, mknee_r, mboard; - m4x3f marm_l, melbow_l, marm_r, melbow_r, mbutt, - mfoot_l, mfoot_r; -#endif - v3f handl_target, handr_target, handl, handr; } @@ -127,13 +111,7 @@ player; static struct gworld { - glmesh skydome; - glmesh cement; - - scene foliage, /* Tree shader */ - geo, /* Std shader, collisions */ - detail; /* Std shader, no collisions */ - + scene geo; submodel terrain, terrain_rocks, terrain_road; @@ -169,6 +147,18 @@ static int reset_player( int argc, char const *argv[] ) return 0; } +static int playermodel( int argc, char const *argv[] ) +{ + if( argc < 1 ) return 0; + + glmesh old_mesh = player.mdl.mesh; + + if( character_load( &player.mdl, argv[0] ) ) + mesh_free( &old_mesh ); + + return 1; +} + void vg_register(void) { scene_register(); @@ -178,8 +168,26 @@ void vg_register(void) void vg_start(void) { + replay_buffer = malloc( sizeof(m4x3f) * REPLAY_LENGTH * (PART_COUNT) ); + vg_tex2d_init( texture_list, vg_list_size( texture_list ) ); + vg_convar_push( (struct vg_convar){ + .name = "frame", + .data = &replay_buffer_frame, + .data_type = k_convar_dtype_i32, + .opt_i32 = { .min=0, .max=REPLAY_LENGTH-1, .clamp=1 }, + .persistent = 0 + }); + + vg_convar_push( (struct vg_convar){ + .name = "rec", + .data = &replay_record, + .data_type = k_convar_dtype_i32, + .opt_i32 = { .min=0, .max=1, .clamp=1 }, + .persistent = 0 + }); + vg_convar_push( (struct vg_convar){ .name = "freecam", .data = &freecam, @@ -246,102 +254,18 @@ void vg_start(void) character_load( &player.mdl, "ch_default" ); - /* temp */ - model *cement_model = vg_asset_read("models/cement_r1.mdl" ); - model_unpack( cement_model, &world.cement ); - free( cement_model ); - /* Setup scene */ scene_init( &world.geo ); - scene_init( &world.detail ); - scene_init( &world.foliage ); - - model *mworld = vg_asset_read( "models/free_dev.mdl" ); - model *mtest = vg_asset_read( "models/test.mdl" ); - - model *msky = vg_asset_read( "models/skydome.mdl" ); - model_unpack( msky, &world.skydome ); - free( msky ); - - scene_add_model( &world.geo, mworld, submodel_get( mworld, "terrain" ), - (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f ); - scene_copy_slice( &world.geo, &world.terrain ); - - scene_add_model( &world.geo, mworld, submodel_get( mworld, "terrain_rocks" ), - (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f ); - scene_copy_slice( &world.geo, &world.terrain_rocks ); - - submodel *ptree = submodel_get( mtest, "tree" ), - *pt_groundcover[] = - { - submodel_get( mtest, "bush" ), - submodel_get( mtest, "bush" ), - submodel_get( mtest, "blubber" ), - }; - - /* Sprinkle some trees in the terrain areas */ - v3f range; - v3_sub( world.geo.bbx[1], world.geo.bbx[0], range ); - -#ifdef VG_RELEASE - int const ktree_count = 8000, - kfoliage_count = 200000; -#else - int const ktree_count = 200, - kfoliage_count = 0; -#endif - - for( int i=0; i 0.9f ) - { - scene_add_model( &world.foliage, mtest, ptree, - pos, vg_randf() * VG_TAUf, vg_randf() * 0.5f + 0.5f ); - } - } - } - - for( int i=0; i 0.7f ) - { - scene_add_model( &world.foliage, mtest, - pt_groundcover[rand()%vg_list_size(pt_groundcover)], - pos, vg_randf() * VG_TAUf, vg_randf() * 0.5f + 0.5f ); - } - } - } - - scene_add_model( &world.geo, mworld, submodel_get( mworld, "road" ), - (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f ); - scene_copy_slice( &world.geo, &world.terrain_road ); + model *mworld = vg_asset_read( "models/mp_dev.mdl" ); - scene_add_model( &world.detail, mworld, submodel_get( mworld, "art" ), + scene_add_model( &world.geo, mworld, submodel_get( mworld, "mp_dev" ), (v3f){0.0f,0.0f,0.0f}, 0.0f, 1.0f ); - free( mtest ); free( mworld ); + scene_upload( &world.geo ); + bvh_create( &world.geo ); - scene_compute_occlusion( &world.foliage ); - scene_upload( &world.foliage ); - scene_upload( &world.geo ); - scene_upload( &world.detail ); - reset_player( 0, NULL ); player_transform_update(); @@ -426,7 +350,6 @@ static void player_freecam(void) v3_muls( move_vel, 0.75f, move_vel ); v3_add( move_vel, player.view, player.view ); - } static void apply_gravity( v3f vel, float const timestep ) @@ -444,8 +367,6 @@ static void player_start_air(void) float best_velocity_mod = 0.0f, best_velocity_delta = -9999.9f; - v3f targetn; - v3f axis, vup; m3x3_mulv( player.to_world, (v3f){0.0f,1.0f,0.0f}, vup ); v3_cross( vup, player.v, axis ); @@ -481,28 +402,31 @@ static void player_start_air(void) m3x3_mulv( vr, pv, pv ); v3_muladds( pco, pv, pstep, pco ); - - vg_line( pco, pco1, i&0x1?0xff000000:0xffffffff ); - v3f sh; - v3_copy( pco, sh ); - int hit = sample_scene_height( &world.geo, sh, targetn ); + ray_hit contact; + v3f vdir; + + v3_sub( pco, pco1, vdir ); + contact.dist = v3_length( vdir ); + v3_divs( vdir, contact.dist, vdir); - if( sh[1] >= pco[1] && hit ) + if( bvh_raycast( &world.geo, pco1, vdir, &contact )) { - float land_delta = v3_dot( pv, targetn ); + float land_delta = v3_dot( pv, contact.normal ); if( (land_delta < 0.0f) && (land_delta > best_velocity_delta) ) { best_velocity_delta = land_delta; best_velocity_mod = vmod; - v3_copy( sh, player.land_target ); + v3_copy( contact.pos, player.land_target ); q_axis_angle( vr_q, axis, vmod*0.1f ); q_m3x3( vr_q, player.vr ); } - v3_copy( sh, player.land_target_log[player.land_log_count ++] ); + + v3_copy( contact.pos, + player.land_target_log[player.land_log_count ++] ); break; } } @@ -519,7 +443,7 @@ static int sample_if_resistant( v3f pos ) v3f ground, norm; v3_copy( pos, ground ); - if( sample_scene_height( &world.geo, ground, norm ) ) + if( bvh_scene_sample( &world.geo, ground, norm ) ) { v3f angle; v3_copy( player.v, angle ); @@ -663,7 +587,7 @@ static void player_physics_air(void) v3f ground_pos, ground_norm; v3_copy( player.co, ground_pos ); - if( sample_scene_height( &world.geo, ground_pos, ground_norm ) ) + if( bvh_scene_sample( &world.geo, ground_pos, ground_norm ) ) { if( ground_pos[1] > player.co[1] ) { @@ -682,27 +606,29 @@ static void player_physics_air(void) v3_copy( player.co, pco ); v3_copy( player.v, pv ); - v3f targetn; for( int i=0; i<50; i++ ) { v3_copy( pco, pco1 ); apply_gravity( pv, pstep ); v3_muladds( pco, pv, pstep, pco ); - vg_line( pco, pco1, i&0x1?0xff000000:0xffffffff ); + //vg_line( pco, pco1, i&0x1?0xff000000:0xffffffff ); - v3f sh; - v3_copy( pco, sh ); - int hit = sample_scene_height( &world.geo, sh, targetn ); + ray_hit contact; + v3f vdir; - if( sh[1] >= pco[1] && hit ) + v3_sub( pco, pco1, vdir ); + contact.dist = v3_length( vdir ); + v3_divs( vdir, contact.dist, vdir); + + if( bvh_raycast( &world.geo, pco1, vdir, &contact )) { v3f localup; m3x3_mulv( player.to_world, (v3f){0.0f,1.0f,0.0f}, localup ); - float angle = v3_dot( localup, targetn ); + float angle = v3_dot( localup, contact.normal ); v3f axis; - v3_cross( localup, targetn, axis ); + v3_cross( localup, contact.normal, axis ); if( angle < 0.99f ) { @@ -711,7 +637,7 @@ static void player_physics_air(void) q_mul( correction, player.rot, player.rot ); } - draw_cross( sh, 0xffff0000 ); + draw_cross( contact.pos, 0xffff0000 ); break; } @@ -795,43 +721,7 @@ static void player_update(void) void vg_update(void) { player_update(); - - /* Creating a skeleton of the player dynamically */ - - - #if 0 - player.handl_target[0] = head[0] + 0.2f; - player.handl_target[1] = head[1] - 0.8f*(1.0f-fabsf(slip)); - player.handl_target[2] = head[2] + 0.2f + 0.7f*fabsf(slip); - - player.handr_target[0] = head[0] + 0.2f; - player.handr_target[1] = head[1] - 0.8f*(1.0f-fabsf(slip)); - player.handr_target[2] = head[2] - (0.2f + 0.7f*fabsf(slip)); - - if( vg_maxf(lslip,grab) > 0.5f ) - { - if( player.slip < 0.0f && player.in_air ) - { - player.handl_target[0] = 0.15f; - player.handl_target[1] = 0.1f; - player.handl_target[2] = 0.4f; - } - else - { - player.handr_target[0] = 0.15f; - player.handr_target[1] = 0.1f; - player.handr_target[2] = -0.4f; - } - - if( grab > 0.5f ) - { - player.handr_target[0] = -0.15f; - player.handr_target[1] = 0.1f; - player.handr_target[2] = 0.4f; - } - } - - #endif + bvh_debug( &world.geo, player.co ); } static void player_animate(void) @@ -876,9 +766,14 @@ static void player_animate(void) v3_muladds( head, offset, 0.7f, head ); head[1] = vg_clampf( head[1], 0.3f, kheight ); - v3_copy( head, player.view ); - v3f camoffs = {-0.2f,-0.6f,0.00f}; - v3_add( player.view, camoffs, player.view ); +#if 0 + if( !freecam ) + { + v3_copy( head, player.view ); + v3f camoffs = {-0.2f,-0.6f,0.00f}; + v3_add( player.view, camoffs, player.view ); + } +#endif /* @@ -910,28 +805,23 @@ static void player_animate(void) amt_aero = amt_std * (1.0f-fstand), amt_slide = amt_ground * fslide; - character_pose_with_tilt( &player.mdl, offset, - &character_pose_stand, amt_stand ); + character_final_pose( &player.mdl, offset, &pose_stand, amt_stand ); + character_final_pose( &player.mdl, offset, &pose_aero, amt_aero*fdirz ); + character_final_pose( &player.mdl, offset, + &pose_aero_reverse, amt_aero * (1.0f-fdirz) ); + character_final_pose( &player.mdl, offset, &pose_slide, amt_slide*fdirx ); + character_final_pose( &player.mdl, offset, + &pose_slide1, amt_slide*(1.0f-fdirx) ); - character_pose_with_tilt( &player.mdl, offset, - &character_pose_aero, amt_aero * fdirz ); - character_pose_with_tilt( &player.mdl, offset, - &character_pose_aero_reverse, amt_aero * (1.0f-fdirz) ); - - character_pose_with_tilt( &player.mdl, offset, - &character_pose_slide, amt_slide*fdirx ); - character_pose_with_tilt( &player.mdl, offset, - &character_pose_slide1, amt_slide*(1.0f-fdirx) ); - - character_pose_with_tilt( &player.mdl, (v3f){0.0f,0.0f,0.0f}, - &character_pose_fly, amt_air ); - - - - v3_copy( player.mdl.cam_pos, player.view ); - v3_muladds( player.view, offset, 0.7f, player.view ); - player.view[1] = vg_clampf( player.view[1], 0.3f, kheight ); + character_final_pose( &player.mdl, (v3f){0.0f,0.0f,0.0f}, + &pose_fly, amt_air ); + if( !freecam ) + { + v3_copy( player.mdl.cam_pos, player.view ); + v3_muladds( player.view, offset, 0.7f, player.view ); + player.view[1] = vg_clampf( player.view[1], 0.3f, kheight ); + } /* * Additive effects @@ -1034,107 +924,6 @@ static void player_animate(void) rhead = vg_lerpf( rhead, vg_clampf(atan2f( localv[2], -localv[0] ),-1.0f,1.0f), 0.04f ); player.mdl.rhead = rhead; - - -#if 0 - return; - - /* In the air, the dude should grab with the side thats highest, - * while also sliding the same foot downwards a bit */ - - float foot_l = 0.3f, - foot_r = -0.4f; - - player.handl_target[0] = 0.0f; - player.handl_target[1] = 0.0f; - player.handl_target[2] = 0.6f; - - player.handr_target[0] = 0.0f; - player.handr_target[1] = 0.0f; - player.handr_target[2] = -0.6f; - - if( 1||player.in_air ) - { - float tuck = player.board_xy[1], - tuck_amt = fabsf( tuck ) * (1.0f-fabsf(player.board_xy[0])); - - if( tuck < 0.0f ) - { - foot_l *= 1.0f-tuck_amt*1.5f; - - if( player.grab > 0.1f ) - { - m4x3_mulv( mboard, (v3f){0.1f,0.14f,0.6f}, - player.handl_target ); - } - } - else - { - foot_r *= 1.0f-tuck_amt*1.4f; - - if( player.grab > 0.1f ) - { - m4x3_mulv( mboard, (v3f){0.1f,0.14f,-0.6f}, - player.handr_target ); - } - } - } - else - { - } - - v3f fwd; - - /* offset */ - float *hips = player.mdl.ik_body.base, - *collar = player.mdl.ik_body.end, - *pole = player.mdl.ik_body.pole; - - v3_add( hips, collar, pole ); - v3_muls( pole, 0.5f, pole ); - v3_add( pole, (v3f){ 1.0f, 0.0f, 0.0f }, pole ); - - v3_copy( player.view, collar ); - v3_add( (v3f){ 0.2f,-0.55f,0.0f}, collar, hips ); - - player.mdl.rhip = 0.0f;//-1.0f;//sinf(vg_time); - player.mdl.rcollar = 0.0f;//-0.5f;//sinf(vg_time)*0.5f; - - struct ik_basic *ik_leg_l = &player.mdl.ik_leg_l, - *ik_leg_r = &player.mdl.ik_leg_r, - *ik_arm_l = &player.mdl.ik_arm_l, - *ik_arm_r = &player.mdl.ik_arm_r; - - m4x3_mulv( mboard, (v3f){ 0.0f,0.16f, foot_r }, ik_leg_r->end ); - m4x3_mulv( mboard, (v3f){ 0.0f,0.16f, foot_l }, ik_leg_l->end ); - - m4x3f tomp; - m4x3_identity(tomp); - m4x3_mulv( tomp, (v3f){ -0.4f,0.50f,-0.50f }, ik_leg_r->pole ); - m4x3_mulv( tomp, (v3f){ -0.4f,0.50f,-0.3f }, ik_leg_l->pole ); - - /* Arms */ - v3f hl, hr, neckl = {0.0f, 0.5f, 0.2f}, - neckr = {0.0f, 0.5f,-0.2f}; - - v3_lerp( player.handl, player.handl_target, 0.1f, player.handl ); - v3_lerp( player.handr, player.handr_target, 0.1f, player.handr ); - - v3_copy( player.handl, ik_arm_l->end ); - v3_copy( player.handr, ik_arm_r->end ); - v3_copy( (v3f){ 0.6f,0.7f, 0.4f }, ik_arm_l->pole ); - v3_copy( (v3f){ 0.6f,0.7f,-0.35f }, ik_arm_r->pole ); - - if( thirdperson ) - { - v3f nv; - v3_copy( player.v, nv ); - v3_normalize( nv ); - v3_muladds( player.view, nv, -3.0f, player.view ); - } - - m4x3_copy( mboard, player.mdl.matrices[k_chpart_wheels] ); -#endif } static void draw_player(void) @@ -1144,7 +933,7 @@ static void draw_player(void) m4x3_copy( player.to_world, player.mdl.mroot ); character_eval( &player.mdl ); - character_draw( &player.mdl ); + character_draw( &player.mdl, 1.0f ); } static void vg_framebuffer_resize( int w, int h ) @@ -1161,37 +950,51 @@ void vg_render(void) glDisable( GL_DEPTH_TEST ); glClearColor( 0.1f, 0.0f, 0.2f, 1.0f ); - glClearColor(141.0f/255.0f, 176.0f/255.0f, 215.0f/255.0f,1.0f); + glClearColor(111.0f/255.0f, 46.0f/255.0f, 45.0f/255.0f,1.0f); + + glClearColor( powf(0.066f,1.0f/2.2f), + powf(0.050f,1.0f/2.2f), + powf(0.046f,1.0f/2.2f), 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); v3f pos_inv; static v3f cam_lerped = {0.0f,0.0f,0.0f}; v3_lerp( cam_lerped, player.view, 0.08f, cam_lerped ); - m4x3_mulv( player.to_world, cam_lerped, pos_inv ); + if( !freecam ) + m4x3_mulv( player.to_world, cam_lerped, pos_inv ); + else + v3_add( player.co, player.view, pos_inv ); v3_negate( pos_inv, pos_inv ); static float vertical_lerp = 0.0f; vertical_lerp = vg_lerpf( vertical_lerp, pos_inv[1], 1.0f ); v3f final = { pos_inv[0], vertical_lerp, pos_inv[2] }; - float speed = v3_length( player.v ); + float speed = freecam? 0.0f: v3_length( player.v ); v3f shake = { vg_randf()-0.5f, vg_randf()-0.5f, vg_randf()-0.5f }; v3_muls( shake, speed*0.01f, shake ); + static v2f cam_lerped_dir; + + v2_lerp( cam_lerped_dir, player.look_dir, 0.04f, cam_lerped_dir ); + m4x3_identity( world_matrix ); m4x3_rotate_x( world_matrix, freecam? - player.look_dir[1]: + cam_lerped_dir[1]: 0.6f+shake[1]*0.04f+player.look_dir[1] ); - m4x3_rotate_y( world_matrix, player.look_dir[0]+shake[0]*0.02f ); + m4x3_rotate_y( world_matrix, + freecam? + cam_lerped_dir[0]: + player.look_dir[0]+shake[0]*0.02f ); m4x3_translate( world_matrix, final ); m4x4f world_4x4; m4x3_expand( world_matrix, world_4x4 ); m4x4_projection( vg_pv, - freecam? 90.0f: 120.0f, + freecam? 60.0f: 120.0f, (float)vg_window_x / (float)vg_window_y, 0.01f, 1000.0f ); m4x4_mul( vg_pv, world_4x4, vg_pv ); @@ -1202,67 +1005,44 @@ void vg_render(void) glEnable( GL_DEPTH_TEST ); - scene_foliage_shader_use(); - m4x3f temp1; - m4x3_identity( temp1 ); - glUniformMatrix4x3fv( SHADER_UNIFORM( shader_debug_vcol, "uMdl" ), - 1, GL_FALSE, (float *)temp1 ); - - vg_tex2d_bind( &tex_norwey, 0 ); - scene_tree_sway = 0.1f; - - scene_bind( &world.foliage ); - scene_draw( &world.foliage ); - if( debugsdf ) - scene_debugsdf( &world.foliage ); - - SHADER_USE(shader_unlit); - m4x3f temp2; - m4x3_identity(temp2); - m4x3_translate( temp2, player.co ); - glUniformMatrix4x3fv( SHADER_UNIFORM( shader_unlit, "uMdl" ), - 1, GL_FALSE, (float *)temp2 ); - glUniformMatrix4fv( SHADER_UNIFORM( shader_unlit, "uPv" ), - 1, GL_FALSE, (float *)vg_pv ); - - glUniform1i( SHADER_UNIFORM( shader_unlit, "uTexMain" ), 0 ); - vg_tex2d_bind( &tex_sky, 0 ); - - mesh_bind( &world.skydome ); - mesh_draw( &world.skydome ); - -#if 0 - vg_tex2d_bind( &tex_cement, 0 ); - mesh_bind( &world.cement ); - mesh_draw( &world.cement ); -#endif - + /* + * Draw world + */ SHADER_USE(shader_standard_lit); + m4x3f identity_matrix; + m4x3_identity( identity_matrix ); + glUniformMatrix4fv( SHADER_UNIFORM( shader_standard_lit, "uPv" ), 1, GL_FALSE, (float *)vg_pv ); - glUniform1i( SHADER_UNIFORM( shader_standard_lit, "uTexMain" ), 0 ); glUniformMatrix4x3fv( SHADER_UNIFORM( shader_standard_lit, "uMdl" ), - 1, GL_FALSE, (float *)temp1 ); + 1, GL_FALSE, (float *)identity_matrix ); vg_tex2d_bind( &tex_grid, 0 ); + glUniform1i( SHADER_UNIFORM( shader_standard_lit, "uTexMain" ), 0 ); - scene_bind( &world.geo ); -#if 1 - glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"), - 0.2f,0.36f,0.25f,1.0f ); - submodel_draw( &world.terrain ); - - glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"), - 0.2f,0.2f,0.21f,1.0f ); - submodel_draw( &world.terrain_rocks ); glUniform4f( SHADER_UNIFORM(shader_standard_lit,"uColour"), 0.4f,0.4f,0.4f,1.0f ); - submodel_draw( &world.terrain_road ); -#endif - - scene_bind( &world.detail ); - scene_draw( &world.detail ); + + scene_bind( &world.geo ); + scene_draw( &world.geo ); + + if( !replay_record ) + { + m4x3f *base = &replay_buffer[(PART_COUNT)*replay_buffer_frame]; + + for( int i=0; iindice_count ); } +static void mesh_free( glmesh *mesh ) +{ + glDeleteVertexArrays( 1, &mesh->vao ); + glDeleteBuffers( 1, &mesh->ebo ); + glDeleteBuffers( 1, &mesh->vbo ); +} + #endif diff --git a/scene.h b/scene.h index 88981b6..10015f5 100644 --- a/scene.h +++ b/scene.h @@ -1,7 +1,11 @@ +#ifndef SCENE_H +#define SCENE_H + #include "vg/vg.h" #include "model.h" -GLuint tex_dual_noise; +typedef struct scene scene; +typedef struct bvh_node bvh_node; struct scene { @@ -9,6 +13,13 @@ struct scene model_vert *verts; u32 *indices; + + struct + { + bvh_node *nodes; + u32 node_count; + } + bvh; u32 vertex_count, indice_count, @@ -30,6 +41,8 @@ struct scene submodel submesh; }; +GLuint tex_dual_noise; + static void scene_init( scene *pscene ) { pscene->verts = NULL; @@ -267,12 +280,11 @@ SHADER_DEFINE( shader_standard_lit, "float light1 = max(0.0,dot(-vec3(0.5,-0.8,0.25), aNorm));" "float light2 = max(0.0,dot(-vec3(-0.8,0.5,-0.25), aNorm));" - "diffuse += vec3(0.2,0.2,0.2 ) + " + "diffuse += vec3(0.2,0.2,0.2) + " "vec3(1.0,1.0,0.9)*light1 + " - "vec3(0.1,0.3,0.4 )*light2;" + "vec3(0.1,0.3,0.4)*light2;" - "FragColor = vec4((diffuse*uColour.rgb)," - "aColour.a*uColour.a);" + "FragColor = vec4(diffuse*uColour.rgb, aColour.a*uColour.a);" "}" , UNIFORMS({ "uColour","uTexMain","uPv","uMdl" }) @@ -449,69 +461,6 @@ static void scene_shadow_gradient( scene *pscene, int comp, } } -/* Temporary */ -static int sample_scene_height( scene *pscene, v3f pos, v3f norm ) -{ - for( int i=0; iindice_count/3; i++ ) - { - u32 *tri = &pscene->indices[i*3]; - - float *pA = pscene->verts[tri[0]].co, - *pB = pscene->verts[tri[1]].co, - *pC = pscene->verts[tri[2]].co; - - float height; - if( triangle_raycast( pA, pB, pC, pos, &height )) - { - pos[1] = height; - - if( norm ) - { - v3f v0, v1; - v3_sub( pA, pB, v0 ); - v3_sub( pC, pB, v1 ); - v3_cross( v1, v0, norm ); - v3_normalize( norm ); - } - - return 1; - } - } - return 0; -} - -static void sample_scene_normal( scene *pscene, v3f pos, v3f normal ) -{ - for( int i=0; iindice_count/3; i++ ) - { - u32 *tri = &pscene->indices[i*3]; - - float height; - if( triangle_raycast( - pscene->verts[ tri[0] ].co, - pscene->verts[ tri[1] ].co, - pscene->verts[ tri[2] ].co, pos, &height )) - { - v3f v0, v1; - - v3_sub( pscene->verts[ tri[1] ].co, - pscene->verts[ tri[0] ].co, - v0 ); - - v3_sub( pscene->verts[ tri[2] ].co, - pscene->verts[ tri[0] ].co, - v1 ); - - v3_cross( v0, v1, normal ); - v3_normalize( normal ); - return; - } - } - - normal[0] = 0.0f; - normal[1] = 1.0f; - normal[2] = 0.0f; -} /* * Experimental SDF based shadows @@ -791,6 +740,7 @@ static void scene_upload( scene *pscene ) float scene_tree_sway = 0.1f; +#if 0 static void scene_foliage_shader_use(void) { SHADER_USE( shader_debug_vcol ); @@ -812,6 +762,7 @@ static void scene_foliage_shader_use(void) glUniform1f( SHADER_UNIFORM( shader_debug_vcol, "uSwayAmt" ), scene_tree_sway ); } +#endif static void scene_bind( scene *pscene ) { @@ -873,3 +824,448 @@ static void scene_register(void) SHADER_INIT( shader_standard_lit ); SHADER_INIT( shader_unlit ); } + + +/* Physics segment */ + +static int triangle_raycast2d( v3f pA, v3f pB, v3f pC, v3f ray, float *height ) +{ + v2f v0, v1, v2, vp, vp2; + float d, bca = 0.f, bcb = 0.f, bcc = 0.f; + + v0[0] = pB[0] - pA[0]; + v0[1] = pB[2] - pA[2]; + v1[0] = pC[0] - pA[0]; + v1[1] = pC[2] - pA[2]; + v2[0] = pB[0] - pC[0]; + v2[1] = pB[2] - pC[2]; + + d = 1.f / (v0[0]*v1[1] - v1[0]*v0[1]); + +#if 0 + /* Backface culling */ + if( v2_cross( v0, v1 ) > 0.f ) + return; +#endif + + vp[0] = ray[0] - pA[0]; + vp[1] = ray[2] - pA[2]; + + if( v2_cross( v0, vp ) > 0.f ) return 0; + if( v2_cross( vp, v1 ) > 0.f ) return 0; + + vp2[0] = ray[0] - pB[0]; + vp2[1] = ray[2] - pB[2]; + + if( v2_cross( vp2, v2 ) > 0.f ) return 0; + + bcb = (vp[0]*v1[1] - v1[0]*vp[1]) * d; + bcc = (v0[0]*vp[1] - vp[0]*v0[1]) * d; + bca = 1.f - bcb - bcc; + + *height = pA[1]*bca + pB[1]*bcb + pC[1]*bcc; + return 1; +} + +/* Temporary */ +static int sample_scene_height( scene *pscene, v3f pos, v3f norm ) +{ + for( int i=0; iindice_count/3; i++ ) + { + u32 *tri = &pscene->indices[i*3]; + + float *pA = pscene->verts[tri[0]].co, + *pB = pscene->verts[tri[1]].co, + *pC = pscene->verts[tri[2]].co; + + float height; + if( triangle_raycast2d( pA, pB, pC, pos, &height )) + { + pos[1] = height; + + if( norm ) + { + v3f v0, v1; + v3_sub( pA, pB, v0 ); + v3_sub( pC, pB, v1 ); + v3_cross( v1, v0, norm ); + v3_normalize( norm ); + } + + return 1; + } + } + return 0; +} + +static void sample_scene_normal( scene *pscene, v3f pos, v3f normal ) +{ + for( int i=0; iindice_count/3; i++ ) + { + u32 *tri = &pscene->indices[i*3]; + + float height; + if( triangle_raycast2d( + pscene->verts[ tri[0] ].co, + pscene->verts[ tri[1] ].co, + pscene->verts[ tri[2] ].co, pos, &height )) + { + v3f v0, v1; + + v3_sub( pscene->verts[ tri[1] ].co, + pscene->verts[ tri[0] ].co, + v0 ); + + v3_sub( pscene->verts[ tri[2] ].co, + pscene->verts[ tri[0] ].co, + v1 ); + + v3_cross( v0, v1, normal ); + v3_normalize( normal ); + return; + } + } + + normal[0] = 0.0f; + normal[1] = 1.0f; + normal[2] = 0.0f; +} + +struct bvh_node +{ + boxf bbx; + + /* if il is 0, this is a leaf */ + u32 il, count; + union{ u32 ir, start; }; +}; + +static void bvh_update_bounds( scene *s, u32 inode ) +{ + bvh_node *node = &s->bvh.nodes[ inode ]; + + box_init_inf( node->bbx ); + for( u32 i=0; icount; i++ ) + { + u32 idx = node->start+i; + model_vert *pa = &s->verts[ s->indices[idx*3+0] ], + *pb = &s->verts[ s->indices[idx*3+1] ], + *pc = &s->verts[ s->indices[idx*3+2] ]; + + box_addpt( node->bbx, pa->co ); + box_addpt( node->bbx, pb->co ); + box_addpt( node->bbx, pc->co ); + } +} + +static void bvh_subdiv( scene *s, u32 inode ) +{ + bvh_node *node = &s->bvh.nodes[ inode ]; + + v3f extent; + v3_sub( node->bbx[1], node->bbx[0], extent ); + + int axis = 0; + if( extent[1] > extent[0] ) axis = 1; + if( extent[2] > extent[axis] ) axis = 2; + + float split = node->bbx[0][axis] + extent[axis]*0.5f; + + i32 i = node->start, + j = i + node->count-1; + + while( i <= j ) + { + u32 *ti = &s->indices[i*3]; + + float a = s->verts[ti[0]].co[axis], + b = s->verts[ti[1]].co[axis], + c = s->verts[ti[2]].co[axis]; + + if( ((a+b+c) / 3.0f) < split ) + i ++; + else + { + /* Swap triangle indices */ + u32 *tj = &s->indices[j*3]; + u32 temp[3]; + temp[0] = ti[0]; + temp[1] = ti[1]; + temp[2] = ti[2]; + + ti[0] = tj[0]; + ti[1] = tj[1]; + ti[2] = tj[2]; + + tj[0] = temp[0]; + tj[1] = temp[1]; + tj[2] = temp[2]; + + j --; + } + } + + u32 left_count = i - node->start; + if( left_count == 0 || left_count == node->count ) return; + + u32 il = s->bvh.node_count ++, + ir = s->bvh.node_count ++; + + struct bvh_node *lnode = &s->bvh.nodes[il], + *rnode = &s->bvh.nodes[ir]; + + lnode->start = node->start; + lnode->count = left_count; + rnode->start = i; + rnode->count = node->count - left_count; + + node->il = il; + node->ir = ir; + node->count = 0; + + bvh_update_bounds( s, il ); + bvh_update_bounds( s, ir ); + bvh_subdiv( s, il ); + bvh_subdiv( s, ir ); +} + +static void bvh_create( scene *s ) +{ + u32 triangle_count = s->indice_count / 3; + s->bvh.nodes = malloc( sizeof(struct bvh_node) * (triangle_count*2-1) ); + + bvh_node *root = &s->bvh.nodes[0]; + s->bvh.node_count = 1; + + root->il = 0; + root->ir = 0; + root->count = triangle_count; + root->start = 0; + + bvh_update_bounds( s, 0 ); + bvh_subdiv( s, 0 ); + + s->bvh.nodes = + realloc( s->bvh.nodes, sizeof(struct bvh_node) * s->bvh.node_count ); + + vg_success( "BVH done, size: %u/%u\n", s->bvh.node_count, + (triangle_count*2-1) ); +} + +static void bvh_debug_node( scene *s, u32 inode, v3f pos, u32 colour ) +{ + struct bvh_node *node = &s->bvh.nodes[ inode ]; + + if( (pos[0] >= node->bbx[0][0] && pos[0] <= node->bbx[1][0]) && + (pos[2] >= node->bbx[0][2] && pos[2] <= node->bbx[1][2]) ) + { + if( !node->count ) + { + vg_line_boxf( node->bbx, colour ); + + bvh_debug_node( s, node->il, pos, colour ); + bvh_debug_node( s, node->ir, pos, colour ); + } + else + { + vg_line_boxf( node->bbx, 0xff00ff00 ); + for( u32 i=0; icount; i++ ) + { + u32 idx = (node->start+i)*3; + + model_vert *pa = &s->verts[ s->indices[ idx+0 ] ], + *pb = &s->verts[ s->indices[ idx+1 ] ], + *pc = &s->verts[ s->indices[ idx+2 ] ]; + + vg_line( pa->co, pb->co, 0xff0000ff ); + vg_line( pb->co, pc->co, 0xff0000ff ); + vg_line( pc->co, pa->co, 0xff0000ff ); + } + } + } +} + +static void bvh_debug( scene *s, v3f pos ) +{ + bvh_debug_node( s, 0, pos, 0x4000ffa8 ); +} + +static int bvh_scene_sample_node( scene *s, u32 inode, v3f pos, v3f norm ) +{ + bvh_node *node = &s->bvh.nodes[ inode ]; + + if( (pos[0] >= node->bbx[0][0] && pos[0] <= node->bbx[1][0]) && + (pos[2] >= node->bbx[0][2] && pos[2] <= node->bbx[1][2]) ) + { + if( !node->count ) + { + if( bvh_scene_sample_node( s, node->il, pos, norm )) return 1; + if( bvh_scene_sample_node( s, node->ir, pos, norm )) return 1; + } + else + { + for( u32 i=0; icount; i++ ) + { + u32 idx = (node->start+i)*3; + model_vert *pa = &s->verts[ s->indices[ idx+0 ] ], + *pb = &s->verts[ s->indices[ idx+1 ] ], + *pc = &s->verts[ s->indices[ idx+2 ] ]; + + float height; + if( triangle_raycast2d( pa->co, pb->co, pc->co, pos, &height )) + { + pos[1] = height; + + if( norm ) + { + v3f v0, v1; + v3_sub( pa->co, pb->co, v0 ); + v3_sub( pc->co, pb->co, v1 ); + v3_cross( v1, v0, norm ); + v3_normalize( norm ); + } + + return 1; + } + } + } + } + + return 0; +} + +static int bvh_scene_sample( scene *s, v3f pos, v3f norm) +{ + return bvh_scene_sample_node( s, 0, pos, norm ); +} + +typedef struct ray_hit ray_hit; +struct ray_hit +{ + float dist; + u32 *tri; + v3f pos, normal; +}; + +int ray_aabb( boxf box, v3f co, v3f dir, float dist ) +{ + v3f v0, v1; + float tmin, tmax; + + v3_sub( box[0], co, v0 ); + v3_sub( box[1], co, v1 ); + v3_div( v0, dir, v0 ); + v3_div( v1, dir, v1 ); + + tmin = vg_minf( v0[0], v1[0] ); + tmax = vg_maxf( v0[0], v1[0] ); + tmin = vg_maxf( tmin, vg_minf( v0[1], v1[1] )); + tmax = vg_minf( tmax, vg_maxf( v0[1], v1[1] )); + tmin = vg_maxf( tmin, vg_minf( v0[2], v1[2] )); + tmax = vg_minf( tmax, vg_maxf( v0[2], v1[2] )); + + return tmax >= tmin && tmin < dist && tmax > 0; +} + +static int bvh_ray_tri( scene *sc, u32 *tri, v3f co, v3f dir, ray_hit *hit ) +{ + float const kEpsilon = 0.00001f; + + v3f v0, v1, h, s, q, n; + float a,f,u,v,t; + + float *pa = sc->verts[tri[0]].co, + *pb = sc->verts[tri[1]].co, + *pc = sc->verts[tri[2]].co; + + v3_sub( pb, pa, v0 ); + v3_sub( pc, pa, v1 ); + v3_cross( dir, v1, h ); + v3_cross( v0, v1, n ); + + if( v3_dot( n, dir ) > 0.0f ) /* Backface culling */ + return 0; + + /* Parralel */ + a = v3_dot( v0, h ); + if( a > -kEpsilon && a < kEpsilon ) + return 0; + + f = 1.0f/a; + v3_sub( co, pa, s ); + + u = f * v3_dot(s, h); + if( u < 0.0f || u > 1.0f ) + return 0; + + v3_cross( s, v0, q ); + v = f * v3_dot( dir, q ); + if( v < 0.0f || u+v > 1.0f ) + return 0; + + t = f * v3_dot(v1, q); + if( t > kEpsilon && t < hit->dist ) + { + hit->dist = t; + hit->tri = tri; + return 1; + } + else return 0; +} + +static int bvh_ray( scene *s, u32 inode, v3f co, v3f dir, ray_hit *hit ) +{ + bvh_node *node = &s->bvh.nodes[ inode ]; + + if( !ray_aabb( node->bbx, co, dir, hit->dist )) + return 0; + + int count = 0; + + if( node->count ) + { + for( u32 i=0; icount; i++ ) + { + u32 *indices = &s->indices[ (node->start+i)*3 ]; + count += bvh_ray_tri( s, indices, co, dir, hit ); + } + } + else + { + count += bvh_ray( s, node->il, co, dir, hit ); + count += bvh_ray( s, node->ir, co, dir, hit ); + } + + return count; +} + +static int bvh_raycast( scene *s, v3f co, v3f dir, ray_hit *hit ) +{ + v3f pb; + v3_muladds( co, dir, hit->dist, pb ); + + int count = bvh_ray( s, 0, co, dir, hit ); + + if( count ) + { + vg_line( co, pb, 0xff00ffff ); + + v3f v0, v1; + + float *pa = s->verts[hit->tri[0]].co, + *pb = s->verts[hit->tri[1]].co, + *pc = s->verts[hit->tri[2]].co; + + v3_sub( pa, pb, v0 ); + v3_sub( pc, pb, v1 ); + v3_cross( v1, v0, hit->normal ); + v3_normalize( hit->normal ); + v3_muladds( co, dir, hit->dist, hit->pos ); + } + else + vg_line( co, pb, 0xff0000ff ); + + return count; +} + +#endif diff --git a/terrain.h b/terrain.h new file mode 100644 index 0000000..e9cb162 --- /dev/null +++ b/terrain.h @@ -0,0 +1,5 @@ +#include "vg/vg.h" +#include "scene.h" + + + diff --git a/textures/ch_gradient.png b/textures/ch_gradient.png index d81172eb2931674cae6266cc576cb042f281400a..dba223c5e3fd12af811ae47f3a93a0da4f05f239 100644 GIT binary patch delta 52434 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

LaSA$= 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 delta 41589 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