开发近况 - 暴风鹰和伯勒罗丰+太空视角(2008.3.17)

感谢版主yangjianyi2002的精心翻译,汉化组wmysilly最终润色。

对多目标渲染应用抗锯齿

花了几个月时间才发现(当然了,不是整整几个月,只是这里那里地挤出几个小时时间),我在对多目标渲染应用抗锯齿时遇到了严重的问题。

在OpenGL中,这问题就变成了如何将“EXT物体帧缓冲”,“ARB生成缓冲”,“EXT加速帧缓冲 ”和“EXT多重采样帧缓冲扩展”这几个部件组合在一起工作。

写了下面意见的天才显然不会那么勤劳去做这些工作。
根据他写的意见:

12)我们是否应该增加对多重读取缓冲的支持,这样,多重颜色缓冲效果就能通过对“加速帧缓冲”的单次调用来复制。

回复:不,我们考虑过这个,但它的表现很难确定,并且作用有限。

让我生气的是,在2008年,竟然说多目标渲染的抗锯齿是“作用有限”。

长话短说,我在对渲染物体一个一个地人工加速之后找到了一个替代方案。这并不是最优的方案(“感谢”Vista系统,多次绑定FBO真是慢到极点),但至少起作用。。。不幸的是我还没有机会在ATI显卡上测试,所以到时候还有很多问题等着我去解决。

球面谐函数

我研究了一点球面谐函数,想改进投影效果。我想达到的一个效果是,当一艘飞船在蓝色的行星轨道上环绕时,能有来自行星表面的微弱蓝光泛在船身上。立方贴图是个好办法,但细节率太高,应用时必须对贴图进行模糊处理。更好的办法是,在球面谐函数中编制一些出现频率很低的永久光源。

在我做这个的时候,我还增加了飞船相互之间微小的反光,也增强了球面谐函数。光的强度大致取决于由在另一艘船上看这艘船的相对大小。这就意味着当两艘船相互靠近时,它们之间会有一点点反光。

所有的计算都由CPU完成,而留给GPU做的工作是像素着色器中的9种球面谐函数;这相对耗费较少。

Oren-Nayar光照模型

我改变了飞船的光照模型,用Oren-Nayar代替了Lambert。现在,整个方程需要逐像素赋值运算,但我想找一种材质来替代。老实说,飞船在新模型和Lambert中的不同不是那么明显,所以我只在高级设置中使用。但是,小行星(表面更加粗糙)在用新模型后明显好多了。

太阳轴/上帝射线(Sun shafts / god rays)

我将在下次更新中说明,但我增加了太阳轴(上帝射线)效果。这是种屏幕空间效果,但它看起来是有体积的,而且它也符合现实阴影效果。虽然需要在屏幕空间中多次采样,高达64个,但看起来真不错。每个像素在屏幕缓冲区采样64次其实现在还没有实现,即便在8800GTX显卡上都没有实现,当然,64次采样是为了取得最高质量的画面。在慢点的显卡上,虽然有了采样形式,然而可能只采样32或16次。

实现起来很简单:将光源(太阳)放入屏幕空间,在聚集和淡出采样时表现辐射的模糊效果。我用各种优化方法稍稍改进了最初的想法,将光源限定在屏幕边界,用朝向光源的视角淡出,等等。

我以后将贴些图片,这确实是个漂亮的效果,实现也快(只用了2小时),它大大提高了真实感和渲染质量,特别是行星上的日落效果。:slight_smile:

高动态范围(HDR)

我花了很多时间在GLSL中重新植入HDRI,优化调节所有参数;避免镜头光晕效果太强等等。。。我最后使用了Reinhard色谱映射器。Reinhard映射器的基础版只是洗褪颜色(永远达不到纯白色);但改进版好多了,你可以在HDR空间定义白色的强度。

调节HDR仍然是很痛苦的事情。尤其在空间场景中。比如星空中有一艘小船,观察点非常远,所以这艘船只是屏幕上的几百个像素。所有色谱映射器使用屏幕的平均屏幕光强度,而在空间场景中,屏幕平均亮度极低,因为90%的像素都是黑色。结果自然就是飞船过度曝光。幸运的是,Reinhrad映射器在防止过亮方面表现优秀,使你马上忘记了所有线性映射器。

数据库

说几句。我用Mysql做了一些关于一秒钟内能做多少次查询和做多少次操作的性能测试,尽管和查询的复杂程度、mysql服务器/终端之间的带宽、表格的大小等等有关,我相信在一台不错的机子上,是不能够超越每秒10000次查询的。听起来很多,但我想,通过建立一个高性能的内存驻留数据库,还可以做得好很多。代码已经完成,但我要做一些性能测试,以便和“真的”Mysql服务器性能作比较。我希望性能提高10倍,不过我不会用SQL作为查询语言,而是通过特定的受限界面查询。最后的计划是将需要可靠数据(例如帐号数据)的mysql和能接受不可靠数据的高性能的简化数据库组合起来。(译者注:mysql是一种数据库大家都知道)

新的屏幕截图

最后,来一套新截图。采用了抗锯齿技术。:slight_smile:

展示:暴风鹰(Stormawk),模型CJ,材质Juan;伯勒罗丰(Bellerophon),模型Spectre,其中临时材质由我制作。

http://www.infinity-universe.com/InfinityForums/viewtopic.php?t=7377

这个抗混迭在高配制机器上效果还可以,但是比不上我做的好。
从22,44到16*16,还有继承式抗混迭,嘿嘿

楼上可以去指导一下IA,直接在这里回帖即可:http://www.infinity-universe.com/InfinityForums/viewtopic.php?t=7377

武器挂点上还空空啊。。。。。。

8800GTX显卡上都没有实现
…反正到时候买台式机玩了。。笔记本才8400GT:7_491:
效果真的 不错,希望优化好。。。太高端了会流失玩家。。。在这方面我是不太明白的。。。:7_486: