图片储存通道新思路==二进制进行储存(试错,不是最佳解决方案)

通过二进制进行遮罩分离,最多可以进行二十四张通道信息的保存(不可保存过度信息)

结果发现在实现的过程中、占用太大的内存,(由于对储存的要求比较高,不能有偏差,不然会出现错误如下图)

当我用默认的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,

踩坑记录。不写不知道有这么多问题,写出来才发现问题有很多。

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值