level 11
St_雲也
楼主
作者:CCP Snorlax 译者:CCP Albo
我们会在本次更新中为EVE加入全新的CarbonUI架构,你可能不会觉得它比之前有了很大变化,因为这一次我们主要修正了基础的代码,而不是用户界面本身。去年里,我们对用户界面(UI)进行了核心化改造(corification),使得今年的修改成为了可能。这是一个很大的项目,目的是为将来EVE UI的发展铺平道路,你可以在下文中获知更多信息。我们热切期望获得玩家的反馈,大家可以通过官方论坛等渠道将意见告知我们。
为什么要用CarbonUI呢?
以现在的眼光来看,EVE的UI以及游戏中负责渲染的基础代码都已经显得有那么点过时了。过去的UI渲染使用的是Direct3D——基本上是D3D7中的固定函数渲染,而D3D9虽然也支持这一方法,但是会遇到瓶颈,使得你被限制在固定函数所能提供的功能上面——比如说,没有炫丽的着色什么的。
我们一直以来都想对EVE的UI进行一次彻头彻尾的大修,原因如下:
1.使它更容易使用
2.使它的外观更好看
3.使它的性能表现更好
而UI架构本身卡住了我们,因为它已经服役很多年了,显得十分笨重繁琐,我们在试图改进它的性能表现时遇到了很多无解的问题。我们一直在向UI里加入新的功能,但是却没有足够重视架构本身。
我们考虑过几种方案来改进UI架构,但最终我们发现整个EVE的UI代码实在过于庞大,想要以新的模式重新制作所有的UI是不现实的。无论最终我们用什么方法改进UI架构,我们都要使它尽可能少地涉及到UI代码的重制。
因此,拥有全新的渲染层的CarbonUI是对现有UI架构的一次**性进化。我们努力去尽可能少地改变高级接口,这样使用Python的UI程序员就不会感觉到有很大的改变——更重要的是,那些20几万行的UI相关代码也还可以正常工作。尽管如此,我们还是修改了许多代码,有些是为了与新的渲染层相兼容,有些则是因为其本身就需要修改。结果,在某种程度上来讲,也没剩多少UI文件没被修改过了。
一些关键特性:
1.UI场景可以在不同环境中渲染:
UI物件的贴图可以被渲染成3D效果,UI同时也支持其以3D方式呈现并可以在3D场景中与玩家进行互动。


还可以将UI渲染为以原始的2D方式在3D场景中呈现,并加入了层次感和透视效果。


将普通的2D效果渲染为2D覆盖图
1.所有的Python代码和UI物件在这些不同的环境中都是一样的——场景可以从一个环境中实时移到另一个环境中。
2.基于旧的UI架构的性能提升
贴图会被自动收集在一个贴图库中,这样在渲染时就会更有效率,也不用增加UI美工的工作负担了。
裁剪在像素着色器中完成。
变换在顶点着色器中完成。
像素着色器的像素深度太不够透明了,通过一个D3D混合模式可以处理透明混合及饱和相加混合。
最终的结果就是我们极大地减少了其状态变化——通常情况下,整个UI在10个绘图指令之内就可以完成,而不是之前的数百个。
3.定位功能现在完全地同渲染分离开了。
定位系统已用Python编写完毕,变得更容易维护了。
优化渲染不会再破坏定位了。