- float inner = max(left_fov.RightTan, right_fov.LeftTan);
- float outer = max(left_fov.LeftTan, right_fov.RightTan);
- frustum_skew = (inner-outer)/(inner+outer);
-
- left_fov.UpTan = right_fov.UpTan = vertical;
- left_fov.DownTan = right_fov.DownTan = vertical;
- left_fov.RightTan = right_fov.LeftTan = inner;
- left_fov.LeftTan = right_fov.RightTan = outer;
+ left_fov.UpTan = left_fov.DownTan = tan(fov/2.0f);
+ left_fov.LeftTan = left_fov.UpTan*render_aspect*(1-frustum_skew);
+ left_fov.RightTan = left_fov.UpTan*render_aspect*(1+frustum_skew);
+ right_fov = left_fov;
+ swap(right_fov.LeftTan, right_fov.RightTan);