最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

貼圖打包格式優(yōu)化(上)

2022-09-27 18:49 作者:獨(dú)立游戲人-老雷  | 我要投稿

前言

  • 今天要給大家分享的內(nèi)容是游戲開(kāi)發(fā)正式開(kāi)發(fā)完成后,在準(zhǔn)備打包時(shí)的打包貼圖格式選擇問(wèn)題

  • 如果商業(yè)游戲項(xiàng)目在打包時(shí)沒(méi)有選擇好打包格式,那么對(duì)于游戲包體的大小、加載運(yùn)行速度是會(huì)有比較大的影響的

  • 所以商業(yè)游戲開(kāi)發(fā)中必須要考慮到的貼圖打包優(yōu)化問(wèn)題,本文要帶給大家的就是貼圖打包優(yōu)化的方方面面

版權(quán)聲明

  • 本文為“優(yōu)夢(mèng)創(chuàng)客”原創(chuàng)文章,您可以自由轉(zhuǎn)載,但必須加入完整的版權(quán)聲明

  • 更多學(xué)習(xí)資源請(qǐng)加QQ:1517069595或WX:alice17173獲?。ㄆ髽I(yè)級(jí)性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對(duì)一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源

主題

  • 模型貼圖包括哪些?

  • UI貼圖包括哪些?

  • 貼圖打包/加載流程

  • 各種貼圖格式的應(yīng)用場(chǎng)景

  • 相關(guān)面試問(wèn)題

  • 貼圖格式如何優(yōu)化

  • 關(guān)于貼圖格式更深層次的思考

什么是模型貼圖?

  • 上圖中最下面的圖片是場(chǎng)景中的一個(gè)銹跡斑斑的小球,它在次世代游戲中是如何被表現(xiàn)出來(lái)的呢?

    • 除了需要一個(gè)小球模型以外,還需要五張貼圖才能夠?qū)崿F(xiàn)完整的小球材質(zhì)表現(xiàn)

    • 這五張貼圖分別是

      • 1,ALBEDO貼圖

        • ALBEDO可以翻譯為漫反射貼圖,它是小球表面的基本顏色,但它跟普通的漫反射貼圖又有一些區(qū)別,ALBEDO貼圖是不包含局部陰影信息的,只包含純顏色信息

      • 2,AO貼圖

        • AO貼圖翻譯成中文叫做環(huán)境遮蔽貼圖,用于存放陰影信息

        • 基本的顏色貼圖是由RGB三種顏色構(gòu)成的,不能進(jìn)行優(yōu)化,而AO貼圖是由黑白灰三種顏色構(gòu)成的,這種貼圖在進(jìn)行打包時(shí)就能進(jìn)行優(yōu)化

      • 3,NORMAL貼圖(法線(xiàn)貼圖)

      • 4,METALLC貼圖(金屬度貼圖)

      • 5,ROUGHNESS貼圖(粗糙度貼圖)

UI貼圖

  • 右邊的這些圖片是從劍網(wǎng)三端游里截取到的背包面板貼圖,可以看出下面背包面板實(shí)際上就是由上面哪些貼圖構(gòu)成的

  • 左邊的游戲場(chǎng)景里也是無(wú)不充斥著UI界面,所以貼圖優(yōu)化的第二個(gè)目標(biāo)就是優(yōu)化UI界面的貼圖

