100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【Unity后期渲染】Post Processing 后处理插件最全使用说明

【Unity后期渲染】Post Processing 后处理插件最全使用说明

时间:2020-01-09 15:25:16

相关推荐

【Unity后期渲染】Post Processing 后处理插件最全使用说明

Post-Processing使用手册

近段时间接触使用了Unity的后处理插件Post-Processing。

该插件十分强大,能增强画面真实感,产生发光效果,进行调色等。使用也很简单,调节一下参数即可。

本文主要参考来源为官方文档 (若有翻译不到位处,欢迎指出),部分参考来自他人文章,链接一并放出。

Post-Processing 官方文档:/Packages/com.unity.postprocessing@3.1/manual/index.html

Tonemapping 讲解 (简书):/p/2ba6bb4e72da

1 插件介绍

后处理 (Post-Processing) 是全屏图像处理效果的通用术语,它发生在摄像机绘制场景之后,但场景在屏幕上呈现之前。后期处理可以大大改善您的产品的视觉效果,只需很少的设置时间。您可以使用后期处理效果来模拟物理相机和胶片的属性。

适用Unity版本:.1及以上

Post-Processing是Unity的后处理插件,最早在3月与Github上发布1.0版本,到2.0版本进入Unity的 Asset Store。

Post-Processing的出现让Unity拉近了与Unreal Engine之间的画面差距,目前它已成为Unity渲染环节的重要组成部分,在URP管线中也是直接内置集成了该插件。

2 初始设置

第一步,导入插件。点击Window > Package Manager,输入Post Processing,安装导入。我这里使用的是3.1.1版本,目前最新版是3.2.0版本。

第二步,设置渲染层。在场景Camera上Add Component > Rendering > Post-process Layer,只有添加该组件后的相机才会进行后处理效果。

因为可能我们场景会有许多相机,不同相机我们可能希望使用不同的后处理效果,所以我们需要设置相机所在的层。可以新建一个Layer,名字随意,我这里新建一个Post Procesing层。将相机设为此层,并将组件里的Layer也设为此层。

第三步,添加效果器。此时可以设置后处理效果了,可以直接继续在Camera下Add Component > Rendering > Post-process Volume

勾选Is Global,此时效果会全局生效 (即无论相机在何处都会有效果)。然后点击Profile右侧的New可以新建一个预设,之后就可以点Add effect添加各种效果了。

PS:如果我们想只在场景的特定区域应用效果,就不在相机上添加Post-process Volume组件。在场景中创建一个空物体,设置该物体Layer与相机Layer相同,在该物体上添加Post-process Volume组件,Is Global不勾选。再添加Box Collider组件,调整Collider大小。此时相机进入Collider范围内就会有效果,出范围外效果就消失。

3 效果添加

根据需要的效果在Post-process Volume中添加对应的模块,并调节参数。有的模块参数比较多,边调边看效果就好,不清楚再看表格的参数说明。共11种效果,1、2为环境光效果,3、4为图像后处理,5-11为相机镜头效果。这里我以我自己搭建的简易场景进行测试。

3.1 环境光遮蔽 (Ambient Occlusion)

– 该效果会使光线无法照射到的区域变暗,如折痕、洞、物体与物体间的空隙部分。

包含两种模式,其中Scalable Ambient Obscurance (SAO)效果好但性能开销大,Multi-scale Volumetric Occlusion (MVO)速度快 (适用于移动端)。

启用该效果后,看到墙角等物体交接处产生了黑影,真实感加强。

3.2 环境光反射 (Screen Space Reflections)

– 该效果会创建微妙的反射效果,用以模拟潮湿地板表面或水坑。

添加该效果时,出现黄色警告。根据提示,更改Camera组件的Rendering PathDeferred即可。更改后,发现画面出现锯齿,可以看到Post-process Layer组件中Anti-aliasingMode为No Anti-aliasing,改为其他任意一个即可。

启用该效果后,看到反射率大于0的物体会出现周围物体的反射像,真实感加强。

3.3 自动曝光 (Auto Exposure)

– 该效果会动态调整图像的曝光以匹配其中间色调,用以模拟人眼实时调整亮度的变化。

一般夜晚环境可能感觉场景偏暗,又不可能打太多太亮的灯,可以考虑使用这个效果给画面整体提亮。

3.4 颜色滤镜 (Color Grading)

– 该效果可以改变图像的颜色亮度。

添加该效果时,出现黄色警告。根据提示,需要设置色彩空间。点击Edit > Project Settings > Player,找到Other Settings中Rendering的Color Space,将其改为Linear即可。

这个东西跟PR里面的lumetri挺像的,就是个调色盘,参数非常多,能调出各种不同的效果。

3.5 发光 (Bloom)

– 该效果会使图像中明亮的区域延伸出光条纹,用以模拟真实世界中相机镜头被光线淹没的效果。

这里我们让墙上的海报发光,制作电子屏幕的效果。首先,设置它们的shader设置为一个不受光照影响的shader,我这里设为Unlit/Texture。

发光效果只能加一点点,不能加多喽,让光有一点点晕开的感觉就好。参数拉太高会产生光污染,影响游戏体验,非常难受。

3.6 色差 (Chromatic Aberration)

– 该效果会分离图像的红绿蓝通道,用以模拟现实世界中相机在光线折射产生的不同波长光分离的效果。

3.7 景深 (Depth of Field)

– 该效果会模糊图像的背景,用以模拟真实世界相机镜头的焦距特性,产生对焦效果。

3.8 镜头噪点 (Grain)

– 该效果会将胶片噪声叠加到图像上,用以模拟相机胶片上的小颗粒产生的粗糙效果,营造电影效果。

3.9 镜头失真 (Lens Distortion)

– 该效果会使图像产生畸变 (枕形/桶形),用以模拟真实世界相机镜头的形状引起的失真。

3.10 镜头晕影 (Vignette)

– 该效果会使图像边缘变暗,用以模拟真实世界中过厚或堆叠过多滤光片、副镜头或不合适镜头笼罩引起的效果。使用此效果能使人的注意力聚焦到图像中心。

包含两种模式,其中Classic模式是围绕中心的晕影,Msaked模式可以自定义晕影形状纹理。

3.11 运动模糊 (Motion Blur)

– 该效果会使物体在运动方向产生模糊,用以模拟现实中相机光圈打开情况下移动或捕捉移动速度快于相机曝光时间的物体时产生的模糊效果。

4 脚本控制

有时我们需要镜头效果根据时间产生变化,比如:人从昏迷醒来时视力的慢慢恢复,战斗时受伤死亡的屏幕闪动变化,高光时刻或危险警告等屏幕特效。那么这时就要使用代码控制插件中的参数来实现。

直接附上官方文档中的代码,可以简单了解下脚本的实时控制。

using UnityEngine;using UnityEngine.Rendering.PostProcessing;public class VignettePulse : MonoBehaviour{PostProcessVolume m_Volume;Vignette m_Vignette;void Start(){// Create an instance of a vignettem_Vignette = ScriptableObject.CreateInstance<Vignette>();m_Vignette.enabled.Override(true);m_Vignette.intensity.Override(1f);// Use the QuickVolume method to create a volume with a priority of 100, and assign the vignette to this volumem_Volume = PostProcessManager.instance.QuickVolume(gameObject.layer, 100f, m_Vignette);}void Update(){// Change vignette intensity using a sinus curvem_Vignette.intensity.value = Mathf.Sin(Time.realtimeSinceStartup);}void OnDestroy(){RuntimeUtilities.DestroyVolume(m_Volume, true, true);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。