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公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答今天,我来和大家聊聊,迪士尼动画《海洋奇缘》系列是怎么用Maya软件为他们最新的续集打造获奖动画的。
有哪些听起来高大上、实际上转行同学也能胜任的岗位?试试虚拟现实工程师!
增强现实(AR)和虚拟现实(VR)是当前备受瞩目的创新技术,对相关的增强现实开发、虚拟现实开发、数字孪生开发工程师的人才需求,......
在这个短视频盛行的时代,越来越多的人想要尝试自己进行短视频剪辑,却常常因为缺乏专业知识而无从下手。别担心,今天就为大家带来短视......
今天,我们聊聊皮克斯的《头脑特工队》系列
中国首个AIGC导演共创计划今日正式上线:同学,做导演不要?
中国首个AIGC导演共创计划定于12月6日正式上线。该计划由快手自研视频生成大模型产品“可灵AI”,联合李少红、贾樟柯、叶锦添......
近日,中央广播电视总台《2025年春节联欢晚会》发布官方吉祥物形象“巳(sì)升升”,祝福全球华人在新的一年如意康宁、好事连连。