下面以第二种为例详细说明, 第一种看完自然就明白怎么做了
好了, 既然是个可见性问题, 那么就有阻挡视线的地方和可以看到区域, 我们抽象一下, 把地图像寻路那样表示成二维格子
绿点代表有视野的单位, 红色区域代表视野阻挡..., 那么白色区域就是可见的, 灰色就是不可见的
求解这个可以与不可见区域的问题, 其实就是一个FOV(Field of Vision, Field of View)问题, 算法上来说, 五花八门, 参见...[1]
有了这个可见性的区域信息, 怎么绘制到场景里呢? ...针对于L=MAX的, 计算其可见的格子, 如果可见, 则格子的计数C加1
每个格子的可见计数C>0的表示可见, 否则就是不可见, 然后更新到纹理上
对于0<L<MAX的单位U全部不用计算, 所以不动的单位就不用更新...YY一下, 3D的体积迷雾是不是可以用Volumn纹理实现:)
参考资料
[1]http://roguebasin.roguelikedevelopment.org/index.php?