[Unity插件] 屏幕特效插件分析

FxPro: Bloom&DOF, Mobile-Ready


FxPro是一款历史比较悠久的特效插件,从大部分开发者的反馈来看为当前功能较全、性能较好Unity屏幕特效插件之一。FxPro支持多种常见的屏幕特效,例如Bloom、景深(Depth-of-Field)、色差效果(Chromatic Aberration)、镜头形变等。

FxPro的使用是通过Component->Image Effects->FxPro为需要的摄像机添加FxPro组件。


FxPro集众多特效于一身,具有非常多的可调参数。我们这里选取一些重要的设置选项和某些特效的参数进行简单说明:

1. Quality

FxPro允许我们为不同的目标平台设置不同等级的画面质量,支持High、Normal、Fast、Fastest四种等级。

2. Half Resolution

当我们选择了Fast或Fastest等级时,就会出现该选项。如果在移动设备上仍然有性能问题,可以选择开启该选项来降低计算特效使用的分辨率,进一步提高效率。

3. Bloom

Visualize:调试模式,勾选该选项可以让我们看到场景中的哪些部分会被Bloom。


Bloom Tint:Bloom时使用的颜色。

Bloom Threshold:设置计算Bloom时的阈值,当屏幕像素的亮度超过该值时就会把该像素加入到Bloom的计算中。因此该值越小,屏幕看起来就越“梦幻”。

Bloom Intensity:Bloom的强度。注意,不同设备上的真实强度会有所不同,我们可能需要根据当前设备在脚本里手动设置该值的大小。

Bloom Softness:调整Bloom效果的渐变程度。该值越高,模糊程度越大。

4. Depth-of-Field

Visualize:调试模式,勾选该选项可以让我们看到会聚焦到场景的有哪些部分。


Blur COC:在物体的边界处增强效果。

Auto-Focus:让摄像机自动对焦到屏幕中央的物体。需要注意的是,我们需要为可以对焦的物体添加碰撞体(Collider),否则自动对焦功能无法实现。当勾选了自动对焦后,还可以设置对焦时的Layer和对焦速度。

Target:当没有开启自动对焦时,可以把需要对焦的物体拖拽到该选项上。

Focal Length Multiplier:设置焦距长度的系数。

Depth Compression:压缩深度缓冲。

DOF Strength:调整景深模糊的半径大小。该值越高,非对焦区域的模糊程度越大。

Double Intensity:让景深效果更加明显。该选项在开启时对性能会有影响。

真机测试

手机:三星 Galaxy S4, iPhone 6

测试场景:如下图,Quality选择最低等级Fastest,并勾选Half Resolution降低分辨率。我们测试了单独开启Bloom和景深效果时的真机性能。


下图是三星 Galaxy S4上只开启Bloom特效时的Profiler截图:



下图是iPhone 6上只开启Bloom特效前后的GPU Report:

使用前


使用后


下图是三星 Galaxy S4上只开启景深效果时的Profiler截图:



下图是iPhone 6上只开启景深效果前后的GPU Report:

使用前


使用后


可以看出,分辨率对性能的影响非常重要。开启了Half Resolution的两种特效在真机上表现都还不错,可以考虑在中高端设备上选择开启部分特效。

Beautify


Beautify是一个轻量级的屏幕特效插件,它的主要功能是加强细节表现(原理是在深度纹理上进行边缘检测后进行锐化操作),此外还提供了对饱和度、对比度和亮度的调节功能。

该插件的使用方法非常简单,直接在Camera上添加Beautify组件即可:


Beautify提供的参数有:

1. Quality

共两种选项,Mobile和Desktop,区别是Desktop会采样每个像素周围4个额外的像素点(上下左右),而Mobile只会采样额外两个(上下)。因此Mobile在性能上要比Desktop更高。

2. Preset

Preset中提供了4个提前调好效果的参数设置集合:Soft、Medium、Strong和Exaggerated。我们可以在此基础上自定义(Custom)参数或关闭效果(Disable)。

3. Sharpen

画面细节的锐化程度。Beautify提供了4个参数来进一步调整锐化效果:

Min/Max Depth:定义了效果作用的深度范围,任何不在该深度范围内的像素都不会受到锐化效果的影响。这个范围允许我们实现一些类似于景深的效果,即只在特定物体周围加强细节。

Depth Threshold:当某个像素周围的深度差超过这个值时,锐化效果会减弱。

Luminance Relax:类似上面的Depth Threshold,当某个像素周围的保护度差超过这个值时,锐化效果会减弱,从而保护那些具有较高饱和度的像素不会被过分锐化。

Clamp:定义像素颜色的调整范围。

4. Dither

控制Dither程度,Dither可以用于移除由于渐变产生的一些明显的渐变带问题。

Min Depth:只会移除深度值超过该值的像素产生的渐变带。比如当我们只想移除天空盒子上的渐变带问题时,可以把该值设置0.99。

5. Saturate 调整画面饱和度。

6. Contrast 调整画面对比度。

7. Brightness 调整画面亮度。

真机测试

手机:三星 Galaxy S4,iPhone 6

测试场景:和之前相同的测试场景,Quality选择最低等级Mobile。

三星 Galaxy S4使用插件后的Profiler截图:



iPhone 6使用插件前后的GPU Report(Xcode) 

使用前


使用后


根据如上真机测试,目前我们建议只考虑在高端iOS机上选择使用该插件,而不在Android机上使用。

你可能感兴趣的:([Unity插件] 屏幕特效插件分析)