terrain lighting
要求一个动态的,能自投影的方向光(太阳光)的光照。
1.ShadowMap做自投影
精度不够,边界毛刺严重。
2.LightMap做自投影
由于太阳的方向变化缓慢,因此30-60分钟算一次LightMap就可以了,最关键的是地图动态load的时候也要计算光照贴图,所以计算LightMap要控制在500ms以内。
a.slope light,光照效果不好,方向有限制。
http://www.gamedev.net/reference/articles/article1436.asp
尤其是在取样点密集时,三角形和三角形之间色块比较明显。
b.Fast Computation of Terrain Shadow Maps
http://www.gamedev.net/reference/articles/article1817.asp
效果也不是太好,比slope light强点,速度128*128还可以,1024*1024也是够慢的。
c.AABBQuadTree + 对Chunk的每个三角形做RayTriangleOverlapTest + 纪录光照方向上的最大的仰角优化。
无链接,自己写的。
效果好,速度慢,debug版1024*1024要20s,release版应该快很多,不过一直没测。
d.HorizonMap
http://www.delphi3d.net/articles/viewarticle.php?article=bumpmapping.htm
预先计算每个取样点的仰角。
效果好,速度也可以,debug版500ms左右,不用考虑周围的地图块(在预计算时已经考虑),对于动态load的很有好处(别的算法都要在load一个地图块时重新计算和它相邻的地图块,否则有裂缝,而且有时会不正确)。但是占硬盘,256*256,16sample,1M,压缩大概能压缩10倍,预计算耗时,一个地图块大概2小时,有优化的余地,现在用的是简单的二分查找。
e.Emboss Bump Mapping
想法不错,效果不好,应该算最简单的一种。
所有准确的时间,截图,由于时间长了,都没有了,真郁闷。