1. 程式人生 > >遊戲中紋理壓縮格式之Texture屬性

遊戲中紋理壓縮格式之Texture屬性

記載目錄

1.雜言雜語
2.Texture屬性
    a).Texture紋理特有屬性設定
        Default 及特有設定
        Normal map 及特有設定
        Sprite(2D and UI) 及特有設定
    b).Texture紋理通用屬性設定
3.優化設定
4.參考文章

雜言雜語

遊戲貼圖,對於每個遊戲程式設計人員來說都是不可避免要接觸到的東西。這裡就texture屬性做一個粗略的介紹。隨著Unity版本升級對於屬性的設定表現會有所不同,但大體都是一樣的。
我這裡所使用的Unity版本是5.5.1f。
關於貼圖有些地方我也搞不明白,如果有描述錯的希望指正。

Texture屬性(轉載)

1) Texture紋理特有屬性設定

TextureType

Default 這裡的預設型別也是以前版本的Advance版本,主要引數有:

Advance 主要引數

  1. Non Power of 2 圖片尺寸非2的整數冪次。若選擇影象尺寸非2的整數冪次可選擇該項,會將該影象縮放為2的整數冪次。
    -None: 對影象不進行處理
    -ToNearest:到最接近的尺寸。將影象縮放到最接近2的整數次冪的大小。
    -ToLarger:到較大的接近尺寸。
    -ToSmaller:到較小的接近尺寸。
  2. Read/Write Enabled 讀/寫啟用 擇該項將允許從指令碼訪問紋理資料,同時產生一個紋理副本,使用會消耗雙倍記憶體
  3. Generate Mip Maps 生成Mip Maps。勾選該項將生成Mipmap。當紋理在螢幕上非常小的時候,Mipmaps 會自動呼叫該紋理較小的分級。
    a.) Border Mip Maps:選擇該項代表避免色彩滲出邊緣。一般應用於燈光遊戲物件的Cookie。
    b.) Mip Map Filtering:Mip Map過濾方式
    1) Box:採取最基本的方法處理mipmaps級別,隨著紋理尺寸的減小,將mip級別做平滑處理。
    2) Kaiser:此種是隨著紋理的減小對mip maps進行銳化的演算法。該方法可以改善紋理在攝像機與紋理的距離過遠時出現的紋理模糊問題。
    c.) Fadeout Mip Maps:淡出Mips。勾選該項將使mipmaps隨著mip的級別褪色為灰色,該方式適用於detail maps(細節貼圖)
Normal map:法線貼圖 法線貼圖型別。選擇此型別,可將影象顏色通道變成一個適合於法線對映的格式。
Createfrom Grayscale: 依據灰度值產生Alpha通道。選擇此項,依據影象自身的灰度值計演算法線貼圖的凹凸值。
    Bumpiness:凹凸強度調節,該項用來控制貼圖凹凸的量。
    Filtering:過濾。控制法線貼圖的凹凸的計算方式。
        Smooth:平滑,產生的法線貼圖比較平滑。
        Sharp:銳化,產生的法線貼圖更加清晰、銳利。
Sprite(2D and UI):精靈
 UGUI 打包圖集專用;
 才疏學淺的我不會UGUI,所以這裡省略一萬字。

Texture紋理通用屬性設定

Wrap Mode:貼圖與貼圖之間的拼接模式 此屬性可以理解為我們設定電腦桌面背景時的平鋪和拉伸
    平鋪對應Repeat 在不改變圖片原有大小的情況下通過多張圖片拼接來鋪滿物件
    拉伸對應Clamp  通過拉伸圖片的邊緣鋪滿物件。
Filter Mode 過濾模式
    過濾模式是什麼東西呢?這還得從貼圖貼在三維物體表面的演算法說起
    我們的貼圖貼在三維物體表面上是需要經過三維圖形對貼圖進行計算後進行附著
    但是三維物體表面和貼圖的表面的面積並不是相等的。當 貼圖 相對三維物體表面積 過大或過小時就是對貼圖進行拉伸或者縮小,造成變形 貼圖糊了,這過濾模式就是填補這糊法的演算法來的。
    過濾模式主要有三種:
    Point:(近點取樣)
        每個畫素的紋理座標,如果剛好不是對應Texture上的一個取樣點texel,就取樣取最接近的texel進行取樣。
    Bilinear:(雙線性過濾)
        雙線性過濾以pixel對應的紋理座標為中心,採該紋理座標周圍4個texel的畫素,再取平均,以平均值作為取樣值。
    Trilinear:(三線性過濾)
        三線性過濾以雙線性過濾為基礎。會對pixel大小與texel大小最接近的兩層Mipmap level分別進行雙線性過濾,然後再對兩層得到的結果進生線性插值。
        三線性過濾在一般情況下效果非常理想了。但是到目前為止,我們均是假設是texture投射到螢幕空間是各向同性的。但是當各向異性的情況時,效果仍然不理想,於是產生了AnIso Level各向異性過濾)。

優化設定

Read/Write Enabled
擇該項將允許從指令碼訪問紋理資料,如果允許則會產生一個紋理副本,使用會消耗雙倍記憶體
Generate Mip Maps

勾選和不勾選的區別

Filter Mode
過濾模式在記憶體佔用上並不會有變化,變化主要在GPU上。為了減輕GPU負擔。
如果是UI貼圖,直接選擇雙線性過濾一般都夠用了。
如果是場景中的貼圖和人物身上的貼圖才使用三線性
Point過濾模式沒有用於專案實戰過,可曾經測試過在移動貼圖的時候貼圖的邊會變得有缺口
就是類似於下圖

Point過濾模式的缺陷模擬圖

參考文章

http://blog.csdn.net/dk_0520/article/details/68946504
http://blog.csdn.net/puppet_master/article/details/53485919
http://www.xuanyusong.com/archives/2697