通过二进制进行遮罩分离,最多可以进行二十四张通道信息的保存(不可保存过度信息)
结果发现在实现的过程中、占用太大的内存,(由于对储存的要求比较高,不能有偏差,不然会出现错误如下图)
当我用默认的DX1保存的时候就会出现问题,
其实在编辑器中就可以发现,纹理已经丢失了。所以对需要进行特殊设置
进行单通道进行保存,然后在材质中进行通达分离。
但是,设置无损后的图片大小太大。导致并没有起到很好的作用,(两者都未进行生成mipmap)
普通512的遮罩大小
“特殊设置”的大小
所以不管是从性能上,和内容上并不能进行节约(写文章的时候发现,随后又进行测试)
测试用灰度图的时候发现,可以节约一丢丢。(以前一个图片存三个通道,如果用灰度图一个图片只要一个通道)
相当于之前的节约了一个A通道的大小。可以说节约一点点的资源。
最终得出结论:想要节约资源就需要可以使用单通道遮罩。(放弃了过度效果,得到每24个遮罩节约256kb的大小,个人感觉并划不来,但是坑都踩了,就记录一下。)
说一下实现的方法把。
现在PS 中进行制作遮罩,但是一定要注意,颜色都是二进制对应的颜色(混合模型选择线性叠加)。(这样可以进行位判断)
导入游戏后你的其他设置都可能会导致图片的偏差。
主要思路就是把数值进行还原成255区间、然后进行位判断。进行输出对应的通道。进行遮罩。
input R(float);
output Float4;
int4 A;
int x;
int y;
int z;
int w;
int b = R*255;
A.x = b&1;
A.y = b&2;
A.z = b&4;
A.w = b&8;
float4 a= saturate(A);return a;
//如果不用 由于Ue 会把图片转换成0-1的float 类型的。不是很准确, 需要转换成int值进行换算。(float会出错)
基本实现思路就是这个样子
优点:可以单张图片进行储存大量的遮罩
缺点:单张图片资源过大,需要对其进行单独设置。
单张512x512 的大小(压缩格式为DXT)为:128kb
灰阶大小位:256kb,
遮罩设置向量置换为:1024kb,
踩坑记录。不写不知道有这么多问题,写出来才发现问题有很多。