您的位置:首页 > 其它

关于U3D贴图格式压缩

2015-06-15 17:47 393 查看
各种纹理格式,大家参照下U3D MANUAL里面的具体描述介绍,这是官方的东西。但我觉得有一部内容是错的,例如占用内存大小。
http://docs.unity3d.com/Manual/class-TextureImporter.html
基本知识点:

DXT格式是Nvidia Tegra提供的,ETC是安卓原生支持的,OPNEGL2.0都支持。ETC2只有OPENGL3.0支持,PVRTC是Imagination PowerVR提供的,ATC是Qualcomm Snapdragon提供的。一般来说,IOS只支持PVRTC的压缩格式。一旦相应的贴图格式不兼容的时候,U3D会自动将其转换成RGB(A)格式。最好的兼容是针对GPU进行打包,例如针对小米的都用ATC格式,但一般开发做不到太细化的选择。所有设备对RGB 16BITS/ARGB 16BITS/RGB
A16BITS/RGB 24BITS/ARGB 32BITS等支持都很好,只是这些格式算是非压缩格式,对内存消耗和渲染消耗非常不友好。

关于压缩后的在储存上的大小,假设高清(ARGB32)大小为1,那么大概数据如下:

RGB PVRTC 4BITS:0.25

ARGB PVRTC 4BITS:0.25

RGB PVRTC 2BITS:0.13

ARGB PVRTC 2BITS:0.13

RGBA ETC2 4BITS:0.25

RGBA ETC2 8BITS:0.25

RGB + 1-bit ALPHA ETC2 8BITS:0.2

DXT1 :0.3

DXT5 : 0.6

ARGB 16BITS:0.33

RGB 16BITS:0.5

RGB 24BITS:0.85

ARGB 32BITS:1

当然每个都是根据图片不一样而不一样的,以上只是大致数据并非准确数据。

测试方法:单独为改为这样贴图格式的文件打成ASSETBUNDLE看大小。

对此抱有比较大疑问的是ARGB 16 和RGB 16,感觉可能这里U3D的BUNDLE有BUG。

内存中的大小,假设高清(ARGB32)大小为1,那么大概数据如下:

RGB PVRTC 2BITS:0.0625

ARGB PVRTC 2BITS:0.0625

RGB PVRTC 4BITS:0.125

ARGB PVRTC 4BITS:0.125

RGBA ETC2 4BITS:0.125

RGBA ETC2 8BITS:0.25

RGB + 1-bit ALPHA ETC2 8BITS:0.125

DXT1 :0.125

DXT5 : 0.25

ARGB 16BITS:0.5

RGB 16BITS:0.5

RGB 24BITS:0.8

ARGB 32BITS:1



建议如下:

一般来说3D游戏我们压缩贴图的时候会把贴图分为UI贴图和场景模型贴图来考虑,主要是因为有多重采样的缘故。3D游戏一般来说都是受摄像机远近大小改变而采取不同的采样大小,假设不设置多重纹理采样的话,在远处会有非常多的白色噪点。

2D游戏的话,所有都不需要勾选多重采样,具有3D性质的贴图,我们都需要勾选上GENERATE MIP MAPS,这样会使贴图大小增加25%这样。

正方贴图与非正方贴图也要区分。非正方贴图只有16位的压缩(相当于真彩色减半),所以最好游戏中都是正方的贴图。以下是个人选择贴图压缩格式遵循的一些规则,大家可以参考下,若有问题可以一起交流一下。

正方贴图:

IOS下:

a.普通不透明:RGB PVRTC 4BITS

b.普通透明:RGBA PVRTC 4BITS

Android下:

a.普通不透明:RGB ETC 4BITS

b.普通透明:

因为没有通用最兼容的格式,所以一般情况是用RGBA 16BIT或有针对性的选择DXT5/ATC8 BITS/ETC2 8BITS。如果有技术支持,可以采用RGB ETC 4BITS加一张ALPHA 8的贴图来实现透明效果。

非正方贴图:

一般采用16位压缩,16位会带来颜色损失,但如果本来美术就是按16BITS画的话,就不会损失,日本好些手游都是按16BITS来画的。这样的游戏一般少渐变艳度高比较容易看出来。

a.不透明贴图: RGB 16BITS

d.透明贴图:RGBA 16BITS

高清不压缩贴图:

RGBA 32BIT

另外:

对于不重要的贴图,模糊度低的贴图,建议不仅要采取像素压缩,还要直接压缩其大小。如光照贴图压到512或256。如背景原本1024的图直接压到256。玩家不注意到就可以了。

将Texure
Type设置为Advanced时纹理的格式列表
格式
详解
Automatic Compressed
压缩RGB纹理,默认选项,常用的漫反射纹理格式。4位/像素(32KB,
256x256)
RGB Compressed DXT1
压缩的RGB纹理。常用的漫反射纹理格式。4位/像素(32KB,
256x256)
RGBA Compressed DXT5
压缩的RGBA纹理。是漫反射和高光控制纹理的主要格式。1字节/像素(64KB,
256x256)
RGB Compressed ETC 4bits
压缩的RGB纹理,是Android工程默认的纹理格式,不支持alpha通道。(32KB,
256x256)
RGB Compressed PVRTC 2bits
压缩的RGB纹理,支持Imagination
PowerVR GPU2位/像素 (16KB,
256x256)
RGBA Compressed PVRTC 2bits
压缩的RGBA纹理,支持Imagination
PowerVR GPU2位/像素 (16KB,
256x256)
RGB Compressed PVRTC 4bits
压缩的RGB纹理,支持Imagination
PowerVR GPU4位/像素 (32KB,
256x256)
RGBA Compressed PVRTC 4bits
压缩的RGBA纹理,支持Imagination
PowerVR GPU
4位/像素 (32KB,
256x256)
RGB Compressed ATC 4bits
压缩的RGB纹理,支持Qualcomm
Snapdragon,4位/像素 (32KB,
256x256)
RGBA Compressed ATC 8bits
压缩的RGB纹理,支持Qualcomm
Snapdragon,8位/像素 (64KB,
256x256)
Automatic 16bits
RGB彩色,16位彩色图最多可以有2的16次方种颜色(低质量真彩色)
RGB 16bits
65万色不带alpha,比压缩的格式使用更多的内存,适用UI纹理(128KB,256x256)
ARGB 16bits
低质量真彩色,具有16级的红绿蓝和alpha通道(128KB,
256x256)
RGBA 16bits
Automatic Turecolor
最高质量的真彩色,也就是32位的色彩(256x256的纹理大小为256KB)
RGB 24bits
真彩色不带alpha通道(192KB,
256x256)
Alpha 8bits
高质量alpha通道,不带颜色(64KB,
256x256)
ARGB 32bits
真彩色带alpha通道(256KB,
256x256)
RGBA 32bits
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: