自從ETQW的beta發布以來,一直對MegaTexture比較感興趣,也花了點時間來研究這個比較新的技術,嚴格來講,ETQW中使用的跟ClipTexture非常的類似,真正的MegaTexture應該是在ID tech5里面的全場景的動態貼圖處理,不過ClipTexture在某些特定的領域還是很有用處.
在此共享一個小工具MegaTexDump,用來從Mega文件中,提取貼圖,可以看看整個MegaTexture的全貌.
以下的貼圖是在crack時分析的片斷.
mrTony/PeonyGarden
Art&Science
|
|
|
struct Chunk
{
int pos;
int len;
}
MegaFile{
struct Header
{
int ID;//"MEGA"
int versionNum;// 9
int baseSize;// 0x800h = 2048, 最小的紋理尺寸.
int unknown;
int unknown[10];
Chunk index[87296];
} Header;
Data:
....
....
...
}
其中87296 = 256 + 1024 + 4096 + 16384 + 65536;
(level4) (level3) (level2) (level1) (level0)
index為每一級紋理的數據索引,紋理分塊,每塊分別進行壓縮,具體的壓縮算法沒有去深入分析,應該是DCT變換.