當前位置:遊戲中心平台 - 遊戲盒子 - 紋理壓縮介紹DXT PVR等

紋理壓縮介紹DXT PVR等

涉及

為什麽需要紋理壓縮?

移動紋理壓縮格式

幹貨:Unity遊戲開發圖片紋理壓縮方案

Creator使用壓縮紋理。

常用的紋理和紋理壓縮格式

面向移動設備的紋理壓縮方案

各種移動GPU壓縮紋理的使用

紋理在軟件開發中隨處可見,尤其是在3D應用中,但由於網絡環境和硬件能力的原因,它也是壹個瓶頸。而且在壹般的三維應用中,紋理的大小基本都在1/2以上,在模型中往往超過2/3。也許妳會說,質感不就是壹張圖嗎?有那麽重要嗎?下面兩張對比圖,妳可能覺得前者太高了,但對於正常人來說,後者顯然好很多。正是紋理給骨骼賦予了皮膚,使得我們的應用更加真實,更加貼近現實。

妳能想象嗎?上面的模型1 * * *有三個紋理,其中壹個有如下效果:

紋理拼接是紋理壓縮的開始,不同的壓縮方式對紋理最終大小的影響也是顯著的。比如上面的紋理在不同壓縮格式下的大小差異也非常顯著(原文件為tga格式,通過Photoshop轉換為其他格式,默認選項):

與png、jgp等硬盤壓縮方式不同,DXT、ETC等紋理壓縮方式在遊戲運行過程中無需CPU解壓,直接由GPU采樣,可以大大減少內存和帶寬的占用,提高運行效率,尤其適用於手機遊戲。

1.DXT

DXT是微軟Direct支持的壹種有損紋理壓縮算法。DXT的格式有DXT1~DXT5,其中DXT1和DXT5比較常見,後面會詳細討論。可以說DXT是目前應用最廣泛的紋理壓縮格式,所有的PC端顯卡都可以支持DXT壓縮。根據維基百科,該專利的有效期至2017 10 2月2日。

DXT算法非常容易理解,整體效果看起來不錯。但是如果妳把壹部分封閉起來,妳會發現會有很多細節丟失,這也是算法本身造成的。畢竟每個塊只有兩種顏色,其他顏色就是這兩種顏色的區別。如果當前區域有其他顯著的顏色,它將丟失。

另壹個問題是DXT3和DXT5的對比度。與不支持透明(但支持透明)的DXT1相比,DXT5大了壹倍(多了64位)。和之前的色彩保存方案壹樣,也保存了兩種16位的顏色和對應的調色板進行透明,保證了在RGBA上的效果,但是DXT3的思路不同。它為每個像素節省了4bit的透明度,也多了64bit,但此時畢竟只有16個透明度選項。與DXT5相比,壓縮比相同,但對透明色的處理不夠細膩,實用性上不推薦DXT3。

雖然DXT在細節上有明顯的瑕疵,但整體效果還是不錯的,確實是壹種很強大的壓縮方式,所以是大多數紋理壓縮選擇中的最優方案,幾乎可以算是PC下的標準壓縮格式。

2.PVR & amp;等等

也許從專利和商業的角度來看,也許DXT在移動端達不到要求是真的。DXT在移動端沒有得到很大的支持。相反,它支持iOS設備中的PVR壓縮和Android中的ETC壓縮。

DXT在細節上有明顯的缺陷。最重要的原因是當紋理被劃分成4*4像素的區域塊時,每個塊都是獨立的。雖然這極大地簡化了壓縮算法,但它失去了相鄰塊之間的這種普遍相似性。這是算法本身造成的,PVR會考慮區域塊對應的右下右下三個區域塊的相關性。

從現實的角度來看,受制於專利和硬件廠商,我們沒有太多的選擇。Android下我們會用ETC,iOS下只用PVR,PC上沒有DXT估計會被嘲諷。但是,這也是壹個很難的問題。比如在WebGL下,尤其是Android下,差別很大。支持紋理壓縮嗎?即使在同壹設備的不同瀏覽器中,因為驅動不壹致,系統可能支持ETC壓縮,但不支持微信等QQ瀏覽器。而且華為手機在瀏覽器層面似乎不支持ETC(硬件支持或者驅動問題)。如果在移動設備上不需要壓縮,內存是有限的。除非在數據量上做出犧牲,否則如何解決是很矛盾的。相比之下,iOS下就舒服多了。

Unity官網給出了各平臺默認紋理壓縮格式的詳細說明和使用建議。需要註意的是,通過選擇不同移動GPU平臺下GPU支持的壓縮紋理,可以直接由GPU采樣,無需CPU解壓,節省了CPU內存和帶寬,也節省了存儲體積。如果目標平臺不支持設置的壓縮格式,紋理會被解壓縮為RGBA32或RGB24,浪費CPU時間和內存。

參考幾種主流地圖壓縮算法的實現原理。

由於IOS9(A8架構)蘋果手機已經支持ASTC壓縮格式,如果考慮放棄蘋果6代之前手機的兼容性問題,可以直接使用。相比PVRTC2/4,ASTC(4X4)的壓縮比會提高到0.25,但顯示效果會好很多,而且不需要把畫面設置成正方形。

詳細描述了對遊戲資產使用Astc紋理壓縮,並給出了壹些建議,即針對不同的紋理類型給出不同的壓縮方案。

1.雅拉問答H5遊戲可以使用壓縮紋理(ETC,PVR等。)?

問:問:H5遊戲可以使用壓縮紋理(ETC,PVR等。)?

答:有些瀏覽器會不支持(比如safari)。

問:在雅拉可以根據不同的瀏覽器(或者不同的平臺)使用不同壓縮格式的紋理嗎?

答:可以自己獲取當前瀏覽器,自己處理就好。

2.layarunt me目前是否支持ETC/DXT或PVR等格式?在文檔中沒有找到這樣的描述。

LayaAir目前不支持ETC/DXT/PVR等格式!只要關註layaAir的版本引擎更新日誌,如果支持我們會及時通知妳!

3.Egret內存分析-存在雙內存在-RES加載資源後無法釋放的問題。

已經計劃支持pvr和etc。

  • 上一篇:螞蟻莊園27日內容?
  • 下一篇:幼兒園文明禮儀教育計劃
  • copyright 2024遊戲中心平台