unity 紋理壓縮格式‘_紋理優化:讓你的紋理也“瘦”下來

7b32817705238926a81cd480fc0f9e3e.png

在上一期《紋理優化:不僅僅是一張圖片那么簡單》中,我們針對紋理相關的優化,挑選了部分知識點分析。無論是大家在開發時的疏忽,還是對相關知識點的理解不足,這些問題的積累最終都會反映到項目的性能表現上。為此,我們將這些規則列出,并且以一個個知識點的形式向大家逐一解讀。

本文,我們繼續聚焦紋理方面,以UWA本地資源檢測中的檢測規則:“開啟Mipmap選項的Sprite紋理”、“用非壓縮格式的紋理”和“Wrap模式為Repeat的紋理”為大家簡單講解相關的知識點。我們將力圖以淺顯易懂的表達,讓職場萌新或優化萌新深入理解。


1、開啟Mipmap選項的Sprite紋理

350e5c03919b18805f936a9386641f09.png

對紋理而言,在Import Settings中開啟Generate Mip Maps后,Unity就會預生成一系列長寬以2為倍數縮小的紋理序列,一直生成到分辨率為 1*1,在采樣紋理時會根據圖形的大小自動選擇相近等級的Mipmap進行采樣。

32734cee776fdfffc42019288b1bf7c5.png

在3D場景中,由于距離問題,物體的紋理需要經常被縮放、拉伸,所以使用Mipmap會減小運行過程中的計算量,提升GPU效率。

需要注意的是,開啟Mipmap選項后,生成的多個小分辨率紋理會使得總體內存占用比原來多出1/3。在UI中,由于不存在元素相對于相機的位置不斷變化的需求,一般情況下也不需要頻繁縮放圖片(特殊需求除外),所以對UI而言Mipmap的存在對性能提升其實是沒有意義的。

1817c0f32a57e30c6a5c5d003340703c.png

本條規則的主角——Sprite類型的紋理,就是應用在2D游戲或者UI當中的,所以我們不建議開啟Mipmap,以避免造成內存上的浪費。


2、使用非壓縮格式的紋理

b271672770d726493bf283f7476c53ad.png

首先我們要區分圖片文件格式和引擎中支持的紋理格式。對圖片而言,諸如JPG、JPEG和PNG等多種文件格式是為了存儲圖像信息而使用的、對信息的特殊編碼方式,它存儲在磁盤中或者內存中。

但圖片的這些格式,對于以向量計算見長的GPU來講就有種面對陌生外語時的“無能為力”了。3D圖形硬件不支持原始的圖片文件格式,原始圖片需要經過CPU轉換成圖形硬件支持的格式才能在實時渲染中使用。而這些可以被GPU識別的格式,就是我們要說的紋理格式。

a2aef4394bdf8dafaeb86ba8b9be2d44.png

我們可以在Format里設置紋理的格式。不同的設備與平臺具有各自專有的支持的格式。RGB32/RGBA32/RGBA24/RGB24為非壓縮的格式,能適用于多個平臺和環境。這些格式顯示效果較好,但內存占用較大,效率不高。因此我們建議在對圖像質量要求不是特別高的情況下,盡量使用硬件支持的壓縮格式。

這條規則會過濾出所有采用非壓縮格式的紋理,開發團隊需要基于相關紋理的實際使用需求和在相關平臺上表現效果的考量,來決定是否需要進行壓縮。

目前Unity支持的紋理壓縮格式有ETC、ASTC、PVRTC和DXT等,各有不同的適用環境,在壓縮的大小和保真度上也各有所長。對于壓縮格式的使用,可以參考UWA問答上的帖子:https://answer.uwa4d.com/question/58d2943ae00cc20065a42597。


3、Wrap模式為Repeat的紋理

a9ad461fd79818c10a029a0c952e07be.png

一般而言,我們使用UV坐標構建起模型表面在紋理上的對應采樣關系,UV坐標的采樣范圍在0~1之間。但實際開發過程中,有時會遇到“在UV坐標0~1以外的范圍進行采樣”的情況。

64db4371ca08938b553c4aa7c1577907.png

Wrap Mode 選項就是用來確定當紋理坐標(UV坐標)超出0~1范圍時如何采樣的。形象點來講,這種情況有點像是在畫框里放入了一張尺寸比框小的畫作,WrapMode決定了以何種方式去填充畫作與畫框間的部分。我們將在這里介紹常用的兩種方式:Repeat和Clamp。

在Unity中,Texture的Wrap Mode默認是Repeat。該方法以平鋪的方式填滿“畫框”的剩余部分。對于如下圖所示的一張紋理:

37e2c818f014c5668b260da79c148426.png

Repeat模式的實際顯示效果如下:

0aac685c8c98b148a7d67fcc8a050f06.png

而對于Clamp模式,它會以“畫作”邊緣那一圈去采樣填充滿“畫框”中剩余的部分。從UV坐標的角度而言,該模式會將大于1.0的數值設置為1.0,將小于0.0的數值設置為0.0。其顯示效果如下:

