在今天的开发日志中,我将介绍下我们上个月的工作成果:一个为行星地形引擎而改进的算法! 为什么我们又进行了一次地形引擎的更新呢?我们获得了怎样的结果?继续阅读你就知道了,还有很多漂亮的新截图!
为什么又来一个行星引擎更新?
去年我们光明正大的对行星引擎进行了多次更新,每次更新都有很显著的进步,但是也有很多问题留待以后解决。现在我们决定是时候去解决这些问题了,原因是Kickstarter筹资就要在几个月内开始了,而我们想通过发布一个技术测试Demo来更好的宣传无限星辰。 这个可交互的技术Demo将主要展示行星引擎。我相信很多人已经迫不及待的想测试它了,因为大家已经等待了许多年。 因此呢,我们的这个Demo必须尽善尽美,以迎合大众的高期望值。
且慢,我刚刚好像说到“问题”来着,实际上,他们可以被分为两类:性能问题和质量问题。
性能
目前被我们所采用的这个新型地形算法不仅更加简单,代码更加优化(可让其更容易被配置,维护和除错),而且运行速度比以前快多了。它对CPU的依赖也更少,意味着我们现在可以达到显卡理论上可以处理的最大多边形输出速度(当然,仅限于填充率没有被其它因素限制的时候,如着色器数量)。这使该引擎更加不容易过时了,并且可以充分发挥当前最高端显卡的全部潜力。
上一次我对这个引擎进行了跑分,在我的Radeon HD6870显卡上达到了3.5-4亿三角形/秒的填充速度,这还是在不使用区块例证/复制的情况下实现的(由于地形的球面性,区块复制无法被使用)。
总的来说,这个最新的改进和老的引擎(在2010年demo视频里使用的那个)相比平均快了2.5倍。
质量
我们更改算法的另一个动机,但也不是最后一个,就是要修复闪烁的伪影。2010年的技术演示全是这些东西。这种问题发生在当地形区块被细分(即视角被拉近至地面时)会突然出现更多的几何体(地形多边形),纹理也会被别的纹理替代。我们现在使用几何变形,这就是说,我们在不同的细节层次之间改变几何体,我们也混合那些纹理,这样地形特征出现得更为流畅,而不是来势汹汹突然爆出。
除几何变形外,我们也增加了对纹理层(如草地,岩石等)法线贴图的支持,这有时候可以增加不少光照效果。
最后,我们添加了一些分形噪声来替代了纹理层级。这样很多转换看起来更自然一些。
美术内容只是预留占位。法线贴图是由灰度范围导出的,所以还不是很好。我们还计划在未来解决平铺模式,你看到的单一的纹理被重复了很多次。但这需要等待一些时候。
这篇文章里面的图片没有一张有阴影。这就是我要重新实现的另一件事,并且马上把他们加回来。更多详情请查询未来发展日志。
截屏
点击这些图片以查看高清格式。我想如果你们喜欢的话,可以用来制作很漂亮的屏幕背景。
文章翻译:Infinity汉化组:wm2001wm2001, hebe,润色校对:FreemanGL
原文链接:http://www.infinity-universe.com/Infinity/index.php?option=com_content&task=view&id=123&Itemid=26