之前一直好奇类似霓虹灯光晕的效果是怎样实现的,今天看了一篇教程才知道是通过后处理实现的。但是教程使用的 Unity 和我用的版本不一样,所以实现步骤上有一些不同,所以在这里记录一下。
一、创建项目
在Unity Hub创建项目时要选择项目模板类型,有以下几个选项(Unity2018),有些模板是不包含后处理(Post-process)的,需要自己安装。
2D:就是平面的游戏,我很少能用到;
3D:使用内置渲染管线,不包含后处理模块;
3D With Extras:使用内置渲染管线,包含一个默认场景,包含后处理模块;
High Definition Render Pipeline:高清渲染管线,适合PC、VR和主机等具有高性能的平台,包含后处理模块;
Lightweight Render Pipeline:轻量级渲染管线,适合手机等性能较弱的移动平台,不包含后处理模块。
因为要进行后处理,我直接创建了一个 3D With Extras 项目。
二、添加后处理(Post-process)的步骤
创建 Post-process Volume
直接Create -> 3D Object -> Post-process Volume,如果使用了 3D 模板,则需要先安装后处理模块。将 Layer 设置为 Post-process
- 创建 Profile
- 添加后处理效果
点击 Add effect...,选择 Unity -> Bloom。
- 调整 Bloom 参数
这里如果不选 Is Global 可以为局部场景添加后处理效果。
- 为相机创建Post层
点击 Add Component -> Rending -> Post-process Layer。
Bloom效果
三、其他后处理效果
环境光遮挡 (Ambient Occlusion)
使挨着折痕线、小孔、相交线和平行表面的地方变暗。在现实世界中,这些区域往往会阻挡或遮挡周围的光线,因此它们会显得更暗。景深 (Depth of Field)
渐晕 (Vignette)
画面的四周变暗,可用于表现艺术效果,例如将焦点集中到图像的中心,或营造特殊氛围。运动模糊 (MotionBlur)
颗粒 (Grain)
色差 (Chromatic Aberration)
可以模仿真实摄像机在镜头无法将所有颜色融合到同一点时产生的效果,沿着图像明暗分隔边界出现“条纹”(类似于抖音的效果)。
注意:
还有 自动曝光 (Auto Exposure)、屏幕空间反射 (ScreenSpaceReflection)、颜色分级 (Color Grading) 这几个效果我没有写,因为他们的参数比较复杂,我还没有完全搞懂,等后面用到了再来补充。
有两个效果 延迟雾效 (Deferred Fog) 和 抗锯齿 (Anti-aliasing) 在官方文档里写了,但是我的 Unity 里没有; 镜头畸变 (Lens Distortion) 在我的 Unity 里面有,但是官方文档里没有写。
所有效果的 Intensity 都是 0 到 1 之间的。
后处理效果并不只是对呈现在屏幕上的图像做后期处理,也可能依赖于深度纹理和法线纹理,例如《Unity Shader 入门精要》一书中第 13 章的运动模糊、雾化效果等等。