说到战争迷雾(Fog of War, FOW), 其实还是非常普遍的一项技术, 在RPG, RTS等游戏中得到了广泛的应用
但是关于这方面的资料非常少, 经常会有人问怎么做, 所以就有了写这篇文章的想法...按我们的经验来讲, 一般一米一个格子的精度是完全够用的, 256x256的大小可以适用于大多数的游戏
如果嫌锯齿太难看, 做个模糊就行了. 3D游戏中更是可以在shader中针对视野内和视野外使用不同的着色方式...所以, 优化思路就是针对移动的单位重新计算, 针对不动的单位只算一次
首先, 我们可以用坐标(X,Y)和视野半径(R)三个值确定出一个唯一值K代表一个提供视野的单位U
对于每帧新加入(K当前不存在)的U...其余的就对U的L进行递减
移除L的U....针对于L=MAX的, 计算其可见的格子, 如果可见, 则格子的计数C加1
每个格子的可见计数C>0的表示可见, 否则就是不可见, 然后更新到纹理上
对于0的单位U全部不用计算, 所以不动的单位就不用更新