貼圖打包流程

  • Unity引擎層面里的PNG圖片打包流程

    • 由于PNG圖片在Unity引擎里是不能被直接使用的,所以PNG圖片在Unity引擎載入時(shí)會(huì)被轉(zhuǎn)換成2D紋理的通用格式

    • 2D紋理格式在安卓平臺(tái)打包時(shí)會(huì)被打包成ETC2格式,中間會(huì)經(jīng)過(guò)兩個(gè)過(guò)程

      • 1,圖像格式轉(zhuǎn)換

      • 2,圖像壓縮過(guò)程

      • ECT2格式里可能不存在壓縮過(guò)程,但其他圖形格式存在壓縮過(guò)程,這個(gè)壓縮好不好呢?

        • 壓縮是需要消耗壓縮時(shí)間的,但從性能角度上說(shuō),壓縮過(guò)的圖片肯定比沒(méi)有壓縮過(guò)的圖片要好,這取決于不同的圖片格式

    • 在打包時(shí)不可能把一張張圖片散放在磁盤(pán)上面,所以會(huì)把這些圖片打包到一個(gè)AB包里,以便于將來(lái)做遠(yuǎn)程熱更新

    • 游戲里會(huì)有很多AB包,比如模型的AB包、貼圖的AB包、文本劇情的AB包等等,這些AB包最終會(huì)打包形成一個(gè)APK文件,APK文件在安卓上就是一個(gè)安裝文件,用戶(hù)從游戲市場(chǎng)去下載的都是這種APK包

貼圖加載流程

  • 用戶(hù)從游戲市場(chǎng)上下載了APK包,安裝并啟動(dòng)游戲后,Unity引擎會(huì)加載所需圖片所在的AB包,并對(duì)AB包進(jìn)行解包,以得到在前面步驟中打包的ETC2格式圖片,然后將這張圖片進(jìn)一步解壓到內(nèi)存里來(lái),它會(huì)形成一個(gè)二維數(shù)組,這個(gè)數(shù)組里的每一個(gè)元素就是這張圖片的RGB顏色值

  • 由于圖片是通過(guò)顯卡顯示的,所以?xún)?nèi)存里的圖片不能直接用于渲染,需要把它加載到顯存里面,最終再通過(guò)顯存和GPU來(lái)將顯存里的圖片渲染到幀緩存里

    • 幀緩存是存儲(chǔ)將來(lái)要顯示的屏幕畫(huà)面的地方,它是顯卡里的最后一個(gè)部件

  • 注意點(diǎn):

    • ETC2格式圖片在安卓平臺(tái)里并不會(huì)先加載到內(nèi)存,然后從內(nèi)存加載到顯存里去,因?yàn)檫@樣需要消耗很多時(shí)間

    • 安卓平臺(tái)能夠?qū)TC2格式圖片直接送到顯卡里,不需要做任何解壓,這一點(diǎn)安卓平臺(tái)的顯卡大多都能支持

貼圖壓縮的時(shí)機(jī)

  • 貼圖壓縮的四個(gè)時(shí)機(jī)對(duì)應(yīng)了游戲項(xiàng)目研發(fā)的四個(gè)階段

    • 1,預(yù)研階段

      • 預(yù)研階段里要確定項(xiàng)目的預(yù)算、確定項(xiàng)目的玩法、確定項(xiàng)目的性能指標(biāo)

      • 如果游戲的玩法達(dá)不到能夠流暢游玩的性能指標(biāo),或者性能指標(biāo)能達(dá)到但是項(xiàng)目預(yù)算會(huì)很高,那這個(gè)項(xiàng)目在預(yù)研階段就會(huì)被PASS掉

    • 2,原型階段

      • 在預(yù)研階段確定了項(xiàng)目可以開(kāi)發(fā)后,就要準(zhǔn)備開(kāi)發(fā)原型了,但是在一開(kāi)始不會(huì)直接招很多人來(lái)做大規(guī)模開(kāi)發(fā),原型開(kāi)發(fā)階段主要是測(cè)試游戲玩法好不好玩,是否具有開(kāi)發(fā)下去的價(jià)值

      • 在這個(gè)階段里還會(huì)完成具體架構(gòu)的實(shí)現(xiàn)、開(kāi)發(fā)項(xiàng)目所需要的工具,這是程序部分,還有美術(shù)和策劃部分也會(huì)在此階段提前做好準(zhǔn)備

    • 3,大規(guī)模開(kāi)發(fā)階段

      • 大規(guī)模的開(kāi)發(fā)階段里需要完成各個(gè)功能系統(tǒng)的實(shí)現(xiàn)

    • 4,測(cè)試階段

  • 貼圖打包的格式究竟是放在哪個(gè)時(shí)間點(diǎn)考慮呢?

    • 業(yè)余開(kāi)發(fā)可以晚點(diǎn)考慮,甚至是不考慮,因?yàn)闃I(yè)余開(kāi)發(fā)主要是愛(ài)好

    • 但如果是一個(gè)商業(yè)項(xiàng)目,還是建議盡早考慮,肯定不能在測(cè)試階段再去考慮,因?yàn)闇y(cè)試階段再考慮這件事情太晚了,返工的工作量非常大

    • 具體的貼圖壓縮時(shí)間點(diǎn)本文不給出答案,讀者可以自己考慮放在什么階段最合適,也可以在文末掃愛(ài)麗絲老師的二維碼與老師交流

