UE5 材质 基础知识
Posted chenglixue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE5 材质 基础知识相关的知识,希望对你有一定的参考价值。
前言
本篇总结一些常用的UE5材质相关的知识点,因为其中有些是图形学内容而这些内容在笔者以前的博客中均有记载,所以只是简单提及。随着笔者的不断学习,该篇总结也会不断丰富
坐标系
- UE使用左手坐标系且向上轴是z轴,x轴向左
- 俯仰角(Pitch):绕Y轴旋转
- 偏航角(Yaw):绕z轴旋转
- 翻滚角(Roll):绕y轴旋转
PBR
Base Color
- Base Color定义物体表面的diffuse颜色
- 对于粗糙的物体,颜色值范围[50,240]
- 对于光滑的物体,颜色值范围[20,240]
法线
- 法线定义物体表面的形状
- 不可以手动创建法线图!而是使用烘培
镜面反射
- Specular代表反射率——有多少光被反射
- 适用于非金属材质。非金属材质仅仅反射4%的光
- 菲涅尔现象:从很斜的角度看向镜面反射材质的物体,会看到绝大部分高光
粗糙度
- 1代表最粗糙,0代表最光滑
金属度
- Metallic与Base Color 和 镜面反射有关
- 所有金属的Base Color都大于180
- Base Color 和 Specular使用金属度的区别
数据类型和函数
float
-
float
常用于粗糙度、镜面反射、金属度等
-
float2
常用于uv
-
float3 & float4
常用于计算
ComponentMask & SplitComponents
- ComponentMask允许从输入中挑选某个通道子集(R、G、B和/或A)并输出
- SplitComponents与Mask类似,不过它更加灵活
Append & AppendMany
-
Append合并两个类型,形成一个新类型
-
AppendMany可以合并多个通道
Swizzle
- 排列floatn分量
TextureCoordinate
- 坐标索引:指定要使用的 UV 分量
- U 平铺(UTiling):指定 U 方向上的平铺量(可理解为范围)
- V 平铺(VTiling):指定 V 方向上的平铺量
- 解除镜像U:如果为 true,那么撤销 U 方向上的所有镜像(镜像寻址模式)
- 解除镜像V:如果为 true,那么撤销 V 方向上的所有镜像
Time
Constant Material Expressions in Unreal Engine
-
Time节点用于为材质添加一个时间属性,随时间变化材质的uv坐标也会改变
-
Ignore Pause:如果为true,即使游戏停止,时间也会继续变化
-
peroid(周期):在t时长内从0到t,时间不断增长,到t时会自动回到0
BlendAngleCorrectedNormals
- 与普通的lerp不同,该函数用于混合两个normal map
DeriveNormalZ_Function
- 给定xy分量求切线空间的z分量并输出
- 计算公式:\\(1=x^2+y^2+z^2\\)
DepthFade
-
隐藏半透明对象与不透明对象相交时出现的硬线
-
Opacity:接收DepthFade的对象的不透明度
-
FadeDistance:发生Fade的全局空间距离
-
工作原理
当两个深度相同时,像素的不透明度为0;当间距增加时,像素的不透明度为1
-
需要两个对象
- 当前绘制的半透明像素深度
- 半透明像素后的第一个不透明像素的深度(通过depth buffer获取.半透明像素的深度不写入深度缓冲区)
-
公式
float spacing = sceneDepth - pixelDepth; float fade = saturate(spacing/fadeDistance);
-
Desaturation
Color Material Expressions in Unreal Engine | Unreal Engine 5.1 Documentation
- Desaturation(去饱和度)用于降低输入颜色的饱和度,转换为一定百分比的灰度——彩色图变灰度图
- Luminance Factors:每个通道的贡献量
- Fraction:去饱和度量.范围[0,1]。如果是负数则是增强饱和度
Fresnel
- 计算基于表面法线和相机方向点积的衰减
- 当表面法线和相机方向向量平行,则输出0;当表面法线和相机方向向量垂直,则输出1。输出范围[0,1]
- ExponentIn:控制衰减速率
- Base Reflect Fraction:从正对表面的方向查看表面时,镜面反射的小数。若使用此参数,会取代"ExponentIn"
Frac
- Frac用于输出参数的小数部分,且输出范围为[0,1]
- 例子
frac(0.2) = 0.2;frac(-0.2) = 0.8;frac(0.0,1.6,1.0) = (0.0, 0.6, 0.0)
Floor
- Floor()四舍五入到小于参数的整数值
- Floor(0.2, 1.6) = (0.0, 1.0)
Lerp
- 根据 Alpha 在 A 和 B 之间进行线性插值(当 Alpha = 0时为 A ,当 Alpha = 1时为 B )
Noise
Utility Material Expressions in Unreal Engine | Unreal Engine 5.1 Documentation
-
Scale
缩放噪声单元大小
-
Quality
外观/性能
-
Function
噪声的分类
-
Turbulence
每个噪声给结果加一个它的绝对值。用于改变视觉特征,如陡峭的山脊
-
Levels
噪声大小乘以Levels。如若shader执行64个指令和8个纹理样本,而levels = 6,则循环六次(64x6个指令,6x8个纹理样本)
-
Output Min
输出的最小值
-
Output Max
输出的最大值
-
Level Scale
确定新的信号频率的Scale变化量。一般设为2或更高
-
Tiling
用于noise函数,支持平铺
-
Repeat Size
noise多久重复一次
-
FilterWidth
控制noise纹理的模糊程度
Panner
- 用于纹理动画。它可以输出用于创建平移或移动纹理的 UV 坐标
- SpeedX:在 U 方向上平移坐标的速度
- SpeedY:在 V 方向上平移坐标的速度
- Coordinate:UV 纹理坐标
- Time:用于确定当前平移位置的值
Round
- 将输入值舍入为最接近的整数
- 若输入值的小数部分为0.5或更大,则将输出值向上舍入;否则将输出值向下舍入
Sign
虚幻引擎中的数学类材质表达式 | 虚幻引擎5.0文档 (unrealengine.com)
- 若参数为负数,则输出-1
- 若参数为0,则输出0
- 若参数为正数,则输出1
Material Function
-
为了提高复用性,ue5提供材质函数对实现的功能进行封装,以后直接提取即可
-
如下图所示,左边红色表示输入参数,右边棕色表示输出参数
-
后续使用需要将material function 拖入材质编辑器
reference
Math Material Expressions in Unreal Engine | Unreal Engine 5.1 Documentation
Constant Material Expressions in Unreal Engine | Unreal Engine 5.1 Documentation
UE4 材质圆角按钮材质
以上是关于UE5 材质 基础知识的主要内容,如果未能解决你的问题,请参考以下文章
UE4/UE5 虚幻引擎,材质HueShift色相(色调改变)