init
[csRadar.git] / csRadar.c
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <math.h>
6
7 // CSR lib
8 #include "csrTypes.h"
9 #include "csrMath.h"
10 #include "csrMem.h"
11 #include "csrIO.h"
12 #include "csrComb.h"
13
14 // Valve formats
15 #include "vdf.h"
16 #include "vpk.h"
17 #include "vmdl.h"
18 #include "vmf.h"
19
20 #include "vfilesys.h"
21
22 // CSR main
23 #include "csrDraw.h"
24 #include "csr32f.h"
25
26
27 //#include "stretchy_buffer.h"
28
29 int main( int argc, char *argv[] )
30 {
31 vmf_vert *triangles = NULL;
32 vmf_vert oh_yeah_yeah = {0};
33
34 for( int i = 0; i < 22; i ++ )
35 {
36 triangles = csr_sb_reserve( triangles, 3, sizeof( vmf_vert ) );
37
38 vmf_vert *tri = triangles + csr_sb_count( triangles );
39
40 tri[0] = oh_yeah_yeah;
41 tri[1] = oh_yeah_yeah;
42 tri[2] = oh_yeah_yeah;
43
44 csr_sb_inc( triangles, 3 );
45 }
46
47 if( argc == 2 )
48 {
49
50 printf( "read: %s\n", argv[1] );
51 vdf_node *node = vdf_open_file( argv[1] );
52
53
54 vmf_solid solid_main;
55
56
57 solidgen_ctx_init( &solid_main );
58
59 vdf_node *world = vdf_next( node, "world", NULL );
60
61 vdf_foreach( world, "solid", brush )
62 {
63 solidgen_push( &solid_main, brush );
64 }
65
66 vmf_vert *triangles = NULL;
67
68 for( int i = 0; i < csr_sb_count( solid_main.indices )/3; i ++ )
69 {
70 u32 * base = solid_main.indices + i*3;
71
72 triangles = csr_sb_reserve( triangles, 3, sizeof( vmf_vert ) );
73
74 vmf_vert *tri = triangles + csr_sb_count( triangles );
75
76 tri[0] = solid_main.verts[ base[0] ];
77 tri[1] = solid_main.verts[ base[1] ];
78 tri[2] = solid_main.verts[ base[2] ];
79
80 csr_sb_inc( triangles, 3 );
81 }
82
83 csr_frag *image = (csr_frag *)csr_malloc( 1024*1024*sizeof(csr_frag) );
84 draw_buffers( image, 1024, 1024, (v4f){ -1000.f, -1000.f, 1000.f, 1000.f }, triangles, csr_sb_count( triangles )/3 );
85
86 float *rgba_test = (float *)csr_malloc( 1024*1024*sizeof(float)*3 );
87
88 for( int i = 0; i < 1024*1024; i ++ )
89 {
90 rgba_test[i*3+0] = image[i].qa;
91 rgba_test[i*3+1] = image[i].qb;
92 rgba_test[i*3+2] = image[i].depth;
93 }
94
95 csr_32f_write( "hello.pfm", 1024, 1024, rgba_test );
96
97 free( rgba_test );
98 free( image );
99 csr_sb_free( triangles );
100
101 solidgen_to_obj( &solid_main, "hello.obj" );
102
103 vdf_free_r( node );
104 }
105 }