UE4--材质大师课程笔记

压缩和内存

一般来说纹理导入UE4都是经过压缩的,压缩方式有BC(Block Compression块压缩)/DXTC(Directx Texture Compression DirectX纹理压缩)两种,其实都是用于PC的Directx平台的格式。但是法线贴图有点特殊,是无法通过这两种方式进行压缩的。

​ 如下图所示就是贴图导入UE4后所选择的压缩方式。

压缩方式后面所带的数字表明是不同的压缩格式,例如BC3(DXTC5)表示带透明度的纹理,BC1(DXTC1)表示不带透明度的纹理。

法线贴图的压缩方式是通过剔除蓝色通道的方式进行压缩,这样可以存储更多的数据,同时对红色和绿色通道进行轻度压缩。最后通过对红绿色进行蓝色通道的复原,这些都是UE4内部自己调用的,不用我们去调整。如下图只是进行蓝色通道复原的演示。

注意的是,法线贴图的导入方式必须是选择NormalMap。

为什么要对纹理进行压缩

最主要是因为受限于内存和带宽,如果不对纹理进行压缩,可能导致卡顿。但帧率过低一般和纹理压缩没有什么关系。可以通过查看统计数据,来查看场景中哪些纹理在内存中的大小。

多级渐进纹理 纹理尺寸和纹理池

纹理池

UE4在计算机内存中,会为纹理暴保留一定的空间,这个空间就是纹理池,我们可以手动调整纹理池的大小,当纹理池大小不够用的时候,会导致贴图的分辨率降低,效果下降。

打开控制台,输入r.Streaming.PoolSize查看纹理池大小,并且可以进行修改。

Mipmaps(多级渐进纹理)

Mipmaps为原始纹理的副本,大小为1/4左右,使用Mipmaps的原因是为了减少噪点的生成。

左侧是使用了Mipmaps,右边没有使用,可以看出右边的噪点非常多,所以Mipmaps可以看成我们手动进行模糊

UE4会对远处使用不同的Mipmaps来模拟模糊的效果,如下图离镜头最近的就使用Mipmaps0原始纹理,然后随着离镜头越来越远,使用不同的Mipmaps。

可以在贴图的LOD选择中进行Mipmaps的设置

注意纹理尺寸

使用Mipmaps可以提高我们的性能,加快渲染速度和减少纹理锯齿,但注意不适于2的幂数的纹理无法生成Mipmaps,但是UI纹理可以是任意分辨率,因为UI纹理不会从远处到近处,所以没必要使用Mipmaps。

材质的纹理数限制

UE4的每个材质的纹理可采样数是16个,加上内部的光影贴图,其实我们可以用的大概是13个左右,其实已经够用了,但是如果要突破这个限制的话,我们可以把不同的贴图合成RGB通道就成为一张贴图,到使用的的时候就可以分RGB通道分为3张贴图。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2021 Opda
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信