- m4x4_projection( projection,
- fov,
- (float)vg_window_x / (float)vg_window_y,
- 0.01f, 900.0f );
-
-#if 0 /* For debugging frustum */
- {
- m4x4f devm;
- m4x4_mul( projection, view, devm );
- m4x4_inv( devm, devm );
-
- v4f corners[] =
- {
- {-1,-1,-1, 1}, { 1,-1,-1, 1}, { 1, 1,-1, 1}, {-1, 1,-1, 1},
- {-1,-1, 1, 1}, { 1,-1, 1, 1}, { 1, 1, 1, 1}, {-1, 1, 1, 1}
- };
-
- for( int i=0; i<vg_list_size(corners); i++ )
- {
- m4x4_mulv( devm, corners[i], corners[i] );
- v3_muls( corners[i], 1.0f/corners[i][3], corners[i] );
- }
-
- vg_line( corners[0], corners[1], 0xffffffff );
- vg_line( corners[1], corners[2], 0xffffffff );
- vg_line( corners[2], corners[3], 0xffffffff );
- vg_line( corners[3], corners[0], 0xffffffff );
- vg_line( corners[4], corners[5], 0xffffffff );
- vg_line( corners[5], corners[6], 0xffffffff );
- vg_line( corners[6], corners[7], 0xffffffff );
- vg_line( corners[7], corners[4], 0xffffffff );
- vg_line( corners[0], corners[4], 0xffffffff );
- vg_line( corners[1], corners[5], 0xffffffff );
- vg_line( corners[2], corners[6], 0xffffffff );
- vg_line( corners[3], corners[7], 0xffffffff );
-
- v3f clipped[4];
- for( int i=0; i<4; i++ )
- {
- v3f v0, c, delta, p0;
- v3_sub( corners[4+i],corners[0+i], v0 );
- v3_normalize(v0);
-
- v3_muls( surface, surface[3], c );
- v3_sub( c, corners[0+i], delta );
-
- float t = v3_dot(delta, surface) / v3_dot(surface, v0);
- v3_muladds( corners[0+i], v0, t, clipped[i] );
- }
-
- vg_line( clipped[0], clipped[1], 0xff0000ff );
- vg_line( clipped[1], clipped[2], 0xff0000ff );
- vg_line( clipped[2], clipped[3], 0xff0000ff );
- vg_line( clipped[3], clipped[0], 0xff0000ff );
-
- m4x3_mulv( gate->other->to_world, (v3f){-2.0f,-2.0f,0.0f}, a );
- m4x3_mulv( gate->other->to_world, (v3f){ 2.0f,-2.0f,0.0f}, b );
- m4x3_mulv( gate->other->to_world, (v3f){ 2.0f, 2.0f,0.0f}, c );
- m4x3_mulv( gate->other->to_world, (v3f){-2.0f, 2.0f,0.0f}, d );
-
- vg_line( clipped[0], a, 0xff0000ff );
- vg_line( clipped[1], b, 0xff0000ff );
- vg_line( clipped[2], c, 0xff0000ff );
- vg_line( clipped[3], d, 0xff0000ff );
- }
-#endif