X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=csRadar.c;h=9c8c0b4d0f08e8922896ef1911554a2ba8c6e78a;hp=ae383f77e756ac7f5c32c998d7dfcbeab5d6e00f;hb=1bdd02062cda9b107c4d66586d3c036ea15f6ae2;hpb=a97099abba0a239e20929f04ece9d6839c96ac14 diff --git a/csRadar.c b/csRadar.c index ae383f7..9c8c0b4 100644 --- a/csRadar.c +++ b/csRadar.c @@ -3,6 +3,7 @@ #include #include #include +#include // CSR lib #include "csrTypes.h" @@ -14,10 +15,11 @@ // Valve formats #include "vdf.h" #include "vpk.h" +#include "vfilesys.h" + #include "vmdl.h" #include "vmf.h" -#include "vfilesys.h" // CSR main #include "csrDraw.h" @@ -28,29 +30,49 @@ int main( int argc, char *argv[] ) { - vmf_vert *triangles = NULL; - vmf_vert oh_yeah_yeah = {0}; - - for( int i = 0; i < 22; i ++ ) - { - triangles = csr_sb_reserve( triangles, 3, sizeof( vmf_vert ) ); - - vmf_vert *tri = triangles + csr_sb_count( triangles ); - - tri[0] = oh_yeah_yeah; - tri[1] = oh_yeah_yeah; - tri[2] = oh_yeah_yeah; - - csr_sb_inc( triangles, 3 ); - } - if( argc == 2 ) { + fs_set_gameinfo( "/home/harry/SteamLibrary/steamapps/common/Counter-Strike Global Offensive/csgo/gameinfo.txt" ); printf( "read: %s\n", argv[1] ); - vdf_node *node = vdf_open_file( argv[1] ); + //vdf_node *node = vdf_open_file( argv[1] ); + + vmf_map *map = vmf_init( argv[1], 1 ); + + // TODO: Make init/free codes + csr_target target = + { + .x = 1024, .y = 1024, + .fragments = (csr_frag *)csr_malloc( 1024*1024*sizeof(csr_frag) ), + .bounds = { -1000.f, -1000.f, 1000.f, 1000.f } + }; + csr_rt_clear( &target ); + + draw_vmf_group( &target, map, map->root, 0, NULL, NULL ); + + float *rgba_test = (float *)csr_malloc( 1024*1024*sizeof(float)*3 ); + + for( int l = 0; l < 1024; l ++ ) + { + for( int x = 0; x < 1024; x ++ ) + { + float *dst = &rgba_test[ (l*1024+x)*3 ]; + csr_frag *src = &target.fragments[ ((1023-l)*1024+x) ]; + + dst[0] = src->co[0]; + dst[1] = src->co[1]; + dst[2] = src->co[2]; + } + } + csr_32f_write( "hello.pfm", 1024, 1024, rgba_test ); + + free( target.fragments ); + free( rgba_test ); + vmf_free( map ); + fs_exit(); + /* vmf_solid solid_main; @@ -62,26 +84,31 @@ int main( int argc, char *argv[] ) { solidgen_push( &solid_main, brush ); } - - vmf_vert *triangles = NULL; + + clock_t t; + t = clock(); + printf("Timer starts\n"); + + csr_frag *image = (csr_frag *)csr_malloc( 1024*1024*sizeof(csr_frag) ); + clear_depth( image, 1024, 1024 ); for( int i = 0; i < csr_sb_count( solid_main.indices )/3; i ++ ) { u32 * base = solid_main.indices + i*3; - triangles = csr_sb_reserve( triangles, 3, sizeof( vmf_vert ) ); - - vmf_vert *tri = triangles + csr_sb_count( triangles ); + vmf_vert tri[3]; tri[0] = solid_main.verts[ base[0] ]; tri[1] = solid_main.verts[ base[1] ]; tri[2] = solid_main.verts[ base[2] ]; - - csr_sb_inc( triangles, 3 ); + + draw_buffers( image, 1024, 1024, (v4f){ -1000.f, -1000.f, 1000.f, 1000.f }, tri, 1 ); } - csr_frag *image = (csr_frag *)csr_malloc( 1024*1024*sizeof(csr_frag) ); - draw_buffers( image, 1024, 1024, (v4f){ -1000.f, -1000.f, 1000.f, 1000.f }, triangles, csr_sb_count( triangles )/3 ); + printf("Timer ends \n"); + t = clock() - t; + double time_taken = ((double)t)/CLOCKS_PER_SEC; // calculate the elapsed time + printf("Tracing took %f seconds to execute\n", time_taken); float *rgba_test = (float *)csr_malloc( 1024*1024*sizeof(float)*3 ); @@ -96,10 +123,10 @@ int main( int argc, char *argv[] ) free( rgba_test ); free( image ); - csr_sb_free( triangles ); solidgen_to_obj( &solid_main, "hello.obj" ); vdf_free_r( node ); + */ } }