Unity后处理(Post-processing)

Unity post-processing 就像是对图片采用滤镜一样(如下图对比)对当前场景显示做一定的显示处理,使得场景更漂亮、有趣或者有型。

视觉风格与视觉保真

游戏场景后处理能够达到所需的视觉风格(visual style)同时也保证视觉保真(visual fidelity)。下面是两种视觉风格:黑色的未来风格 vs 光亮的卡通风格

下面两图是后处理前后的视觉保真对比:

项目练习

打开项目

1.下载附件项目,在unity中打开项目,在CreativeCore_Postprocessing>Scenes 文件夹中打开 TutorialScene_PostProcessing 场景,然后点击屏幕正中间上方的 play (三角形图案)按键,然后操作 WASD 按键,在场景中漫游,熟悉该场景。

  1. 选择 Hirarchy 窗口中的MainCamera,在右侧的 Inspector中,点击 Rendering 属性,找到 Post Processing,点击边上的空格,然后自动展开了Post Processing的设置:

Global Volume

  1. 要进行后处理,需要在场景中添加 Volume 来定义场景中需要后处理的区域。Volume 分为全局(Global Volume)和部分(Local Volume)。先尝试使用 Global Volume,在Hirarchy 窗口中点击鼠标右键,在弹出的菜单中找到 Volume > Global Volume, 点击添加 Global Volume
  1. 在 Hirarchy 窗口中选择新建的 Global Volume,然后在右侧的 Inspector 窗口中找到 Profile 属性,点击右边的选择图标,在弹出的 Select Volume Profile 窗口选择不同的Profile,可以看到场景中的视觉风格变化

下图是选择了 PostProcessingProfile_Sample profile 的前后对比:

  • 在上方的角落里红色和浅蓝色的箱子散发了光芒;
  • 场景整体显得暗淡,影子也显著了

可以点击 Play 按键,再次在场景中漫游,查看场景中的视觉变化。

  1. 选择了Profile后,在下方显示了 Bloom, Chromatic Aberration, Color Adjustments, Tonemapping, Lift Gamma Gain 共5种后处理效果参数设置。可以自己修改各个参数设置,看看场景中的后处理效果。

