教程1
文章目录
1. 整体架构
-
首先,我们需要注意的是在编辑材质时,要小心其细节面板的
用法
分栏,我们需要明确其勾选,否则,很有可能导出后报错,部分材质无法显示,例如:一般情况下,哪怕没有勾选,UE4也会启动使用静态光照的版本。 -
为什么编译着色器的数量如此惊人?理由和Unity一样,着色器内分支结构的使用会导致大量的着色器变体,每一个变体都要进行编译。
-
大多数情况,我们无需专门去减少变体数量,保持默认设置即可。
-
如果需要减少,可以修改如下设置:
2. 性能
- 对于材质而言,300以内的材质命令数是合理的(PC),但无论什么硬件环境,过千条的命令数都是不合理的。
3. PBR
- 对于大多数情况,我们只需将
金属度
看作布尔值,高光值
不用修改,默认使用0.5,着重修改粗糙度即可。
4. 压缩和内存
-
之前也说了,UE4的压缩格式是DXTC或BC,而
矢量置换贴图
则是未压缩,同时,不要因为纹理是灰度图,就选择压缩方式中的灰度
,这是误导。具体这些格式细节,可以见RTR4读书笔记
-
密切关注纹理信息面板。
- 勾选
延迟压缩
,会停止在纹理导入时进行其他压缩操作,而变为在保存时进行压缩,这方便开发,是个不错的选项。 - 法线贴图使用的是特殊的BC5压缩方式,只是要R、G通道。只要使用正确的压缩格式,就无需在着色(蓝图)中使用专门的函数来还原B通道。
- 帧率问题一般和纹理无关。
- 可以使用
统计数据窗口
来查看纹理内存使用的详细情况。 - 使用命令:stat Memory,进行查看。
5. 纹理池
深入了解纹理如何通过流送、多级渐进纹理、纹理池大小等方面管理可用内存。我们将介绍如何在避免内存遭遇瓶颈的情况下将纹理细节最大化。
-
根据项目需要,使用命令:r.Straming.PoolSize,来修改纹理池大小,因为项目默认值并不大(2GB)。
-
纹理流送是系统决定使用哪张纹理和相应Mip的过程。
-
进行纹理分组,方便管理
-
合并贴图,本质是将RGB通道中的不同图像进行组合,例如:三个通道存储了三张纹理的 α \alpha α通道。
补充知识可见纹理
6. 渲染目标
-
在编辑器或渲染时生成的特殊纹理。
-
其中,部分情况下使用的
SceneCapture
在反射一节也提到过。 -
关于,怎么将程序纹理渲染进一张贴图中:通过算法生成程序材质,通过蓝图将材质应用到渲染目标上,最后将其转化为平常使用的静态纹理。
游戏中,所有雪的实现(在雪地走,雪被挤向两侧),都是基于渲染目标
7. 材质编辑器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e7hLIRzP-1623493456783)(材质大师教程1.assets/image-20210103192210756.png)]
常用的数学公式(HLSL中也是常见的)
动画序列视图
使用的外部信息
世界对齐纹理
8. 简单组合
这里只会简单提及几个有意思的。具体可见教程,比较简单。
Bump Offset
蓝图 | 效果 |
---|---|
![]() | |
![]() | |
使用纹理的话,有种凸起感,(Offset的纹理使用的是同一张,不过要将采样类型设置为线性颜色
)
蓝图 | 效果 |
---|---|
![]() | |
![]() | |
一些用处:模仿老式显像管电视机、
混合角度纠正法线
学了这么久图形学,这点还是清楚的,法线贴图的混合可和一般的不一样。
当然,可以用乘法,来改变贴图强度,但是注意不要修改蓝色通道。
顶点着色
蓝图 | 效果 |
---|---|
![]() | |
![]() | |
蓝图 | 效果 |
---|---|
![]() | |
![]() | |