看過敏敏的
今年2、3月份曾經整過這玩意,做到用tangent.w來存handedness,解決了uv mirror的問題
沒想到頂點資料壓縮還有這麼深的學問,於是乎按照資料對max外掛程式進行了修改,效果超出想象
目前做到使用unsigned char x 4來存normal和tangent,short x 2來存texcoord,我們可以大致算一下
之前是normal = float x 3,tangent = float x 4,texcoord = float x 2(還要看一共有幾層uv) ,一共是12 + 16 + 8 = 36
壓縮之後變成normal = unsigned char x 4,tangent = unsigned char x 4,texcoord = short x 2,一共是4 + 4 + 4 = 12
每個頂點從36位元組減少到12位元組,少了一半多,通過觀察乙個20000多面的模型,mesh的大小從1388kb減少到552kb,壓縮後是原大小的0.39倍
還沒有像文中介紹的那樣將tangent frame壓縮到僅用8個位元組的程度
其優點是資料量大大減少,這樣vertex cache的命中率會提高,據觀察fps有約5%的提高
其缺點是vs中的計算量稍微增加了一些,另外壓縮導致精度上會有損失
float f =
0.1234567f;
unsigned
char uc = (unsigned
char)((f *
0.5f +
0.5f) *
255);
short s = (
short)((f *
0.5f +
0.5f) *
32767.0f);
float unpackuc = uc *
2.0f /
255.0f -
1.0f;
float unpacks = s *
2.0f /
32767.0f -
1.0f;
unpackuc =
0.12156863
unpacks =
0.12344737
法線對映基本原理和相關的頂點資料壓縮
法線對映我也是剛學會的,呵呵 輸入到固定渲染管線的頂點結構雖然可以定製,但也不是完全自由的,比如頂點位置必須是float3,紋理座標float2,法線float3等等。如果使用可程式設計管線,由於vs的輸入可以自由解析,所以相對來說就增加了很多靈活性。在使用切線空間的法線對映 normalmap 時...
ASIHTTPRequest 資料壓縮
從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。apache 2.x以上版本已經配備了mod deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod deflate。並將mod de...
ASIHTTPRequest 資料壓縮
從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。apache 2.x以上版本已經配備了mod deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod deflate。並將mod de...