规则解读(三)| 本地资源检测 For Unreal

规则解读(三)| 本地资源检测 For Unreal

在UWA推出的适用Unreal项目的本地资源检测版本中,项目团队可以将其作为规范和完善项目资源品控流程的重要一环,添加到Unreal项目的研发持续集成、持续交付流程中,实现本地资源检测的“资源场景全覆盖,一键式自动扫描”。

《规则解读(一)| 本地资源检测 For Unreal》《规则解读(二)| 本地资源检测 For Unreal》中,我们为大家介绍了Unreal版本地资源检测的部分规则。本文中,我们将针对“全局设置检测”模块中的部分规则进行讲解。

Part1、移动端设置开启了HDR

HDR(高动态范围成像)在生活中常见于手机或数码相机的拍摄。在面对一些明暗对比较大,或者背景亮度较高的环境时,环境内的最高亮度和最低亮度相差会很大。

相比较环境内最高/最低亮度的范围,常规手机、相机能处理的最高/最低亮度范围,就相当于长尺子上的一个小滑块,很难同时触及尺子的两端。这就导致常规拍摄的图片,要么像蒙了层滤镜看起来灰蒙蒙模糊偏黑,要么除了一团亮白啥也看不清。(比较常见的就是拍摄落日,或者大太阳底下在景区拍照)

在开启HDR模式后,简单来说,数码设备能处理的最高/最低亮度范围会进一步扩大,这样在亮度对比较大的条件下,拍摄的图像也能很清晰,整个画面的光亮变化看起来也会更加自然顺滑,整体画面效果也更接近真实视觉。

对比到Unreal在移动平台的光照使用中,出于对项目画面展示效果和运行设备的性能表现之间的平衡,也存在LDR(低动态范围)和HDR(高动态范围)的使用。

简单来讲,LDR一般是项目向设备性能妥协,舍弃了项目光照功能在更高层次的使用,并禁用了后期处理,将项目的展示效果局限在较为狭小的亮度、色彩范围内,画面整体的对比感、层次感不强。


Unreal官方文档中,关于LDR和HDR的展示对比

而HDR在使用上常是追求更好的画面效果,其可以使用更多更高层次的光照功能,能够进行更丰富的后期处理,拥有更宽的最高/最低亮度范围,可以包含更多、更丰富的图像细节,层次感鲜明,色彩更为亮丽,也能有效避免“大太阳”下突然一黑或者亮得一团白的情况,在整体画面展示效果上,会更接近真实世界。但代价是项目运行时对设备造成更大的计算与运行压力。

所以在面向设备性能较低的目标群体时,团队在项目的光照使用上,需要对HDR的使用与否进行深入考量,平衡移动平台上项目展示效果与目标设备的性能表现。

Part2、设置未开启“丢弃未使用材质质量级别”

在Unreal中,材质可以根据特定的设置去切换不同的Shader,以满足项目在实际运行时的具体需求。比如竞速类游戏中,比赛时赛车的细节可以粗糙一些,而在改装赛车时,车身细节就需要展示得更精细。

又或者因为手机设备的性能限制,同一个场景,有的玩家可以设置高品质全特效顶配运行,有的玩家需要降成低品质来确保游戏的流畅。

所以在开发过程中,团队会为相关材质资源,设计和使用多个Shader,以应对不同的场景和品质需求。

在某些特定的使用环境或者需求下,可能不需要涉及这类的“画面质量”的切换,比如在Unreal工程内,直接指定全局的材质质量级别,此时除了当前正在使用的以外,为材质准备的其余各个质量级别的Shader,在具体运行中就不会有“出场”的机会。

此处如果将这些Shader加载到内存中,就属于内存占用上的浪费。所以Unreal提供了“丢弃未使用材质质量级别”的设置选项,即在加载游戏内容时,丢弃那些未使用的质量级别的Shader资源,从而有效节省内存。

Part3、移动端设置没有启用反射捕获压缩

Unreal在渲染模块中提供了一些反射系统来模拟现实世界中的反射现象。“反射捕获”是其中常用的一种实现方式。即Unreal会预先采集指定位置的物体反射信息,生成一张静态贴图,在实时渲染时,使用该贴图对所包围区域的物体进行光照计算,从而对反射效果进行补充。

由于“捕获”信息后,生成的是贴图文件,所以贴图大小就会对项目内存的占用产生一定的影响。当不勾选“移动反射捕获压缩”时,Unreal就根据上方反射捕获分辨率的数值设置,生成对应分辨率的贴图,在项目运行时将其加载到内存中。

勾选后,Unreal会将贴图文件以ETC2的格式先进行压缩,再进行后续的处理,从而节省内存空间,降低项目加载压力。

Part4、设置中反射捕获分辨率超过了阈值

如上一条规则中所提到的,“反射捕获分辨率”的设置,会决定反射捕获中生成的贴图的分辨率,在影响贴图大小的同时,也和反射效果息息相关。

以反射捕获实现视觉效果为例,当分辨率的数值设置越小,会使得物体表面的反射效果越接近“意会”,在某些不需要高精度展示反射效果的使用场合下(比如人物只是路过),那么地面上一团简单的黑色方形马赛克就已足够体现视觉上“人走影动”的效果。

而当分辨率数值设置越高,对应的物体表面反射效果的表现也会越精细,甚至可以达到现实中的镜面效果,比如镜中花水中月,但对应的反射捕获的贴图文件的尺寸也会上升。

所以团队要结合项目在设备上运行时的实际展示效果,设定合理的反射捕获分辨率,在保留反射效果的同时,尽可能降低贴图的大小。

将本条规则设置指定阈值(默认阈值:256)后,当项目工程内“反射捕获分辨率”的数值设定大于本条规则设定的阈值时,团队就能通过本地资源检测报告及时发现问题。

以上,便是对“全局设置检测”模块中规则的讲解,希望能对大家在Unreal项目的本地资源检测使用带来帮助。下期,我们将介绍剩余的部分规则,敬请期待。