f67ea5ba7913efbc153cd2340cec88e1.png

那么我們為什么要將Repeat模式的紋理檢測出來呢?因為在實現方法上,當UV坐標超出0~1范圍時,Repeat模式會忽略紋理坐標的整數部分,并將紋理圖的拷貝粘貼在物體表面上。這就要求在紋理頂部的紋理單元應與底部的紋理單元相匹配,在紋理左側的紋理單元也應與右側的紋理單元相匹配,這樣才能做到無縫連接。若無法滿足兩側無縫銜接的要求,在最終顯示的圖像邊緣會出現雜色,如下圖所示:

2f3ffb4478b665613f89f4c1e50a6f06.png

所以從表現效果上講,Repeat模式有可能會使得紋理邊緣看起來更不自然。所以在篩選出WrapMode中選擇了Repeat模式的紋理后,開發團隊要根據紋理的實際展示效果去選擇合適的WrapMode模式。


希望以上這些知識點能在實際的開發過程中為大家帶來幫助。需要說明的是,每一項檢測規則的閾值都可以由開發團隊依據自身項目的實際需求去設置合適的閾值范圍,這也是本地資源檢測的一大特點。同時,也歡迎大家來使用UWA推出的本地資源檢測服務,可幫助大家盡早對項目建立科學的美術規范。

265b965a73e238a81537239d4fdb646f.png

我們已支持Luacheck功能啦~我們已支持粒子特效檢測~這么多實用貼心的功能你們還沒用起來嗎?

萬行代碼屹立不倒,全靠基礎掌握得好!

性能黑榜相關閱讀

《那些年給性能埋過的坑,你跳了嗎?》
《那些年給性能埋過的坑,你跳了嗎?(第二彈)》
《掌握了這些規則,你已經戰勝了80%的對手!》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533431.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533431.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533431.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2020中級計算機工程師,2020年上半年中級網絡工程師報考詳解

原標題:2020年上半年中級網絡工程師報考詳解軟考全稱叫做“全國計算機技術與軟件專業技術資格(水平)考試”已經開展了十多年了,所受到的歡迎程度也是越來越高,據統計累計參加軟考的人數已超300萬人,同時每年以21萬人的速度持續增加…

華科計算機復試ccf成績,新鮮速遞!剛擬錄取華科學妹總結的復試攻略,快看

原標題:新鮮速遞!剛擬錄取華科學妹總結的復試攻略,快看今天給大家分享一位19考研學妹的面試經驗,她報考華中科技大學,已擬錄取!復試已落幕,在火車上收到擬錄取通知后,感覺自己就像一…

php負載均衡原理_負載均衡的原理(通俗理解)

簡單的來說,假設,你在放洗腳水,并且,當前你只有一洗腳盆。那么,你的洗腳水不管有多少,你最多就能裝一個洗腳盆的這個就是,單服務器應用場景,你的流量就是洗腳水,然后&…

存儲器是計算機的記憶裝置,存儲器(Memory)

存儲器(Memory)存儲器是計算機的記憶裝置。它的功能是存放原始數據、中間數據、運算結果和處理問題的程序。存儲器通常是按地址進行存取數據和程序的。它由許多存儲單元組成,每個單元存放一個若干二進制的數據代碼。為了區分不同的存儲單元,把存儲單元按…

光影mod_MOD墨設設計丨天海之間的烏托之城

WWW.DINZD.COM“人當詩意地棲居”——海德格爾銀湖灣最后一塊稀缺資源,陸止于此,海始于斯。也許會在地圖上迷失,但是卻如仙境般存在,靜謐而神圣,神秘而平和。城市展館 空靈圣潔,隱市秘境天空之盡&#xff0…

計算機繪圖中特征建模的概念,2016年電大 -機械cadcam計算機輔助設計制造習題集.doc...

2016年電大 -機械cadcam計算機輔助設計制造習題集機械CAD/CAM技術習題集青島科技大學CAD中心復習大綱概述掌握CAD、CAE、CAM、CAPP及CAD/CAM系統集成的含義了解硬件組成及分類,掌握聯機系統的聯網方式了解CAD/CAM硬件及軟件的組成了解CAD/CAM系統的功能和任務熟練掌…

逆向查找_「函數說12」數據逆向查找很復雜?match+index讓你輕松搞定

EXCEL進階課堂 函數說 持續更新,這是第12篇教程。歡迎各位小伙伴轉發、點贊、討論,更歡迎私信獲取練習素材,刻意練習才能學有收獲。第12講:如何輕松的實現數據逆向查找——matchindex01 問題引入前面給大家介紹vlookup函數后&…

計算機輔助審計的特點是,淺談新環境下計算機輔助審計的特點和應用_1

淺談新環境下計算機輔助審計的特點和應用_1 (7頁)本資源提供全文預覽,點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧,查找使用更方便哦!24.90 積分從本學科出發,應著重選對國民經濟具有一定實用價值和理論意義的課題。課題具有先…

