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公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答023年以来,在版号审批、出海政策等影响下,新品游戏大量涌现,这也为游戏市场带来了一些新变量、新现象。
学习游戏开发班可以帮助游戏爱好者从零基础成为游戏开发专家,掌握全面的游戏开发技能。
火星时代教育为您提供专业的界面设计实战班,在实践中掌握界面设计的核心技巧和最新趋势,成为优秀的UI设计师。
了解UI交互设计培训的最佳选择,比较不同培训机构的优势和特点。
火星时代教育为您推荐专业的学影视后期培训机构,提供高质量的培训内容及资深导师指导,助您成为优秀的影视后期剪辑师或合成师。
火星时代教育是一家专注于交互设计培训的机构,为学员提供专业的交互设计培训课程,并帮助他们成为优秀的交互设计师。
1. 打开微信扫一扫,扫描左侧二维码
2. 添加老师微信,马上领取免费课程资源
同学您好!