Check if *ANY PART* of a UI reticle overlaps a gameobject?

I know I can raycast from the camera to tell if the very center of a reticle is overlapping a world gameobject, but that doesn’t tell me about whether the rest of the reticle shape overlaps anything.

I also know I can world->screen the vertices from the gameobject’s bounds, and then check that rectangle for overlap, but that gives false positives in the ‘gaps’ between parts of the gameobject that stick out (as the bounds encompass the entire shape, empty space and all).

Is there a way to check whether any part of a large UI reticle image is overlapping any part of a specified gameobject, without false positives?

Yes, it is possible. But it is not easy.
Here are the steps you need to do:

  • Get 4 rays for the corners or the rectTransform (you can use myCamera.ScreenPointToRay and myRectTransform.GetWorldCorners() and then RectTransformUtility.WorldToScreenPoint()).
  • Generate a mesh via code which is basically a pyramid, starting at the camera location and ending at a meaningful distance (like the camera’s far plane distance) of the 4 rays.
  • Create a Game Object (if not done already), add a Mesh collider to it and assign your generated mesh and set convex and isTrigger to true.
  • Check in OnTriggerEnter or OnTriggerStay methods if it is your pyramid. (As far as I know you cannot manually test mesh colliders against other colliders).

Note: If your world camera is orthographic you can use a box collider instead which maybe would be a bit easier and faster in performance.