Curvature of surface it is not necessarily. Enough just a straight line between spawn point and highest visible point relative to spawn point
As example:
I have implemented iterative approach, incrementing Z axis and using line trace. But efficiency is questionable(when number of projectiles per second too high)
