I've been searching for information on implementing line-of-sight in my game. I've found some great resources for 2D implementations that produce pixel-perfect results, but there's very little info on 3D implementations.
So far, I've found these methods that could be used to achieve line-of-sight:
Shadow maps
Shadow volumes
3D grids / octrees
However, each of these seems to have limitations. Shadow maps are quite expensive to calculate, especially for omni-directional line-of-sight (just like omni-directional shadows). Shadow volumes have special requirements for geometry and are rather difficult to produce. 3D grids and octrees are not pixel-perfect and require an additional renderer on top of the grid implementation.
Have I missed something here? Which method would be the most suitable for a top-down 3D game?