在即将推出的虚幻引擎(UE4)4.19版本中,用于设置UE4虚拟现实(VR)项目的渲染分辨率的cvar已做改动。这一改动可以使UE4支持的所有VR平台上的VR项目的分辨率调整变得更简便。但遗憾的是,它也会破坏与所有之前的UE4 VR项目的向后兼容性。以下是在升级到4.19之后对VR项目的影响,以及你该如何修复此更改可能导致的任何性能衰退问题。
确定4.18及更早版本中的HMD分辨率
在先前版本的UE4中,我们使用画面比例cvar(r.ScreenPercentage)来确定引擎在指定HMD屏幕上渲染你的VR项目时所用的分辨率。虽然这是控制VR项目分辨率的有效方法,但一定程度上也需要猜测所需的数字,因为每种HMD都需要不同的画面比例数值。这是因为r.ScreenPercentage cvar是根据显示面板分辨率,而非HMD的理想分辨率来确定控制渲染分辨的百分比。关于我们为何会选择这种方法的更多信息,请参阅VR和AR技术总监Nick Whiting的演示文稿。
由于每个受支持的HMD的屏幕分辨率和失真函数都略有不同,因此r.ScreenPercentage设置需要因设备而变。这意味着,某个值可能适用于一个HMD,但这个值用在其他HMD上效果可能并不理想。
在4.19及后续版本中设置HMD分辨率
为简化操作,我们在4.19中添加了一个新的cvar,称作vr.PixelDensity,可以通过规范化值进行控制,其中1是目前使用的HMD的理想分辨率。值越小执行速度越快,但会造成采样过疏(更模糊),而大于1的值会使执行速度下降,但会呈现超级采样效果(极其清晰)。进一步而言,你应该始终使用vr.PixelDensity调整VR项目的HMD合成器分辨率,且始终将r.ScreenPercentage设置为100。下表举例说明了之前以理想分辨率在各种HMD上运行的r.ScreenPercentage值,及其转换为新的vr.PixelDensity cvar的示例。
需要注意的是,所有HMD都将其vr.PixelDensity值设置为值1,意思是告知每个HMD以其理想分辨率运行。使用vr.PixelDensity的另一个额外的好处是,你也可以使用更合理的值轻松地提高或降低VR项目分辨率。
绘制的像素数 = 2 x HMD 理想宽度 x HMD 理想高度 x (vr.PixelDensity)²
例如,如果你想要将渲染VR项目的像素数量减少约20%,就可以设置成vr.PixelDensity=1-0.2
。如果你想要将渲染VR项目的像素数量增加约20%,则可以输入vr.PixelDensity=1+0.2
。
从r.ScreenPercentage迁移到vr.PixelDensity
如果你开发了用于调整r.ScreenPercentage cvar的代码,请确保它改用vr.PixelDensity,并且将r.ScreenPercentage cvar恢复为其默认值100,以免升级到4.19或后续版本时发生任何可能的性能问题。如果不将对r.ScreenPercentage cvar的所有引用替换为引用vr.PixelDensity cvar,就会导致项目性能明显下降,因为最后渲染的像素数可能会超过需要(谁也不想发生这种事情!)
When making this change, keep in mind that defaulted vr.PixelDensity=1
specifies a resolution that is larger than 4.18's r.ScreenPercentage=100
, so make sure to do extensive performance testing. Below you will find a few examples of the various ways to make this change in your UE4 projects.在进行这种更改时,请记住默认的vr.PixelDensity=1
指定的分辨率大于4.18的r.ScreenPercentage=100
,所以请确认进行了充分的性能测试。以下是在UE4项目中进行这一更改的各种方法示例。
蓝图设置:
INI设置:
对此更改有疑问?请前往论坛与我们沟通。