為什么要做貼圖壓縮

  • 為什么商業(yè)項(xiàng)目一定要考慮貼圖壓縮問(wèn)題?

    • 從GPU的角度來(lái)說(shuō),貼圖經(jīng)過(guò)壓縮以后所占用的渲染帶寬會(huì)更低

    • 比如上面說(shuō)的ETC2格式如果不是用在安卓平臺(tái),而是Windows平臺(tái),那么由于Windows平臺(tái)不支持ECT2格式的硬件解壓,那么它就需要先解壓到內(nèi)存,這個(gè)解壓過(guò)程是消耗內(nèi)存的,并且由于它是從ETC2的壓縮格式轉(zhuǎn)換到非壓縮格式,中間會(huì)產(chǎn)生很多解壓帶來(lái)的開(kāi)銷(xiāo)

    • 由于壓縮包里的資源解壓出來(lái)時(shí)會(huì)比壓縮包里的資源要大,所以它在加載到到顯存時(shí)所占用的內(nèi)存也會(huì)更大,如果貼圖不壓縮或者選擇了一種當(dāng)前平臺(tái)不支持的貼圖壓縮格式,那么它的渲染帶寬占用就會(huì)很高

  • 這就是貼圖壓縮的理由,貼圖送到顯卡以后,從顯卡到渲染這個(gè)步驟中,它中間的每一次渲染都需要傳輸圖片的每一個(gè)像素點(diǎn),這都是有開(kāi)銷(xiāo)的,這個(gè)開(kāi)銷(xiāo)就是通過(guò)壓縮圖片格式來(lái)解決的

  • 貼圖壓縮以后,游戲包體就會(huì)更小,包體小帶來(lái)的好處就是下載速度會(huì)更快、內(nèi)存占用會(huì)更低

  • 而且圖片格式是支持顯卡加速的,它甚至可以不經(jīng)過(guò)內(nèi)存,直接將數(shù)據(jù)存到顯存里去

寫(xiě)在最后

  • 更多學(xué)習(xí)資源請(qǐng)加QQ:1517069595或WX:alice17173獲?。ㄆ髽I(yè)級(jí)性能優(yōu)化/熱更新/Shader特效/服務(wù)器/商業(yè)項(xiàng)目實(shí)戰(zhàn)/每周直播/一對(duì)一指導(dǎo))

  • 點(diǎn)贊、關(guān)注、分享可免費(fèi)獲得配套學(xué)習(xí)資源


貼圖打包格式優(yōu)化(上)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
马尔康县| 长治县| 武汉市| 宁陵县| 交城县| 土默特左旗| 磐石市| 德阳市| 长白| 栾川县| 左贡县| 霍林郭勒市| 通州区| 丰宁| 康定县| 股票| 大同市| 西安市| 修水县| 永登县| 洪江市| 弥渡县| 海城市| 日土县| 六安市| 青州市| 垦利县| 宜城市| 宜兰县| 徐水县| 朝阳市| 奉化市| 武清区| 合肥市| 上栗县| 靖江市| 太原市| 阜平县| 禹城市| 霍林郭勒市| 潮安县|