Unity Post Process Unity后处理学习日志

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);
    }

}
相关推荐
zaizai100723 分钟前
编辑器拓展(入门与实践)
unity
计算机学姐41 分钟前
基于python+django+vue的在线学习资源推送系统
开发语言·vue.js·python·学习·django·pip·web3.py
月夕花晨3741 小时前
C++学习笔记(26)
c++·笔记·学习
向往风的男子1 小时前
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十一)
学习·容器·kubernetes
蜡笔小新星2 小时前
切换淘宝最新镜像源npm
vue.js·经验分享·学习·npm·node.js
zhangrelay3 小时前
Arduino IDE离线配置第三方库文件-ESP32开发板
笔记·学习·持续学习
躺下睡觉~3 小时前
Unity-Transform-坐标转换
linux·unity·游戏引擎
limengshi1383923 小时前
通信工程学习:什么是AN-SMF接入网系统管理功能
服务器·网络·网络协议·学习·信息与通信
ps酷教程3 小时前
Zookeeper学习
分布式·学习·zookeeper