/* =============== R_SetFrustum -- johnfitz -- rewritten =============== */ void R_SetFrustum (float fovx, float fovy) { int i; TurnVector(frustum[0].normal, vpn, vright, fovx/2 - 90); //left plane TurnVector(frustum[1].normal, vpn, vright, 90 - fovx/2); //right plane TurnVector(frustum[2].normal, vpn, vup, 90 - fovy/2); //bottom plane TurnVector(frustum[3].normal, vpn, vup, fovy/2 - 90); //top plane for (i=0 ; i<4 ; i++) { frustum[i].type = PLANE_ANYZ; frustum[i].dist = DotProduct (r_origin, frustum[i].normal); //FIXME: shouldn't this always be zero? frustum[i].signbits = SignbitsForPlane (&frustum[i]); } }
void R_SetFrustum (float fovx, float fovy) { int i; if (r_stereo.value) fovx += 10; //silly hack so that polygons don't drop out becuase of stereo skew TurnVector(frustum[0].normal, vpn, vright, fovx/2 - 90); //left plane TurnVector(frustum[1].normal, vpn, vright, 90 - fovx/2); //right plane TurnVector(frustum[2].normal, vpn, vup, 90 - fovy/2); //bottom plane TurnVector(frustum[3].normal, vpn, vup, fovy/2 - 90); //top plane for (i=0 ; i<4 ; i++) { frustum[i].type = PLANE_ANYZ; frustum[i].dist = Math_DotProduct(r_origin, frustum[i].normal); //FIXME: shouldn't this always be zero? frustum[i].signbits = SignbitsForPlane (&frustum[i]); } }