Unity Post Process Unity后处理学习日志
在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。
文档
https://docs.unity3d.com/Packages/com.unity.postprocessing@3.0/manual/Quick-start.html
https://blog.csdn.net/yigiwoliao/article/details/122322223
官方手册–后处理概述
https://docs.unity.cn/cn/2017.4/Manual/PostProcessing-AmbientOcclusion.html
编写后期处理效果
https://docs.unity.cn/cn/2017.4/Manual/PostProcessingWritingEffects.html
后处理效果兼容性
https://docs.unity.cn/Manual/PostProcessing-AutoExposure.html
后处理的 PostProcessVolume 文档,包括API,各种后处理效果介绍
https://docs.unity.cn/Packages/com.unity.postprocessing@2.1/api/UnityEngine.Rendering.PostProcessing.PostProcessVolume.html?q=PostProcessVolume
安装
Unity 2018.1 及更高版本。
从Unity PackageManager 下载
从GitHub下载
https://github.com/Unity-Technologies/PostProcessing/tree/v2/PostProcessing
下载之后将·PostProcessing· 文件夹放到项目中即可。
项目场景设置
在摄像机上添加Post-Process Layer组件
添加一个层级,并将其设置为摄像机的层
添加Post-process Volume组件
IS Global 勾选就是全局可用。如果不想全局可用就删除这个组件。
创建Profile 文件
点击new 创建一个渲染配置文件
设置渲染文件
场景设置
让角色在无后处理的位置的时候,看向有后处理的位置,显示的是:无后处理的效果
在有后处理的位置看向无后处理的位置,显示的是有后处理的效果。
效果展示
Auto Exposure 自动曝光
省流:让场景看起来更亮或者更暗
“自动曝光度”效果可动态调整图像的曝光度以匹配其中间调。
在URP 中不可用!
Property | Function |
---|---|
Filtering | 设置直方图的下限和上限百分比,以找到稳定的平均明亮度。超出此范围的值将被丢弃,并且不会对平均亮度产生影响。 |
Minimum | 设置在 EV 中自动曝光要考虑的最小平均亮度。 |
Maximum | 设置在 EV 中考虑自动曝光的最大平均明亮度。 |
Exposure Compensation | 设置中间灰色值以补偿场景的全局曝光。 |
Filtering 超过这个值或者低于这个值的颜色都不会被处理
Adaptation settings:
Property | Function |
---|---|
Type | 选择 Adaptation type (适应类型)。“渐进式”(Progressive) 将对“自动曝光”(Auto Exposure) 进行动画处理。Fixed 不会 |
Speed Up | 设置 适应速度 从黑暗到明亮环境。 |
Speed Down | 设置 适应 速度 从浅色环境到深色环 |
Depof Of Field 景深
省流:可以用作回忆的效果,视角因为进沙子逐渐模糊的效果
用于模拟摄像机镜头的聚焦属性。
Depth of Field 的速度与 相关联。仅使用高于您针对台式计算机进行开发时的值,并且根据游戏的后期处理预算,使用主机。在针对移动平台进行开发时使用最低值。Max Blur SizeMedium
Property | Function |
---|---|
焦距 | 设置到焦点的距离。 |
孔径 | 设置光圈的比率(称为 f-stop 或 f 值)。值越小,景深越浅。 |
焦距 | 设置镜头和胶片之间的距离。值越大,景深越浅。 |
最大模糊大小 从下拉列表中选择散景滤镜的卷积内核大小。此设置确定散景的最大半径。它还会影响性能(内核越大,需要的 GPU 时间就越长)。 |
Lens Distortion 镜头畸变
省流:可以制作喝多了的效果。(假的鱼眼效果)
镜头畸变不支持 AR/VR。
镜头扭曲效果通过扭曲或取消扭曲最终渲染的图片来模拟真实世界摄像机镜头的形状。
参数 | 描述 |
---|---|
Intensity | 设置总扭曲量的值 |
X Multiplier | 在 X 轴上设置 Intensity multiplier。将其设置为 0 可禁用此轴上的扭曲 |
Y Multiplier在 Y 轴上设置 Intensity multiplier。将其设置为 0 可禁用此轴上的扭曲 | |
Center X | 设置 Distortion center point (X axis) (扭曲中心点 (X 轴)) |
Center Y | 设置 Distortion center point (Y axis) (扭曲中心点 (Y 轴)) |
Scale | 设置全局屏幕缩放的值。 |
Motion Blur 运动模糊
效果没有试出来
运动模糊不支持 AR/VR。
游戏对象的移动速度超过摄像机的曝光时间时,Motion Blur 效果会使图像模糊。
参数 | 功能 |
---|---|
快门角度 | 设置旋转快门的角度。值越大,曝光时间越长,模糊效果越强。 |
样本计数 | 设置采样点的数量值。这会影响质量和性能。 |
Chromatic Aberration 色差
省流:可以制作在速度非常快的时候,屏幕边缘的模糊
色差效果模拟真实摄像机在其镜头无法将所有颜色连接到同一点时产生的效果。Unity 支持红色/蓝色和绿色/紫色边缘,您可以使用输入纹理定义边缘颜色。
Property | Function |
---|---|
Spectral Lut | 选择用于自定义边缘颜色的纹理。如果留空,Unity 将使用默认纹理 |
Intensity | 设置色差效果的强度 |
Fast Mode | 使用更快的色差效果变体来提高性能 |
Color Grading 颜色分级
没整明白咋用的,玩出来个黑白
内容很多
https://docs.unity.cn/Packages/com.unity.postprocessing@2.1/manual/Color-Grading.html
Color Grading 效果可更改或校正 Unity 生成的最终图像的颜色和亮度。
颜色分级效果具有三种模式:
低清晰度范围 (LDR):非常适合低端平台。分级将应用于最终渲染的帧,该帧被限制在 [0,1] 范围内,并存储在标准 LUT 中。
高清范围 (HDR):非常适合支持 HDR 渲染的平台。所有颜色操作都应用于 HDR 并存储到 3D 对数编码的 LUT 中,以确保足够的范围覆盖范围和精度 (Alexa LogC El1000)。
外部:用于在外部软件中创作的自定义 3D LUT。
Bloom 泛光
靠近天堂或者靠近太阳的时候可以使用这个
泛光效果会创建从图像中明亮区域的边界延伸的光条纹,从而产生极亮的光线压倒摄像机的错觉。
降低参数的数值,离 0 越远,速度越慢 如果要针对移动或低端平台进行开发,请启用:Fast Mode
Lowering the Diffusion parameter will make the effect faster. The further away Anamorphic Ratio is from 0, the slower it will be. Enable Fast Mode if you are developing for mobile or low-end platforms to get a significant boost in performance.
参数 | 描述 |
---|---|
Intensity | 设置 Bloom 滤镜的强度。 |
Threshold | 设置亮度级别以过滤掉低于此级别的像素。该值以 gamma 空间表示。 |
Soft Knee | 设置低于阈值/高于阈值之间过渡的渐变阈值(0 = 硬阈值,1 = 软阈值)。 |
Clamp | 设置限制像素的值以控制 Bloom 量。该值以 gamma 空间表示。 |
Diffusion | 以与屏幕分辨率无关的方式设置遮罩效果的范围。 |
Anamorphic Ratio | 置比率以垂直(范围 [-1,0])或水平(范围 [0,1])缩放泛光。这模拟了变形镜头的效果。 |
Color | 选择 Bloom 滤镜的色调颜色。 |
Fast Mode | 启用此复选框可通过降低 Bloom 效果质量来提高性能。 |
Vigette 晕影
可以制作翻过的效果,从左侧到右侧逐渐显示,眨眼的效果。
晕影效果使图像的边缘变暗,使图像的中心更亮。
参数 | 描述 |
---|---|
Color | 设置 Vignette 的颜色。 |
Center | 设置晕影中心点(屏幕中心为 [0.5,0.5])。 |
Intensity | 设置屏幕上的渐晕量。 |
Smoothness | 设置晕影边框的平滑度。 |
Roundness | 设置该值以舍入 Vignette。较低的值将产生更方形的晕影。 |
Rounded | 启用此复选框可使晕影完全圆润。禁用后,晕影效果取决于当前的长宽比 |
使用Masked
Property | Function |
---|---|
Color | 设置 Vignette 的颜色。使用 Alpha 通道实现透明度。 |
Mask | 选择要用作晕影的黑白蒙版。 |
Intensity | 设置蒙版不透明度值。 |
Grain 颗粒 (增加噪点)
颗粒效果可模拟真实摄像机产生的效果,其中摄像机胶片中的小颗粒会使图像产生粗糙、未经处理的效果。Unity 中提供的 Grain 效果基于相干的渐变噪声。
禁用“彩色”将使“颗粒”效果运行得更快。
Disabling Colored will make the Grain effect run faster.
参数 | 描述 |
---|---|
Colored | 启用该复选框以使用彩色颗粒。 |
Intensity | 设置 Grain strength 的值。值越高,颗粒越明显。 |
Size | 设置 Grain particle size 的值。 |
Luminance Contribution | 设置该值以控制噪声响应曲线。此值基于场景明亮度。较低的值意味着暗区中的噪点较少。 |
Screen Space Reflections 屏幕空间反射
屏幕空间反射不支持 AR/VR。
不支持URP
屏幕空间反射效果可创建模拟潮湿地板表面或水坑的微妙反射。屏幕空间反射是限制镜面反射漏光量的理想效果。
参数 | 描述 |
---|---|
Preset | 从下拉列表中选择质量预设。用于微调质量。Custom |
Maximum Iteration Count (Custom preset only) | 设定光线行进过程中的最大步数。值越高,反射越多。 |
Thickness (Custom preset only) | 设置 Ray thickness(射线厚度)的值。值越低,资源消耗越大,但检测到的细节较小。 |
Resolution (Custom preset only) | 选择内部缓冲区的大小。选择 Downsample (缩减采样) 以最大限度地提高性能。Supersample 速度较 |
Maximum March Distance | 设置要在场景中遍历的最大距离,超过此距离后,它将停止绘制反射。 |
Distance Fade | 设置距离值,以淡化靠近近平面的反射。这对于隐藏常见伪像很有用。 |
Vignette | 选择该值可淡化靠近屏幕边缘的反射。 |
Ambient Occlusion 环境光遮蔽
省流:给两个物体之间的相交位置添加黑色的阴影
性能考虑建议使用:Multi-scale Volumetric Occlusion
Scalable Ambient Obscurance 模式可能非常耗费资源,尤其是在非常靠近摄像机查看时。
不应在移动平台或控制台上使用 Scalable Ambient Obsurance,因为 Multi-scale Volumetric Occlusion 模式速度更快,并为这些平台提供更好的图形。
环境光遮挡后处理效果作为全屏幕后处理效果,非常接近实时的环境光遮挡。挨着折痕线、小孔、相交线和平行表面的地方变暗。在现实生活中,这些区域往往会阻挡或遮挡周围的光线,因此它们会显得更暗。
请注意,在处理时间方面,环境遮挡效果非常昂贵,一般只能在桌面平台硬件或游戏主机硬件上使用。它的成本完全依赖于屏幕分辨率和效果参数,而不像真正的环境遮挡一样依赖于场景的复杂性。
Scalable Ambient Obscurance 可拓展的环境光遮蔽
参数介绍:
参数 | 描述 |
---|---|
Intensity | 调整“环境光遮挡”产生的暗度。 |
Radius | 设置采样点的半径,以控制变暗区域的范围。 |
Quality | 定义影响质量和性能的采样点数量。 |
Color | 设置环境光遮挡的色调。 |
Ambient Only | 启用此复选框可使“环境光遮挡”效果仅影响环境光。此选项仅适用于延迟渲染路径和HDR渲染。 |
打开
关闭
Multi-scale Volumetric Occlusion
模式针对主机和桌面平台进行了优化。在这些平台上,它具有更好的图形效果,并且比 Scalable Ambient Obscurance 运行得更快,但需要计算着色器支持。
着色器支持:https://docs.unity.cn/Manual/class-ComputeShader.html
|Intensity | 调整“环境光遮挡”产生的暗度。|
| Thickness Modifier |修改遮挡物的厚度。这会增加暗区,但会在对象周围引入暗晕。 |
|Color | 设置环境光遮挡的色调。|
| Ambient Only | 启用此复选框可使“环境光遮挡”效果仅影响环境光。此选项仅适用于延迟渲染路径和HDR渲染。|
获取对象
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
public class GrainController : MonoBehaviour
{
// 引用后处理体积
public PostProcessVolume volume;
// Grain效果的引用
private Grain grainLayer = null;
void Start()
{
// 获取Grain效果的引用
volume.profile.TryGetSettings(out grainLayer);
}
}