MyPostFX 全功能屏幕后处理系统
— 使用说明文档 (V1.0)
支持管线:Built-in 默认管线 / URP
作者:Horace Chen (chr)
环境要求
项目 版本
-------------
Unity 2022.3 LTS(开发时用的是 2022.3.62f3c1)
URP 14.0.12(URP 版需要)
Built-in 版 不需要额外渲染管线包
关于版本兼容性:
- Unity 2022.3 是实测通过的版本,下面提到的 API 都是按这个版本写的
- Built-in 版:理论上 2019.4+ 都能用(只依赖 OnRenderImage,是很老的 API)
- URP 版:强烈建议 2022.3 + URP 14.x。因为主后处理用的是
URP 内置的 FullScreenPassRendererFeature,这个 Feature 是 URP 14 才正式加的,
更早的 URP(12.x / 13.x)里要么没有、要么接口不一样,需要自己改
- Unity 6 / URP 17:FullScreenPassRendererFeature 还在,但 API 有调整,可能要做兼容
- Unity 2021 及更早 + URP:不建议直接用,会编译不过
(下载链接在最最下面)
==================================================
一、前言
我是一个刚学5个月的特效萌新,我之前用的shader是非常轻量简约并且远古的standardfx,没有后处理只有粒子系统,曾经想过换nb,但是莫名其妙发现后处理不起效,于是一气之下让deepseek写了一个
受到了龙神的启发和特笑哥(做个特笑吧)的指示,我把这个插件分享出来,说是造福人类
所以我扒掉了熊猫,nb和阿瑞的源码,把平时用得最多的后处理效果整合成了这一套,一个脚本 + 一个材质搞定,所以这篇文章没什么图,因为效果你们都见过(其实我压根懒得放图,文章都是ai写的)
参数全部按功能分组,可以直接用 Timeline 的 Animation Track K 动画,可以练习k帧,有教育意义(
注意了,这只是一个整合的插件,效果的代码全是别人的,我对代码狗屁不通,所以全是ai写的,当初的要求就是有效果并且能跑就行,所以切勿拿来盈利
众所周知,unity 有两个常用的管线 Built-in 和 URP,我平时要在两边来回切(老工程是 Built-in,新学 NBShader 又得用 URP),所以两套管线各做了一份,API 和参数名尽量保持一致,切管线不用重新学。
这套东西谈不上多专业,代码里也有不少可以优化的地方,但目前在自己的练习工程里跑得稳、
出片效果符合预期。写这份文档一是做个记录,二是分享给平时做特效 demo、需要快速出画面的小伙伴。
水平有限,各位大佬轻喷,欢迎多提建议。
--------------------------------------------------
目录
1. 文件构成
2. 两套管线的区别与选择
3. 安装方式(三步)
4. 功能模块详解
5. 实体扭曲(实验性,不推荐)
6. 用 Timeline 驱动后处理
7. 参数速查表
8. 常见问题
9. 出处与致谢
10. 下载
==================================================
1. 文件构成
--------------------------------------------------
Built-in 版(Unity 2022.3+ / 任意管线)
MyPostFX_BuiltIn/
├── MyPostFX_BuiltIn.shader 核心全屏后处理着色器
├── MyPostFX_BuiltInDriver.cs 相机驱动脚本(挂在 Main Camera 上)
├── DeferredDistort_BuiltIn.shader 实体扭曲蒙版(实验性)
├── MyPostFX_BuiltIn_Material.mat 配套材质
└── Editor/
├── MyPostFX_BuiltInSetup.cs 一键部署 / 移除工具
└── MyPostFX_BuiltInEditor.cs Inspector 自定义面板
URP 版(Unity 2022.3 + URP 14.0.12)
MyPostFX/
├── MyPostFX.shader 核心全屏后处理着色器
├── MyPostFXDriver.cs 参数控制器(挂在场景物体上)
├── MyPostFX_Material.mat 配套材质(给 FullScreenPass 用)
├── Editor/
│ ├── MyPostFXSetup.cs 一键配置工具
│ └── MyPostFXDriverEditor.cs Inspector 自定义面板
└── Sky/
├── MySkySphere.shader 卡通天空球
└── MySkySphereSetup.cs 天空球一键配置
ChrDistort/ (URP 版需要)
├── DeferredDistort.shader 实体扭曲蒙版( 实验性)
└── DeferredDistortFeature.cs URP Renderer Feature(实验性)
一句话理解分工:
文件 干什么
------------------
*.shader 真正算画面的像素
*Driver.cs 把面板参数传给 shader(Shader.SetGlobalXXX)
*Setup.cs 一键把 Driver 挂到相机 / 把 Feature 加进 Renderer
*Editor.cs 让 Inspector 显示成中文分组面板
DeferredDistort* 单独一条链路:物体写蒙版 → 后处理读蒙版扭曲画面(实验性,建议用 NB/熊猫的)
==================================================
2. 两套管线的区别与选择
--------------------------------------------------
Built-in 版 URP 版
-----------------------------------------------------------
适用 Unity 2019.4+ 均可 2022.3 + URP 14.x(实测版本)
额外依赖 无 URP 14.0.12
挂载位置 Main Camera 上的 MyPostFX_BuiltInDriver场景物体上的 MyPostFXDriver
执行方式 OnRenderImage URP 的 FullScreenPassRendererFeature
实体扭曲(实验性) 不需要 Feature 需要 DeferredDistortFeature
天空球 ✗ ✓ MySkySphere
时间控制 ✓ useRealtimeClock / timeValue ✓ 同
模块数 17 组 16 组
怎么选:看你的工程是什么管线。
- 老工程 / 大部分特效练习工程 → Built-in
- 想用 NBShader、Shader Graph、URP 的 2D 光照 → URP
两版的参数名、分组名、Tooltip 都尽量对齐了,从 Built-in 换到 URP 基本不用重新学。
==================================================
3. 安装方式(三步)
--------------------------------------------------
Built-in 版(Unity 2022.3+)
① 导入
把 MyPostFX_BuiltIn 文件夹拖进 Assets/。
② 一键部署
菜单栏:Tools > Chr > 一键部署 MyPostFX (Built-in)
它会自动:
- 建好材质(如果 MyPostFX_BuiltIn_Material.mat 丢失,会自动重建)
- 给当前场景的 Main Camera 挂上 MyPostFX BuiltIn Driver
③ 开始调
选中 Main Camera → Inspector 里会看到 MyPostFX BuiltIn Driver 组件,
参数按【渲染】【时间】【屏幕扭曲】…… 分成 17 个中文折叠组。
想移除就用:Tools > Chr > 移除 MyPostFX (Built-in)
URP 版(需 Unity 2022.3 + URP 14.0.12)
① 导入
把 MyPostFX 和 ChrDistort 两个文件夹拖进 Assets/。
② 先确认 URP 版本
打开 Packages/manifest.json,确认有这一行:
"com.unity.render-pipelines.universal": "14.0.12"
版本号 14.x 对应 Unity 2022.3。如果你装的是其他大版本(12.x / 15.x / 17.x),
后面的 FullScreenPassRendererFeature 可能对不上,需要自己适配。
③ 一键配置
菜单栏:Tools > Chr > 一键配置 MyPostFX
它会自动:
- 遍历 URP Asset 下所有 Renderer,给每个加上 FullScreenPassRendererFeature
- 把 Feature 的材质指向 MyPostFX_Material.mat
- 在场景里创建一个挂着 MyPostFX Driver 的物体
它还会自动修复材质丢 shader 的坑。跨项目导入时,.mat 经常会指向 InternalErrorShader
(表现为画面全粉或全黑),Setup 脚本会检测到并自动重新指回 Chr/PostProcess/MyPostFX。
④ 实体扭曲额外一步(不建议做,除非你确定要折腾)
实体扭曲是实验性功能,推荐直接用熊猫或 NB shader 自带的扭曲。
如果你确实想试,才需要执行:Tools > Chr > 实体扭曲 - 一键配置
(URP 版必须加 DeferredDistortFeature,Built-in 不用)
==================================================
4. 功能模块详解
--------------------------------------------------
所有模块都是开关 + 若干参数的结构。关掉开关,这个效果就完全跳过(不消耗性能)。

4.2 屏幕扭曲

4.3 径向模糊

最常用的用法:大招前摇、冲刺、被击退。
一般直接勾 InvertMask,中心保持清晰,四周往外拉丝。
4.4 色差 / 色散

4.5 暗角
参数 说明

压暗四角,把视觉焦点收到中间。角色特写、剧情演出很常用。
4.6 闪白 / 反色 / 去饱和

就是屏幕越来越白
4.7 曝光闪白(过曝)

和 4.6 的 flash 区别:flash 是整屏加白,这个是只把高光推爆。
想要"爆闪但还能看清轮廓"就用这个。
4.8 黑白闪

只让"中间调"闪成黑白,高光和暗部保持不变。做日漫冲击帧那种感觉。
4.9 线条 / 扫描线
参数 说明
-------------------

速度线 + 拉伸,配合径向模糊就是标准的"高速冲刺"画面。搭配黑白闪则是漫画线功能,使其拥有手绘排线感,注意了,如果发现线太密或者太短,请你调节粗细相关的数值(我一下子忘记了反正很容易就能找到),并且把线条颜色调为透明
也用来做 CRT 扫描线、故障感。
4.10 全屏模糊

只是单纯的模糊,没有焦点,我太菜了
4.11 电影黑边框

演出、过场、大招特写。配合 Kin K 一条 0→1 的缓入曲线就是标准的"进入演出"。
4.12 漫画滤镜

把画面压成黑白网点漫画。做"漫画分镜穿越"、"回忆闪回"很有味道。这个玩意儿也很不成熟,效果很不可控,所以我也不知道可以拿来干嘛
4.13 屏幕抖动

纯屏幕空间的抖动,不需要动相机。比震相机更"暴力",适合爆炸、重击。直接k帧即可,需要自行把握时长,我自认为比ae的shake都好用
4.14 水印 / Logo

打自己的水印发 B 站。logoDebugMask 是给你确认贴图通道对不对的。
5. 实体扭曲(实验性,不推荐)
--------------------------------------------------
先说结论:这块不成熟,建议直接用 NB / 熊猫自带的
实体扭曲是我头脑一热加的,当时觉得"物体背后的画面被扭开"很酷,就硬着头皮写了一套。
但它的完成度远不如 NBShader 和熊猫 shader 里集成的扭曲——那两个是多年打磨的,
参数直观、和粒子渲染贴合、出问题也好查。
如果你要用扭曲效果,请优先用:
用什么 在哪
-------------------------------------------------
熊猫 shader 材质 shader 选 VFX/Pandavfx_v2.3,面板里有 _DistortTex / _DistortFactor / _IfNormalDistort 一整套扭曲参数
NBShader 材质 shader 选 Effects/NBShader(或 .Low/.Medium/.High/.Advanced),自带 Distort 支持我记得是这样的,不过你们大部分人应该都会
这两个的扭曲是直接做在粒子材质里的,不需要额外的 Renderer Feature,
也不需要"另一个物体写蒙版"这套间接链路,用起来省心得多。
这一节保留下来只是为了记录,以及给想折腾的人一个参考。
如果你只是想快速出效果——跳过这一节,去用 NB 或熊猫。

8. 常见问题
Q1:导进去画面全粉 / 全黑,参数调了没反应
材质丢 shader 了。跨项目导入时 .mat 经常指向 InternalErrorShader。
解决:跑一次 Tools > Chr > 一键配置 MyPostFX(URP)或
Tools > Chr > 一键部署 MyPostFX (Built-in),Setup 脚本会自动修回来。
Q2:URP 版挂了 Driver 但毫无效果
检查三件事:
1. URP Asset 的 Renderer 上有没有 FullScreenPassRendererFeature(跑一次一键配置)
2. Feature 的材质槽是不是指向 MyPostFX_Material.mat
3. Driver 上的 enable 是不是勾着
4.效果不透明度是否是满的
Q3:Built-in 版没效果
1. Driver 是不是挂在当前的 Main Camera 上(不是别的相机)
2. 相机组件的 Target Texture 是否为空(挂了 RT 会导致 OnRenderImage 行为不同)
3. enable 和具体效果的开关都要开
4.不透明度是否是满的
Q4:性能怎么样
- 关掉的模块完全跳过,所以别把 17 个全开着
- 径向模糊的 Samples、全屏模糊的 Samples 是性能大头,一般 6~12 够用
- 实体扭曲(如果非要用)的蒙版渲染只画用了那个材质的物体,很便宜;
觉得卡就把 Built-in 的 entityDistortDownSample 改成 2
Q5:能和其他后处理插件(NB / 熊猫 / Post Processing Stack)一起用吗
可以,但要注意执行顺序。
- URP:多个 FullScreenPassRendererFeature 的顺序由 Renderer 列表里的先后决定,拖动调整
- Built-in:多个 OnRenderImage 的执行顺序看脚本的 [ImageEffectAllowedInSceneView] 和挂载顺序
一般建议:先做画面处理(模糊/漫画),最后做闪光和抖动。
Q6:为什么参数改了但运行时不生效
Driver 是用 Shader.SetGlobalXXX 传全局变量的。
如果你在同一帧里既 K 了动画又手动改值,可能会打架。
Timeline 播放时以 Timeline 为准。
Q7:我的 URP 版本不是 14.x,能用吗
先说结论:能试,但要自己改代码。
主后处理依赖 URP 内置的 FullScreenPassRendererFeature:
URP 版本 对应 Unity 情况
14.x 2022.3 实测通过
12.x / 13.x 2021 LTS / 2022.1-2 可能没有这个 Feature,或接口不一样
15.x / 16.x Unity 2023 大概率能跑,但没实测
17.x Unity 6 API 有调整,可能要适配
先跑一次 Tools > Chr > 一键配置 MyPostFX 看报什么错:
- 如果提示找不到 FullScreenPassRendererFeature → 你的 URP 版本太老,得自己写一个全屏 Pass
- 如果能加进去但画面不对 → 检查 Feature 的 Injection Point 设置
Built-in 版没这个问题,它用的是 OnRenderImage,从 2019 到 Unity 6 都能跑。
9. 出处与致谢
这套后处理不是从零写的。里面有几个模块是参考/移植了前辈们的东西,
在这里明确标出来,一是不埋没原作者,二是方便你按需追溯:
模块 出处
黑白闪 移植自 NB(雨轩大佬)
线条 / 扫描线 移植自 熊猫
水印 / Logo 移植自 熊猫
全屏模糊 移植自 Arui
电影黑边框 移植自 Arui
漫画滤镜 移植自 Arui
屏幕抖动 参考 AruiPostEffect
其余模块(屏幕扭曲、径向模糊、色差、暗角、闪白、曝光闪白、
以及两套管线的 Driver + Setup + Inspector 框架)为本套原创整理 ——
准确说是"我提需求 + AI 写代码"整理出来的,代码本身我没怎么读懂,能用就行。
(实体扭曲本来是原创,但完成度太低,不建议使用,详见第 5 节。)
特别感谢
谁 做了什么
特笑哥(做个特笑吧) 指点了分享的思路,这个插件能发出来多亏他的建议
龙神 教了我在魔法盒发文章的流程
另外补充几个参考过的方向:
- NBShader:URP 管线的二次元角色渲染,很多思路的起点
- URP FullScreenPassRendererFeature:URP 官方的全屏 Pass,本套 URP 版就是架在它上面的
- Unity Post Processing Stack:参数命名的参考
如果上面任何一位觉得标注方式不合适,或者不希望自己的东西被引用,
告诉我,我立刻调整或移除对应模块。
10. 下载
MyPostFX_v1.0.zip
├── MyPostFX_BuiltIn/ Built-in 默认管线版
├── MyPostFX/ URP 版
├── ChrDistort/ URP 实体扭曲 Feature(实验性,可不装)
└── MyPostFX_使用说明.md 本文档
通过网盘分享的文件:Chr_特效工具包 (2).zip
链接: https://pan.baidu.com/s/151bmOU182EA-Do_5Rvfuig?pwd=nya3 提取码: nya3
--来自百度网盘超级会员v7的分享
附:版本记录
版本 内容
v1.0 初始分享版。Built-in 17 组模块 + URP 16 组模块 + 天空球(Unity 2022.3.62f3c1 / URP 14.0.12)
※ 实体扭曲为实验性功能,不推荐使用,见第 5 节