Unity VFX 与 Shader 新手导论
目录
基础概念
什么是 VFX?
VFX(Visual Effects,视觉效果)是游戏中用来增强视觉体验的特效,包括:
- 粒子效果(火花、烟雾、雨雪)
- 光效(闪光、光束、辉光)
- 后处理效果(模糊、色彩调整)
- 动画效果(材质动画、UV 动画)
什么是 Shader?
Shader 是运行在 GPU 上的小程序,用来控制 3D 对象的渲染方式:
- 顶点着色器:处理顶点位置、法线等数据
- 片元着色器:决定每个像素的最终颜色
- 表面着色器:Unity 的高级抽象,更易使用
Unity VFX 系统
1. Particle System(粒子系统)
Unity 内置的传统粒子系统,适合大多数效果:
主要模块
- Emission(发射):控制粒子生成速率和时机
- Shape(形状):定义粒子发射区域
- Velocity over Lifetime:粒子运动轨迹
- Color over Lifetime:颜色随时间变化
- Size over Lifetime:大小随时间变化
使用步骤
1. GameObject → Effects → Particle System
2. 在Inspector中调整各个模块参数
3. 使用Curve编辑器创建动画曲线
4. 设置材质和纹理
1
2
3
4
2
3
4
2. Visual Effect Graph(VFX Graph)
Unity 的现代 VFX 工具,基于节点的可视化编辑器:
如果没有找到,需要在 Package Manager 中下载。
优势
- GPU 加速,性能更好
- 可处理数百万粒子
- 节点式编辑,直观易懂
- 支持复杂的逻辑和计算
基础工作流程
1. Window → Visual Effects → Visual Effect Graph
2. 创建VFX Graph Asset
3. 使用节点创建效果逻辑
4. 连接Context(上下文)节点
5. 调试和优化
1
2
3
4
5
2
3
4
5
3. Timeline 和 Cinemachine
用于制作过场动画和镜头效果:
- Timeline:时间轴编辑器,控制动画序列
- Post-processing:后处理效果栈
Shader 基础
1. Shader 类型
Built-in Render Pipeline Shaders
- Surface Shader:最常用,语法简单
- Vertex/Fragment Shader:更底层,控制更精确
URP/HDRP Shaders
- Shader Graph:可视化节点编辑器
- HLSL 自定义着色器:手写代码实现
2. Surface Shader 入门
基本结构
hlsl
Shader "Custom/MyFirstShader" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Color", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Standard
sampler2D _MainTex;
fixed4 _Color;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
}
ENDCG
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
关键概念
- Properties:在 Inspector 中显示的参数
- SubShader:渲染指令集合
- Tags:告诉 Unity 如何渲染
- surf 函数:主要的表面计算逻辑
3. Shader Graph(推荐新手使用)
如果没有找到,需要在 Package Manager 中下载。
优势
- 无需编程知识
- 实时预览
- 节点化编辑
- 自动生成代码
推荐学习资源
官方资源
- Unity Learn 平台的 VFX 教程
- Unity Shader Graph 文档
- Unity VFX Graph 手册
社区资源
- YouTube 上的 Unity VFX 教程
- Shader 编程书籍:《Unity Shader 入门精要》
- GitHub 开源 Shader 项目
常见问题解答
Q: VFX Graph 和 Particle System 该选哪个?
A: 新项目建议使用 VFX Graph,它性能更好且功能更强大。但 Particle System 仍然适合简单效果和移动平台。
Q: Shader Graph 和手写 Shader 哪个更好?
A: 新手建议从 Shader Graph 开始,它直观易学。掌握基础后再学习 HLSL 编程,可以实现更复杂的效果。
因此,接下来我们将从 Shader Graph 和 VFX Graph 出发,入门特效制作。