Hello,大家好。今天和大家分享一下Unreal引擎中贴图压缩格式分析,我是木偶心没。
一般我们从painter,designer或者ps里面导出贴图的时候都会选择一种文件格式,而文件格式只是图像为了存储信息而使用的对信息的特殊编码方式。导出的时候都先存储在磁盘或者内存中。而这些文件格式要放在游戏中使用都要进行纹理压缩。
所以,引擎里面的纹理压缩格式和导出贴图的格式是有关系的
下面具体分析一下每一类贴图的在引擎里面的压缩格式
1、BaseColor
一般来说,BaseColor的导出格式都是TGA,而在引擎里面压缩格式一般设置为默认的Default。 而default有两种压缩方式,一种是DXT1对应的BC1,另外一种是DXT5对应的BC3,两者的差别是BC1格式没有Alpha通道,而BC3有Alpha通道。(实际上BC1也是有alpha通道,只是通道所占位数只有1,所以在unreal里面就直接给忽略掉了)也就是说,如果一张导进来的BaseColor贴图选择了Default格式,那么如果自带alpha通道的话,默认在压缩的时候就会使用BC3,而没有带alpha通道的话,就自动使用BC1。
BC1中的RGB所占比例是5:6:5,所以G通道会更丰富一些
而BC3中的RGBA所占比例是5:6:5:8,所以完全可以按照所占比例来分配basecolor的alpha通道所存放的数据
2、Normal
Normal在导出的时候一般也是TGA格式,然后在引擎里面选择NormalMap对应的BC5。但是同时也可以根据项目要求导出位数更高的贴图格式,比如16位的png,以及32位的exr文件(exr只能从painter里面导出来)
而normal map是在高模上面烘焙出来的细节法线,所以在制作一些高质量的游戏的时候,我们需要更多细节,而BC5中RGB所占用比例是5:6:5,对于法线数据的存储来说是不够的,所以,我们可以考虑用BC7(R8G8B8A8),这种纹理压缩方式能保证每个通道的比例都为8。能让贴图得到更小的压缩以及更多的细节。
上面考虑了游戏画面的质量,同时也要考虑优化。Normal map是利用纹理中记录的值来干扰光照方程中的法线参数,以达到改变光照的结果,模拟表面细微纹理的作用。所以,normal map中保存的就是一个法向量(x,y,z),并且对于每一个点的法向量来说,xyz之间都存在x2+Y2+Z2=1,所以实际上可以根据其中两个通道来求得第三个通道。因为很多的normal贴图的第三个通道都是白色,所以如果对效果要求不高的可以直接给z取1的值,但是这里我们为了更好地效果在unreal的shader里面使用RG通道算出B通道的值;
如下图,我们先提取rg通道,然后用节点DeriveNormalZ_Function计算出Z轴
得到的结果如下图,
而如果我们用原本的RGB直接输入进去,会得到下面的截图
对比可以发现,强度有一些差异,但是可以加一个控制法线强度的参数并调节匹配。而整体的阴影凹凸细节都是一样的。
3、Mask
引擎默认的mask格式和default是一样的,不带alpha的DXT1和带有alpha的DXT5。唯一的区别就是mask没有勾选srgb,因为不需要进行一个线性转化。而如果对mask有更多精度要求也可以选择BC7。
来源:Thepoly公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答在广州这座繁华的都市中,数字创意产业正蓬勃发展,广州视频剪辑培训成为许多影视爱好者的理想起点。随着短视频平台和影视制作需求的激......
在北京这样一座充满创意活力的都市,UI设计培训正成为无数年轻人追逐职业梦想的跳板。随着数字经济的蓬勃发展,UI设计行业在北京展......
在当今创意经济蓬勃发展的浪潮中,北京平面设计培训成为众多职业追求者的理想起点。这座城市的活力与机遇吸引着无数人投身视觉艺术领域......
在影视和设计行业蓬勃发展的今天,虚幻引擎作为核心技术工具,正引领着视觉创作的革命。越来越多的人渴望掌握这门技能,而专业的培训成......
在北京这座文化创意中心,平面设计培训行业蓬勃发展,为渴望入行的学员提供了丰富机遇。随着数字媒体和影视产业的崛起,掌握视觉传达技......
在上海这座充满活力的城市,影视和设计行业正迎来前所未有的发展机遇,数字技术的进步让3D建模成为创意产业的核心驱动力。参加专业的......
同学您好!