#include <stdio.h>
#include <string.h>
#include <math.h>
+#include <time.h>
// CSR lib
#include "csrTypes.h"
// 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"
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;
{
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 );
free( rgba_test );
free( image );
- csr_sb_free( triangles );
solidgen_to_obj( &solid_main, "hello.obj" );
vdf_free_r( node );
+ */
}
}