Unity中的后期处理:PostProcessing

“想要实现这个效果,让我们来编写一个Shader。。”

“Shader???”

相信绝大多数开发者都有看过那些炫酷的效果而跃跃欲试却又对Shader代码望而却步的经历,新版本的unity新增的PostProcessing组件,让许多人看到了希望,虽然效果数量有限,却对于开发来说有很大的收益。

安装PostProcessing

PostProcessing是unity内置的后期效果增强组件,可以在极短的时间内得到各种常用特效的效果,对于编写Shader的苦手(比如在下)来说,确实是个天大的福音了。第一次接触PostProcessing与实际开发中,效果确实惊艳到了,之后PostProcessing就成了游戏开发的必备组件==。PostProcessing可以在资源包管理器中直接安装得到。

新工程请在All中找到PostProcessing并点击右上角的install即可,我的已经安装完毕,所以界面有些不同,如果版本不一致没有资源包的话可以访问PostProcessing的Github页面: PostProcessing 按照说明将PostProcessing拖入工程文件夹就可以用了。附上官方效果对比:

这么看效果还是很明显的。虽然效果是在大型项目展示的,但是PostProcessing完全可以用在小型项目中构建各种各样出色的效果。

使用PostProcessing

  • PostProcessing Layer

首先我们需要在相机中添加一个Post-process Layer组件来渲染相机图像。

Trigger触发器默认是相机本身,如果有需要可以设置为其他物体,如挂载到角色上面,可以实现进入特定区域触发特效,这个后面再说。Layer是一个很重要也很容易忽略的角色,必须保证postprocessing volume所处层级与此项相同,一般来说建议设置专用层以提高渲染性能。其次的抗锯齿 延迟雾效等等看项目情况调整即可。

  • PostProcessing volume

Volume分为全局和局部两种实现方式,全局只需选中Is Global选项。局部需要挂载Collider3D组(记得选中Is Trigger)件并取消Is Global选项,当PostProcessing Layer中的触发器(Trigger)进入Collider中就能看到效果了,可以实现洞穴等场景的变换特效。(切记把挂载PostProcessing Volume组件的物体Layer设置为PostProcessing Layer中的对应Layer)

Blend Distance用来实现特效的渐弱,使特效自然渐进的出场或退场。Weight影响权重,0完全不起作用,1效果全开。效果会在多个volume混合时根据这几个属性数值进行叠加。

profile就是特效的配置文件了,点击new即可创建新的特效配置,之后点击Add effect->Unity即可看到PostProcessing提供的11中特效。直接点击就可以再面板中看到相应的特效,展开即可进行编辑。

All生效所有属性,None禁用所有属性,也可以只用其中的某些属性,选中相应的属性栏就可以了。

下面简单说一说这些特效,如果用到某个特效再细细分析。

Post-process特效

  • Ambient Occlusion 环境光遮罩:用来使像是世界中难以照射到光线的角落,交叉点等地方变暗。
  • Anti aliasing:抗锯齿:抗锯齿功能提供的算法可以是锯齿感明显的边缘更加平滑,虽然锯齿感减少,却会使物体变得模糊。
  • Auto Exposure 自动曝光:模拟人眼适应各种黑暗与光亮的效果,比如从黑暗的隧道出来时,人眼会有短暂时间的炫目。
  • Bloom 辉光:最常用的Post-process特效之一,效果和他的名字一样,提供图像从明亮边缘扩散的效果,Dirtiness可以模拟污渍和灰尘来衍生Bloom特效,在FPS游戏中常见这类效果。

属性 功能
Intensity 辉光的强度
Threshold 过滤掉小于此光照强度的像素点,注: 该值以伽马空间表示
Soft Knee 在低于/高于阈值的渐变(0 =硬阈值,1 =软阈值)之间进行转换
Clamp 限制辉光像素的数量,该值以伽马空间表示
Diffusion 以与屏幕分辨率无关的方式改变遮蔽效果的程度
Anamorphic Ratio 通过垂直(在范围[-1,0]中)或水平(在范围[0,1]中)缩放辉光来模拟变形镜头的效果
Color 辉光的色调
Fast Mode 通过降低效果质量来提升表现
Texture 模拟污垢为镜片添加污迹或灰尘
Intensity 镜头污渍的数量
  • Chromatic Aberration 色差:在边界产生一些颜色条纹,模拟相机镜头为颜色没有汇聚的缺陷行为来增加艺术性的效果,可以用来模拟中毒特效。

  • Color Grading 颜色分级:另一个经常用到的特效,用于校正镜头中的颜色与亮度,来实现电影或海报效果,可以理解为手机中的何种滤镜。需要一定的专业基础才能玩转,但是通过调整Tonemapping(色调映射)的mod可以快速实现一些效果。

  • Deferred Fog 延时雾效:雾是根据与相机的距离将颜色叠加到对象上的效果。 这用于模拟室外环境中的雾或雾,并且通常还用于在摄像机的远剪裁平面向前移动以提高性能时隐藏对象的剪裁。

  • Depth of Field 景深:常用特效之一,模拟相机镜头的对焦效果而产生模糊感。模糊不仅给出了关于物体距离的视觉提示,而且还引入了散景,这是令人愉悦的视觉伪像。