具体的后处理效果可以参看unity文档(Effect List | Universal RP | 7.1.8

Bloom: 创建从图像中明亮区域边缘延伸的光条纹,产生光晕效果;

Chromatic Aberration: 色差会在图像的明暗部分之间产生色边。它模仿真实相机镜头无法将所有颜色汇聚到同一点时产生的色彩失真。

Color Adjustments: 使用此效果来调整最终渲染图像的整体色调、亮度和对比度。

Tonemapping: 色调映射是将图像的 HDR 值重新映射到新值范围的过程。其最常见的目的是使动态范围较低的图像看起来具有较高的范围,具有如下3个模式:

:如果不想应用色调映射,请使用此选项。

中性 :如果只希望对色调和饱和度的影响最小,请使用此选项。这通常是进行广泛颜色分级的良好起点。

ACES:使用此选项可应用参考 ACES 色调映射器的近似值,以获得更具电影感的外观。它比中性对比度更高,并且会影响实际色调和饱和度。如果您使用此色调映射器,Unity 将在 ACES 颜色空间中执行所有分级操作,以获得最佳精度和结果。

Lift Gamma Gain : 执行三向颜色分级,调整轨迹球下方的滑块以抵消该范围的颜色亮度。

财产 描述
Lift 使用它来控制暗色调。这会使阴影产生更夸张的效果。 • 使用轨迹球选择 URP 应将暗色调的色调转换为哪种颜色。 • 使用滑块来抵消轨迹球颜色的亮度。
Gamma 使用它来通过幂函数控制中间色调。 • 使用轨迹球选择 URP 应使用哪种颜色来改变中间色调的色调。 • 使用滑块来偏移轨迹球颜色的亮度。
Gain 使用此功能可增强信号并使高光更亮。 • 使用轨迹球选择 URP 用于改变高光色调的颜色。 • 使用滑块偏移轨迹球颜色的亮度。

定制后处理 profile

  1. 点击 Profile 属性右边的 New 按键,场景将会恢复原来的设置,新建的profile自动命名为Global Volume,点击编辑框中的名字可以自动在文件夹中高亮显示该文件。选择该文件,更改文件名 "PostProcessing - bright and colorful"

Bloom

  1. 选择更名后 PostProcessing - bright and colorful,在右侧 Inspector 窗口中点击 "Add Override" 按键,选择 Post-processing > Bloom
  1. 在Bloom参数中激活Threshold 和 Intensity,设置 Intensity值为1.0,可以看到场景中的红色和浅蓝色的盒子散发光晕,绿色盒子后面的光圈更亮了。

Tonemapping

  1. 再次点击 Add Override 按键,添加 Post-processing > Tonemapping,激活Mode,分别选择 3 个模式:None, Neutral, ACES, 看看哪个模式更好。

None:

Neutral:

ACES:

这是三个模式的对比:

Color Adjustments

  1. 再次点击 Add Override, 添加 Post-processing> Color Adjustments, 有如下5个参数:

如下是一些后处理效果的参数设置

  • 颜色亮丽型

tonemapping: Neutral

Color Adjustments:激活contrast 和 saturation,并增加这两个参数的值。

  • 反乌托邦的绿色

tonemapping: ACES

Color Adjustments:减小saturation值,color filter 设置为绿色

  • 月夜效果

相关参数设置如下:

Lift Gamma Gain

  1. 再次点击 Add Override, 添加 Post-processing> Lift Gamma Gain, 有如下3个参数

Lift :黑暗的色调

Gamma:中色调

Gain:明亮的两点

采用上述图中的设置,可以得到如下的后处理效果。可以尝试不同的值得到不同的效果。

Film Grain

  1. 再次点击 Add Override, 添加 Post-processing> File Grain, 将 3 个参数都激活,如下图,得到的效果图中增加了影视颗粒,使得场景看起来显得有点古老。

大家可以尝试增加别的效果,看看每个参数如何影响场景效果。

Local Volume

Local volume 能够在场景中选定的一部分区域进行后处理。这个后处理可以设置在游戏玩家进入选定的区域时,场景变暗,然后在游戏玩家离开该区域时,场景亮度复原,如下视频所示:

local volume

  1. 在 Hirarchy 窗口中选择 Cube,即上方右边角落里面的发光盒,然后在右侧Inspectgor窗口中,点击 Add Component按键,在弹出窗口中点击 Volume
  1. 在 Volume中设置参数,将Mode中Global改为Local, Blend distance 设置为 10,Profile中点击右边的圆圈,在弹出窗口中选择 PostProcessing Profile_Gritty Sci Fi 后处理设置文件,该后处理设置将提供一个暗黑的未来场景设置。
  1. 点击整个窗口正中间上方的 Play 按键,进入游戏模式,操控 WASD 按键,漫游到上述右边角落里面的发光盒,在靠近该发光盒的时候,可以看到周围的环境变暗淡了,再离开该发光盒的时候,可以看到周围的环境恢复了原来的光亮。
相关推荐
逐·風6 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
_oP_i8 小时前
Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
unity·游戏引擎·webgl
代码盗圣11 小时前
GODOT 4 不用scons编译cpp扩展的方法
游戏引擎·godot
Leoysq17 小时前
【UGUI】实现点击注册按钮跳转游戏场景
游戏·unity·游戏引擎·ugui
PandaQue18 小时前
《潜行者2切尔诺贝利之心》游戏引擎介绍
游戏引擎
_oP_i20 小时前
unity中 骨骼、纹理和材质关系
unity·游戏引擎·材质
Padid1 天前
Unity SRP学习笔记(二)
笔记·学习·unity·游戏引擎·图形渲染·着色器
Tp_jh1 天前
推荐一款非常好用的C/C++在线编译器
linux·c语言·c++·ide·单片机·unity·云原生
dangoxiba2 天前
[Unity Demo]从零开始制作空洞骑士Hollow Knight第十八集补充:制作空洞骑士独有的EventSystem和InputModule
游戏·unity·c#·游戏引擎·playmaker
无敌最俊朗@2 天前
unity3d————屏幕坐标,GUI坐标,世界坐标的基础注意点
开发语言·学习·unity·c#·游戏引擎