I think the changes to the non world units case have made this harder to follow. The original goal in writing the loop logic was to make it as close as possible to the shader projection logic and simple so it was easy to verify correctness. I think it would be best to avoid modifying the screenspace case as much as possible here.