本系列学习资料来源,Ben Cloward的油管空间,本笔记主要对其中UE的部分进行记录
Lec01 主要介绍一下这个系列的内容,该系列会从基础的单个节点的功能,到组合使用,由浅入深讲解Shader的技巧,同时对UE5和Unity一起讲解
进入引擎中,下面是直接采样和进行了UV动画的指令数差距,可以看到差了四个指令
有一种可以节省性能的方法是可以将计算动画的步骤挪到vertex shader中,可以使用vertex interpolator进行顶点插值,可以看到vertex shader的步骤多了四条,另外world position offset也是在vertex shader中实现的
主要讲了怎么创建项目,以及界面UI相关
在UE中可以使用Tool→Debug→WidgetReflector调整界面文字大小
可以复习以前的PBR和数据类型相关内容
UE4 Material 101学习笔记——01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化
介绍了UV,time,add,subtract,multiply,divide,one minus
贴图压缩大致参考(单位KB),左三种是压缩的,右三种是不压缩的
DXT1支持三通道压缩,DXT5支持四通道压缩,BC7支持三或者四通道
纹理在导入时也会生成Mipmaps,引擎会根据需要自动生成选择什么层级的Mipmap
Lerp节点
L e r p ( y 1 , y 2 , w e i g h t ) = ( 1 − w e i g h t ) ∗ y 1 + w e i g h t ∗ y 2 Lerp(y_1,y_2,weight)=(1-weight)*y_1+weight*y_2 Lerp(y1,y2,weight)=(1−weight)∗y1+weight∗y2
Dot点乘
GAMES101课程学习笔记—Lec 02:Linear Algebra 线性代数回顾
一些点乘的例子,N dot V
灰度算法
充当mask
解释啥是UV
GAMES101课程学习笔记—Lec 07~09:Shading 定义、着色模型、着色频率、图形渲染管线、纹理
UV坐标可以加减进行移动,乘除进行缩放
展示一些向量的用法,法线向上遮罩
NdotV简单的菲涅尔
计算相机向量,根据相机远近进行明暗变化
基本概念,可参考
LearnOpenGL学习笔记—入门07:Coordinate Systems
案例 将法线转入view space实现matcap
MatCap原理介绍及应用
案例 将法线从tangent space转入world space实现环境材质混合,如果想直接在模型顶部混合则转入local space就可以
UE4 Material 101学习笔记——01-07 介绍/PBR基础/UV扭曲/数据类型/翻页动画/材质混合/性能优化
四个节点都用于限制数据范围
min 接受两个值输出小值
max 接受两个值输出大值
clamp 将值钳制在某范围
saturate 将值钳制在0~1
注:该节有一个很好的学习资料,详细描述了多种法线混合方法 ——Blending in Detail
首先需要注意UE(左)和Unity(右)的法线G通道是翻转的
UE类似于从底部被点亮,Unity类似从顶部被点亮
法线贴图不像其他贴图,法线贴图中的每个像素都代表着方向向量,所以混合方式也有所不同
法线贴图案例
第一种简单的方法,取RG两个通道相加,第三个通道用1,不过这种做法会略微削减法线的力量感,但是比较节省性能,这种方法可以对于水面,雨水波纹等不怎么要求法线准确的效果
第二种是UDN方法,取第一张图的Z,会更准确,性能会比第一种消耗高一点
第三种是WhiteOut方法,这个名字是因为在AMD的Ruby : Whiteout演示中使用过,将Z通道乘起来,这样detail normal也会更明显,质量更好,但性能上消耗又更高一点
第四种是RNM方法,比较复杂但也是最精确的,也是UE自带的BlendAngleCorrectedNormals内使用的方法,和第三种差不多,效果上可能会好一些