开源绘图引擎Ogre 2.3.0更新阴影实例、稳定支持跨平台3D绘图API Vulkan

不少开源项目喜欢在圣诞节发布新版本,知名开源绘图引擎Ogre也不例外,在平安夜发布了经过一年多开发的新版本Ogre 2.3.0,这个版本有许多更新,包括改进设备丢失(Device Lost)的处理、更新阴影实例,并且稳定支持跨平台3D绘图API Vulkan。

Ogre 2.3.0现在能更好地处理设备丢失的问题,官方提到,大多数游戏不在乎设备丢失的问题,因为游戏在执行时,可以拥有整个计算机资源。但设备丢失被认为是严重故障,但也非常罕见,通常是由硬件或是软件造成的故障,或是在游戏过程中,进行Windows更新时才会发生,但在这些情况,游戏体验本身就已经遭到中断。

但是对于非游戏的应用程序就不是如此,设备丢失可能由多种原因造成,最常见的是驱动程序升级,或是计算机在省电和性能模式中切换,当驱动程序升级,则设备丢失就成为必然的情况,而从省电模式切换到性能模式,在移动设备或是笔记本更是常发生的情况。官方提到,要从设备丢失状态中恢复非常困难,这取决于应用程序的复杂性,以及设备丢失时,应用程序正在进行的工作。Ogre开发团队在这个新版本中,下了许多功夫改善这个问题,使得应用程序能够在设备丢失时,优雅的恢复。

这个新版本也使用了更先进的阴影技术,官方虽然之前就曾收到一些阴影特效的抱怨,但是一直到有用户进行了更详尽的研究,官方才意识到Ogre一直未采用较新的Normal Offset Bias阴影技术。虽然说Normal Offset Bias是比较新的技术,但也是早在2011年就发明,其能够极大程度改善自我屏蔽和阴影失真(Shadow Acne)的问题,投射阴影的步骤也比原来的Inverted-culling方法强健得多。

现在Normal Offset Bias已经取代Inverted-culling方法,旧的函数HlmsManager::setShadowMappingUseBackFaces已经被删除,取而代之的是ShadowTextureDefinition::normalOffsetBias和ShadowTextureDefinition::constantBiasScale,供开发者进行更细致的控制。

在Ogre 2.3.0中,Vulkan已经进入稳定阶段,但有已知问题要注意的是,在和Qt集成的时候存在一些问题,目前尚未被深入研究。另外,官方在Plugins.cfg加入PluginOptional关键字,来维持Ogre的使用体验,过去Ogre会在许多情况下容易崩溃,像是用户计算机没有安装DirectX执行时,即便有OpenGL作为后端,Ogre可能会崩溃。在可能不支持DirectX 9.0c的Win 9x和Win XP时代尤其如此,虽然从很久以前开始,这已经不再是个问题了。

但是这个问题随着Vulkan重新浮出台面,因为拥有老旧驱动程序的笔记本,其GPU仍完全能够执行Vulkan,但是缺少系统DLL或是GPU不能执行Vulkan,都会造成Ogre崩溃,为了解决这个问题,Ogre在Plugins.cfg文件中添加关键字Plugin Optional,这使得Ogre会尝试加载OpenGL、D3D11、Metal或Vulkan,当这些扩展组件都加载失败,便会被忽略,使得Ogre能够在旧有的硬件和软件中良好地运行。