属性 功能
Focus Distance 对焦距离
Aperture 孔径比(称为f-stop或f-number)。值越小,景深越浅
Focal Length 镜头和胶片之间的距离。 值越大,景深越浅
Max Blur Size 散景滤镜的卷积核大小,决定散景的最大半径
  • Grain 颗粒效果:模拟老电影屏幕上的颗粒感,用于模拟老式显像设备。
  • Lens Distortion 镜头失真:此效果通过扭曲或不失真最终渲染图片来模拟镜头的形状。
  • Motion Blur 运动模糊:“运动模糊”是一种常见的后处理效果,可以模拟当相机拍摄的对象移动得比相机的曝光时间快时图像的模糊。运动模糊用于在大多数类型的游戏中产生微妙的效果,但在一些类型中被夸大,例如赛车游戏。

  • Screen space Reflections 屏幕空间反射:屏幕空间反射是一种重用屏幕空间数据来计算反射的技术。 它通常用于产生更微妙的反射,例如在潮湿的地板表面或水坑中。

  • Vignette 晕影:在摄影中,晕影是用于与中心相比朝向图像边缘变暗和/或去饱和的术语。经常用于艺术效果,例如将焦点绘制到图像的中心。

以上只是对PostProcessing的一些简介,PostProcessing是个复杂的组件,要想搞清全部特效需要大量的实践与相关的专业知识,对于初学者或想要快速构建游戏效果的人来说,认识PostProcessing特效和添加特效只是最基本的一步。因为调整PostProcessing是个细致且漫长的过程,请务必在游戏开发接近尾声时再斟酌效果,调整参数。

原文地址:https://www.cnblogs.com/acgstone/p/10020408.html

时间: 2024-11-01 11:49:40

Unity中的后期处理:PostProcessing的相关文章

在Unity中使用事件/委托机制(event/delegate)进行GameObject之

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一对多的观察者模式机制有什么缺点? 如果你对如何在Unity中使用事件/委托机制还不太了解,建议您查看我的前一篇文章:[Unity3D技巧]在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在前一篇博客里面,我们写到

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

关于Unity中的NGUI和UGUI

用Unity开发2D游戏,有三套关系 1.GUI:Unity本身的对象 2.NGUI:以前在Unity中广泛来做2D的,是第三方的包,需要安装 3.UGUI:Unity5.X后,Unity找到NGUI的作者,开发了UGUI,变成内置于Unity中的包,官方主推 所有的元素都在Unity的UI工具栏 3D做2D游戏的方法: 1: 使用正交摄像机;2: 使用透视摄像机,将2D元素移动到合适的距离. 例如设计分辨率为 960x640, 得到在3D世界里面一个图片的大小w*h米,将这个图片移动到一定的距

Unity中使用协程进行服务端数据验证手段

近期在做项目中的个人中心的一些事情,用户头像上传,下载,本地缓存,二级缓存,压缩,这些都要做,麻雀虽小五脏俱全啊,也是写的浑浑噩噩的, 当我们在上传用户头像的时候,向服务端发送上传头像请求之前,一般都会做一次验证,向服务端获取token验证信息,来确保非法上传,如果不做这个那么会有非法用户上传非法图像,使你的服务器 带来未知的灾难. 而验证的逻辑很好写,并没有什么难度,比如: Server.SendMessage("获取token"); Client.Receive(string to

C#中的yield return与Unity中的Coroutine(协程)(下)

Unity中的Coroutine(协程) 估计熟悉Unity的人看过或者用过StartCoroutine() 假设我们在场景中有一个UGUI组件, Image: 将以下代码绑定到Image 1 using UnityEngine; 2 using System.Collections; 3 using System.Threading; 4 using UnityEngine.UI; 5 6 public class CoroutineDemo : MonoBehaviour { 7 8 //

【Unity技巧】Unity中的优化技术

写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得的~Digital Tutors是一个非常棒的教程网站,包含了多媒体领域很多方面的资料,非常酷!除此之外,还参考了Unity Cookie中的一个教程.还有很多其他参考在下面的链接中. 这篇文章旨在简要地说明一下常见的各种优化策略.不过对每个基础有非常深入地讲解,需要的童鞋可以自行去相关资料. 还有一些我认为非常好的参考文章: Performance Optimization for Mobile Devices

在Unity中定义统一的对象搜索接口

我们经常要在Unity中以各种方式搜索对象.比如按名字搜索.按tag.layer或者是查找名字为xxx开头的对象. 本文是介绍以一种统一的接口来搜索对象. 1.定义统一的搜索接口 /// <summary> /// 游戏对象搜索接口 /// </summary> public interface IGameObjectFinder { /// <summary> /// 搜索 /// </summary> /// <param name="r

Unity中实现播放视频

突然想着在一个cube物体上播放视频会是怎样的情景.今天终于有时间来尝试下了.结果=>成功 下面来说说详细的步骤吧 准备阶段: 1.unity pro 专业版 =>  需正版(当然破解版也ok,你懂的). 2.安装QuickTime Player.必须要安装,否则导入movie资源时,unity会自动报错提醒的. 3.安装格式化工厂软件=>movie格式转换.其他工具也ok.我这里默认转换为MOV格式.100M的avi转换后大概7M. ====================== uni

unity中mesh属性的uv坐标讨论

http://blog.sina.com.cn/s/blog_427cf00b0102vp0j.html 之前在做连连看游戏中,也用到贴图坐标,当时我们讲到,不管是平铺(Tiling)还是偏移(Offset),我们参考的基准都是原始的那张图,Tiling配合Offset,Tiling负责截取,Offset负责移动,最终实现截取贴图的任一部分?,但是这种方法弄出的图形形状都是方块的,无法实现任意的贴图 而下面要讨论的方法和上面的方法会大不一样,会从UV坐标的角度去讨论,从而实现想怎么贴就怎么贴的效