規培手冊填寫模板_9年老資料員經驗分享,181套資料員模板+302頁工作手冊,成為優秀資料員還能提高工作效率,限時分享...

一個工程項目中,資料員是不可缺少的,資料員主要負責工程的資料收集、編制和整理等工作內容。一個優秀的資料員價值千金,如何才能成為一個優秀的資料員?今天帶來的是在工程中9年資料員的老工編制的資料員工作模板,還有3…

云服務器重裝系統后卡頓,云服務器Windows重裝系統須知

我們Windows2003/2008/2012中文和英文版本可供安裝,安裝需注意:1.Windows2003安裝后,請通過VNC登錄系統設置密碼,默認密碼為空,否則將無法遠程登錄!2.Windows2008/2012系統安裝后,請嘗試使用您設…

dict下如何取值_年薪百萬之路--第十七天 裝飾器(下)和迭代器

一 有參裝飾器>帶有參數的函數裝飾器為被裝飾對象添加認證功能的裝飾器,實現的基本形式如下def deco(func):def wrapper(*args,**kwargs):編寫基于文件的認證,認證通過則執行resfunc(*args,**kwargs),并返回resreturn wrapper如果想提供多種不同的認證方式以供選…

英雄聯盟掉線怎么不顯示重新連接服務器,Win7旗艦版系統玩英雄聯盟掉線總是顯示正在嘗試重新連接如何解決...

英雄聯盟這款游戲想必大家都非常熟悉吧,然而在玩的過程中總是會碰到一些情況,比如有不少win7旗艦版系統用戶在玩英雄聯盟的時候,遇到掉線了,總是顯示正在嘗試重新連接,該怎么辦呢,本文就給大家講解一下Win7…

cobaltstrike擴展_Malwarebytes:使用可變C2下發Cobalt Strike的APT攻擊

6月中旬,Malwarebytes Labs的研究人員發現了一個偽裝成簡歷的惡意Word文檔,該文檔使用模板注入來刪除.Net Loader。研究人員認為這是與APT攻擊有關的多階段攻擊的第一部分。在最后階段,威脅行動者使用了Cobalt Strike’s Malleable C2功能來下…

c mvc ajax 返回下拉框,SpringMVC之ajax+select下拉框交互常用方式

Insert title here//ajaxselect三種常用交互方式window.οnlοadfunction(){test();}function test(){alert("執行");var start 0;var size100;var headNo "111111";$.ajax({type : "post",url : "/ssm_pms/admin_group/list", //此…

浙江大學計算機保研條件_【如何將保研成功率提至100%】來自取得浙大等五所頂尖院校保研資格學長的干貨分享(聯系導師章節已更)...

一、前言寫在開頭:白駒過隙,距離2020年9月28日保研系統確認擬錄取已經過去了四個半月了,期間多次有想要寫下從了解,到準備,到參與,到錄取的整個保研過程,同時分享一些自己踩過的雷,總…

怎么把BAK文件放入服務器中,BAK格式的備份文件如何導入審計軟件

首先:電腦上得安裝有SQL數據庫,并開啟;一般來說,只有以SQLSEVER數據庫存儲的都可以用數據庫軟件,對備份文進行取數;1)在審計系統里面導入bak,必須滿足前提條件:自己電腦上安裝有sqls…

貝殼如何docker安裝openwrt_OpenWrt 中 使用 Docker 安裝可道云出錯。

Nginx 和 PHP 鏡像:[email protected]:~# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEphp 7.2-fpm 2f2db309f0ae 2 weeks ago 365MBnginx latest 274c632b9f13 2 weeks ago 125MB容器代碼docker run --name myphp-fpm -v /opt/nginx/www:/www -d php:7.2-fp…

手機顯示無法接通服務器是怎么回事,手機無法接通是什么原因及如何解決【圖文】...

手機,已經成為我們日常生活中必不可缺少的電子產品,不論男女老少一般都配備有一部手機,有些人甚至配備了兩部、三部手機。手機的主要功能是通訊功能,給別人撥打電話或者接聽別人撥打的電話。有時候我們在撥打別人電話的時候可能會…

spark算子大全glom_(七)Spark Streaming 算子梳理 — repartition算子

目錄天小天:(一)Spark Streaming 算子梳理 — 簡單介紹streaming運行邏輯天小天:(二)Spark Streaming 算子梳理 — flatMap和mapPartitions天小天:(三)Spark Streaming 算…

爐石傳說服務器維護有補償嗎,爐石傳說維護公告全文及具體補償方案 爐石數據回檔怎么補償?...

爐石傳說超長維護事件的最終解決方法是回檔到1月14日,并且會有一定的補償,下面是官方公告各位親愛的爐石玩家,首先向大家抱以最誠摯的歉意,同時也感謝大家在游戲維護的這段時間的耐心等待以及關注。上周六下午(北京時間1月14日15:…