implement keyhole frustum