材质系统,是UE5里最难入门、但一旦掌握就最有成就感的模块。
很多人刚接触UE5材质编辑器的时候,看着一堆节点和连线,直接懵了——这也太复杂了吧?
但其实,UE5的材质系统逻辑很清晰,本质就是用节点搭建一个”计算流程”,最终输出颜色、粗糙度、金属度等参数,告诉引擎这个物体看起来应该是什么样子的。
这篇文章把材质系统的核心知识梳理清楚,跟着学完,你就能自己写大部分常用材质了。
材质编辑器界面:先搞清楚每个区域是干什么的
打开一个材质球(双击Content Browser里的材质),会弹出材质编辑器(Material Editor)窗口。界面分几个区域:
- 视口(Viewport):预览材质效果,可以切换预览模型(球体、圆柱体、平面等)
- 细节面板(Details Panel):设置材质的各种属性(着色模型、混合模式、两面渲染等)
- 图表区域(Graph):放节点、连线,这就是你”写”材质的地方
- 资源管理器(Asset Browser):管理这个材质用到的贴图资源
PBR流程:现代游戏材质的标准
PBR(Physically Based Rendering,基于物理的渲染)是现代游戏渲染的标准。UE5的材质系统就是围绕PBR建立的。
PBR的核心思想:用真实的物理属性来描述材质,而不是凭感觉调颜色。
必备的PBR贴图
| 贴图 | 作用 | 通道 | 备注 |
|---|---|---|---|
| BaseColor | 物体的本色 | RGB | 不要用纯白(1,1,1)或纯黑(0,0,0) |
| Normal | 法线贴图,模拟表面凹凸 | RGB(对应XYZ法线方向) | 一定要用BC5压缩格式 |
| Roughness | 粗糙度 | R(灰度图) | 0=镜面光滑,1=完全粗糙 |
| Metallic | 金属度 | R(灰度图) | 只用0或1,不要用中间值 |
| AO(Ambient Occlusion) | 环境光遮蔽 | R(灰度图) | 模拟缝隙处的阴影 |
| Opacity | 透明度(透明材质用) | R(灰度图) | 0=完全透明,1=不透明 |
在材质编辑器里搭建PBR材质
一个标准的PBR材质节点连接方式是:
- 把BaseColor贴图连到
Base Color引脚 - 把Roughness贴图连到
Roughness引脚 - 把Metallic贴图连到
Metallic引脚 - 把Normal贴图连到
Normal引脚(注意:Normal贴图要先通过Normalize节点或者直接连,UE5会自动处理) - 把AO贴图连到
Ambient Occlusion引脚
重要: Metallic贴图不要用中间值(比如0.5),要么是0(非金属),要么是1(金属)。这是因为UE的着色模型对金属和非金属是分开处理的。
材质实例(Material Instance):实际工作中90%的时间在用这个
每次改材质球的参数,都要重新编译(Compile),很慢。所以UE引入了材质实例的概念。
工作流程
- 在材质球里,把需要动态调整的参数用
Material Parameter节点代替(比如颜色、粗糙度、金属度) - 右键材质球 → Create Material Instance,生成材质实例
- 双击材质实例,在细节面板里直接调参数,不需要重新编译
常用的参数类型
- Scalar Parameter:单一数值(比如粗糙度、金属度)
- Vector Parameter:颜色(RGBA)
- Texture Sample Parameter:贴图(可以动态更换贴图)
实际项目中,一个材质球可以生成几十个材质实例,每个实例有不同的颜色/粗糙度,但底层是同一个着色器,性能很好。
常用材质实战:石头材质
以石头材质为例,完整的节点连接:
- 拖入石头的BaseColor、Normal、Roughness、AO贴图(用
Texture Sample节点) - 把BaseColor连到
Base Color - 把Normal连到
Normal - 把Roughness连到
Roughness(可以加一个Scalar Parameter来控制整体粗糙度) - 把Metallic连到
Metallic(石头一般是0,非金属) - 把AO连到
Ambient Occlusion
进阶技巧: 如果要让石头表面长一点苔藓,可以用Lerp(Linear Interpolation)节点,根据一个Mask(遮罩)来混合两个颜色的材质。
透明材质:做玻璃、水、弹力特效
透明材质需要把材质的Blend Mode改成Translucent。
玻璃材质要点
- BaseColor:玻璃的本色(比如淡蓝色)
- Opacity:透明度(0.5左右,不要太透明)
- Roughness:玻璃表面很光滑,设成0.1以下
- Metallic:0(玻璃不是金属)
- Refraction(折射):玻璃会折射光线,需要连一个
Refraction节点,Index of Refraction(折射率)设成1.5左右(玻璃的标准折射率)
水材质要点
水材质比玻璃复杂,因为水是动态的:
- 用
Panner节点让法线贴图动起来(模拟水流) - 用
Depth Fade节点让水与地面的交界处渐变(不会有硬边) - 用
Fresnel节点让水面的边缘更亮(模拟反射)
自发光材质:做霓虹灯、屏幕、魔法效果
自发光材质需要把Emissive Color引脚连上颜色。这个物体会自己发光,不受场景光照影响。
注意事项:
- 自发光强度不要超过1,否则会”过曝”
- 如果要让自发光物体真的能照亮周围(就像现实中的灯一样),需要开启
Use Emissive for Static Lighting(仅对静态光照有效) - 在Lumen下,自发光物体会自动照亮周围环境,不需要额外设置
材质函数(Material Function):复用常用逻辑
有些节点组合是经常用到的,比如”根据视线角度调整 Fresnel 效果”、”把三张灰度图打包成一个RGB图”。这些可以封装成材质函数。
创建材质函数:
- 在Content Browser里右键 → Material Function
- 双击打开,在里面写节点逻辑
- 在普通材质里,用
Material Function Call节点来调用这个函数
UE5自带了很多实用的材质函数,在/Engine/Functions目录下,比如:
Blend Angle Corrected Normals:正确混合两张法线贴图World Aligned Normal:生成世界对齐的法线(做地形材质很有用)
性能优化:材质也有优化空间
复杂的材质会占用很多GPU资源。优化方法:
- 减少贴图数量:把多张灰度图(Roughness、Metallic、AO)打包到一张RGBA图的各个通道里
- 用Texture Coordinate的平铺:用
TextureCoordinate节点的Tiling参数来控制贴图平铺,而不是用更大的贴图 - 慎用实时计算:有些节点(比如
SceneTexture、World Position)会增加性能开销,移动端要特别小心 - 使用材质实例:前面说过,材质实例可以大幅减少着色器编译数量
招聘需求参考(Boss直聘,2026年6月)
看了30多个”UE5技术美术”和”UE5材质美术”职位,材质相关的要求:
- 熟练使用UE5材质编辑器:能写复杂的材质节点网络
- 理解PBR流程:知道每张贴图的作用,能指导外包正确输出贴图
- 会写Material Function和Material Layer:能封装常用逻辑,提高团队效率
- 了解性能优化:知道哪些节点贵,能在效果和性能之间做取舍
- 加分项:会HLSL(可以写Custom节点)、会用Substance Painter/S Designer
相关课程: 火星人教育UE5材质培训课程,从PBR理论到复杂节点网络,结合实战案例教学。

评论(0)