性能优化(19)——Postprocess后处理优化

  1. 1. Unity URP下支持的后处理效果分类
  2. 2. Unity URP下支持的后处理效果列表
    1. 2.1. - Tonemapping:是将HDR值重新映射到新的颜色范围内的过程,最常用的就是ACES Tonemapping,即使在移动设备上还是有机会用到 - Vignette:渐晕效果,说白了就是四边暗角的效果。它有一定的计算开销。在游戏中由于UI的存在,使用的话会很奇怪。一般用于无UI过场动画或截图的时候 - White Balance:白平衡主要是用来消除不真实的偏色,以白色作为参考色,在最终图像中创建偏冷或偏暖的感觉。在游戏中应用的机会不多 - Lens Flare:镜头光晕特效,是为了一些特殊画面增强设计的,如太空、林间阳光、镜头光晕效果等。开销与其组件Occlusion设置和光晕数量有关,建议只在有需求时开启

 

Unity URP下支持的后处理效果分类

  • 色彩校正与增强:我们做游戏依旧是在原始美术贴图、材质光照上做调整,不能完全依靠后期色彩校正来处理。换句话说不是不能用,而是不能胡乱堆砌
  • 画面增强类:这类后处理效果一般需要额外的Render Pass处理,涉及RP的切换与与采样开销都比较高,因此整体性能开销也比较大,所以尽量不要叠加使用。如果非要使用,建议不要采用Global Volume方式一直开启,而是采用Local Volume方式在不同逻辑下进行开启,比如色散分离只在受伤类情况下开启,景深只在过场动画开启等
  • 镜头效果:这类效果一般是Shader计算量比较大,也有一些纹理采样的开销,总体开销介于前两类之间,使用这类镜头特效应与第二类特效一样,建议通过Local Volume设置或通过逻辑开启

Unity URP下支持的后处理效果列表

  • Bloom:这是一个全屏泛光的效果,还可以通过指定污垢贴图形成泛光与镜头污垢结合的效果,但更常用的是泛光效果,这也是在移动平台中最常用的后处理效果,但在一些低端移动设备上的开销还是较重的
  • Channel Mixer:是通道混合器,可以通过修改每个颜色通道的输出,调整整体效果。除一些特殊表现外,我们更习惯通过HUE去调整,所以平时使用到它的几率也很小
  • Chromatic Aberration:能在图像敏感分界边界产生RGB散射的彩色条纹,用来模拟相机的镜头无法将颜色聚合到一起的颜色失真效果,一般也可以用来表现机器人视觉或屏幕破碎导致的屏幕失真效果。除特殊需求外也很少用到。由于它会对原屏幕贴图进行重复的三次采样去乘以位移uv,所以有一定的纹理采样开销
  • Color Adjustment:用来调整最终画面整体的色调、曝光度、HUE、亮度和对比度,用来增强画面的颜色效果,还是算比较常用的。它的处理根据ColorGradingMode模式的不同分为HDR与LDR模式
  • Color Curves:主要是在特定的范围内调整色调、饱和度、亮度和对比度,可以实现特定的色调替换和某些亮度降低的效果。可以作为Color Adjustment的进一步调整,但我们一般通过Color Adjustment调整基本已经满足绝大多数需求,因此此效果使用也很少
  • Depth Of Field:景深。由于其在移动设备上开销还是很大,因此在游戏过程中很少直接开启,一般作为实时渲染过场动画时,可以通过节省逻辑开销来换取景深的开销,以此来提升过场动画的表现。它分为高斯与散景两种景深模式,一般散景模式下,既可以使用近场景深也可以使用远场景深,性能开销会比较大;高斯模式一般是用作表现远场景深,效果相对较差,但开销也相对较小。如果是移动设备,建议使用高斯模式的景深
  • Film Graim:用来模拟胶片的随机光学纹理造成的胶片颗粒感效果,一般在特殊表现下使用,性能也会随着颗粒感强度与噪点响应曲线的降低而增加。另外,它需要采样多张预制的Lookup纹理,因此它也存在一些纹理采样开销

  • Lens Disortion:镜头失真效果,通过扭曲最终渲染图片来模拟真实的镜头效果,开销较小但应用场景不多
  • Lift,Gamma,Gain:是通过三个在轨迹球上的点的位置,在给定的颜色范围内,将图像色调移向该颜色,也是属于图像颜色校正的一类,应用并不多
  • Motion Blur:是模拟真实摄像机在拍摄移动问题,或者摄像机本身快速移动导致图像画面模糊的效果。目前URP还没有完全结合MotionVector,因此只能实现摄像机本身的移动模糊。Motion Blur的优化可以依据其本身的质量分级、设置模糊强度、摄像机旋转产生的速度具有最大长度这几个参数来优化。但在移动端仍建议不要一直开启,在一些过场动画和局部逻辑中使用尚可。建议将质量设置为Low的同时,将Intensity与Clamp值在不影响效果的情况下设置得越小越好
  • Panini Projection:帕尼尼投影,可以帮助你在很大视野的场景中渲染透视图、阴影、中调、高光,这个效果是用来重新定义阴影、中间调和高光的色调范围,而Split Toning会根据亮度值对图形的不同区域进行着色,以获得具有特色的表现。这几个效果使用率都较低,也没有什么可优化空间,只做简单介绍


- Tonemapping:是将HDR值重新映射到新的颜色范围内的过程,最常用的就是ACES Tonemapping,即使在移动设备上还是有机会用到
- Vignette:渐晕效果,说白了就是四边暗角的效果。它有一定的计算开销。在游戏中由于UI的存在,使用的话会很奇怪。一般用于无UI过场动画或截图的时候
- White Balance:白平衡主要是用来消除不真实的偏色,以白色作为参考色,在最终图像中创建偏冷或偏暖的感觉。在游戏中应用的机会不多
- Lens Flare:镜头光晕特效,是为了一些特殊画面增强设计的,如太空、林间阳光、镜头光晕效果等。开销与其组件Occlusion设置和光晕数量有关,建议只在有需求时开启

  • 值得注意的是,尽量将不需要的效果直接删除,而不是通过复选框禁用。因为有些效果即使你禁用了,它的一些渲染资源依旧会被预先绑定,会导致内存的浪费

  • Color Adjustments优化选项来自URPAssets中对Post-processing字段的设置
  • Crading Mode中的High Dynamic Range(HDR)模式更适合电影制作工作流中的高精度分级,如果我们是游戏,也可以采用Low Dynamic Range(LDR)模式
  • 另外,LookUpTexture的纹理大小(LUT size)可以调整,HDR模式下默认是32,在平衡效率与质量时,我们还可以在LDR模式下使用16位模式
  • 还有sRGB与线性空间转换(Fast sRGB/Linear conversions),使用速度较快但精度较低的近似函数选项。在优化时我们评估低端设备上画面损失与性能提升的性价比,可以参考勾选此选项。但要说明一点的是,如果支持浮点精度纹理的平台或设备,Color Grading的HDR模式效率会更高