Fascinating stuff, unfortunately I suspect DDA is a pathologically poor fit for this algorithm
Max view distance is 60
Mostly open environments.
Partial obscuration.
Don't care much about monster vision.
Maps are tiled, so we'd need to shift and partially regenerate the cache frequently.
Frequent visibility changes (smoke and other obscurants)
Special reasons*
The side issue of complexity of doing bresenham to all tiles reminded me I had generated this while looking into it previously:
https://gist.github.com/kevingranade/5153746 and related
https://gist.github.com/kevingranade/5678549The number is the number of visits to each cell when drawing a line to each point on the border. Obviously this was unacceptable, as it had terrible artifacts in addition to being not all that fast. It's a pretty pattern though ^_^
In the end I went with a recursive shadowcasting algorithm. You've reminded me I've been meaning to bit-pack the working data for that, the overhead of the additional addressing operations is nearly guaranteed to be trivial compared to being able to fit more of your working set in cache.
Don't forget, your working set for a very fast algorithm should fit in your processor's data cache, not just ram.
For general data, don't worry about it too much, but if you're iterating over something a LOT, saving bits matters.
*Post coming soon about an interesting FoV hack I pulled off in DDA