国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unity 性能優(yōu)化之GPU和資源優(yōu)化

這篇具有很好參考價值的文章主要介紹了unity 性能優(yōu)化之GPU和資源優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Shader相關(guān)優(yōu)化

眾所周知,我們在unity里編寫Shader使用的HLSL/CG都是高級語言,這是為了可以書寫一套Shader兼容多個平臺,在unity打包的時候,它會編譯成對應(yīng)平臺可以運行的指令,而變體則是,根據(jù)宏生成的,而打包運行時,GPU會根據(jù)你設(shè)置的宏切換這些打包出來的代碼,而不是我們書寫那種只生成的一個Shader,這也是為了提高運行速度。
如果你要查看實際運行的代碼,可以使用RenderDoc等工具截幀查看實際運行的代碼。
unity 性能優(yōu)化之GPU和資源優(yōu)化
可以在Shader上面查看當(dāng)前生成的變體數(shù)量。
優(yōu)化Shader最主要的是優(yōu)化Shader的算法,整理代碼結(jié)構(gòu),減少冗余。使用最精簡,運行效率最高的代碼來實現(xiàn)我們的功能。

函數(shù)性能優(yōu)化

我們可以在微軟的網(wǎng)站查看,根據(jù)指令槽進行排序,查看性能消耗順序。里面展示了在片元里面的占用:

  1. 紋理采樣盡量減少采樣次數(shù),消耗排序:texCubelod > texCube > tex2Dlod > tex2D
  2. 減少復(fù)雜的數(shù)學(xué)函數(shù)調(diào)用,它們無法直接編譯簡單指令:pow,exp,sign,cos,sin,tan
  3. 能復(fù)用的,盡量減少重復(fù)計算:normalize,dot
  4. saturate,abs,max,min 推薦使用,效率高

注意事項

  1. 避免使用除法,使用rcp代替,a/b 可以改成 a*rcp(b)這種提高性能
  2. 避免使用if,loop這種邏輯和循環(huán)
  3. 計算精度問題:世界空間位置以及精度要求高的紋理坐標用float,其它都用half就行(紋理坐標,向量,顏色(HDR)等)
  4. 減少寄存器的數(shù)量
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    一般是在Varyings減少,Attributes是從Mesh上面獲取,如果Shader上沒有使用到也可以去掉。
  5. 能在頂點計算的,盡量在頂點著色器計算,一些線性的數(shù)據(jù),比如Fog SH
  6. 慎重使用AlphaTest,會導(dǎo)致Early-z的失效,最好使用腳本,設(shè)置宏,開啟時自動修改隊列到2450
  7. Color Mask問題,一些平臺上移動端可能會占用資源。

渲染優(yōu)化

函數(shù)優(yōu)化的再多也節(jié)省不了多少,都不如少渲染幾次節(jié)省的多,所以,我們要從減少渲染量上面入手。

  1. 減少Overdraw 盡量避免AlphaTest和AlphaBlend物體,尤其是AlphaTest要放到2450,不要和不透明物體混合。減少整個屏幕的特效。
  2. 減少后處理,每一次全屏后處理增加計算量太大了,計算時最好能降低分辨率計算,比如bloom計算時都采用了一種降采樣的做法。
  3. 抗鋸齒,移動端盡量不要開,性能推薦:MSAA < TAA < FXAA&SMAA

inline內(nèi)聯(lián)函數(shù)

我們在Unity的內(nèi)置CGInclude文件中可以發(fā)現(xiàn)不少函數(shù)都有inline關(guān)鍵字,有inline修飾的函數(shù)為內(nèi)聯(lián)函數(shù),可以解決一些頻繁調(diào)用的小函數(shù)大量消耗??臻g(棧內(nèi)存)的問題,但inline 的使用是有所限制的,inline 只適合函數(shù)體內(nèi)代碼簡單的函數(shù)且會被頻繁調(diào)用時使用,不能包含復(fù)雜的結(jié)構(gòu)控制語句例如 while、switch,并且內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(即,自己內(nèi)部還調(diào)用自己的函數(shù))。

美術(shù)資源的優(yōu)化

美術(shù)資源主要是包含:紋理,網(wǎng)格以及Shader的變體,其中最主要的是紋理。

紋理

紋理大小會影響資源加載時間,gpu渲染時間,內(nèi)存的使用,包體大小以及畫面質(zhì)量。
有些同學(xué)一直認為要極致壓縮在unity里面的大小,這種方式是不對的,那只是導(dǎo)入到unity中的圖片存儲格式,不代表在打包后的占用,unity在打包時,會將格式轉(zhuǎn)換成其它格式進行存儲。
unity 性能優(yōu)化之GPU和資源優(yōu)化
上圖展示了圖片打包后的占用,前面則表面了當(dāng)前的圖片使用了何種壓縮。
unity 性能優(yōu)化之GPU和資源優(yōu)化
所以,不要在乎圖片導(dǎo)入時的大小和尺寸,要在圖片上進行設(shè)置,比如設(shè)置其最大1024。

壓縮格式

首先,科普一下bpp,比如4 bpp,意思為每個像素占用4bit 應(yīng)為 4bit per pixel。

  1. 移動端常用格式 有損壓縮
    PVRTC: RGBA 4 bpp 尺寸要求正方向
    ETC2:RGBA 8 bpp 尺寸要求為4的倍數(shù)
    ASTC 4x4 :RGBA 8 bpp 尺寸要求4的倍數(shù)(還有6x6 8x8 要求符合相應(yīng)的倍數(shù)),它支持HDR
    默認則為RGBA 32bit 占用比其它大至少四倍
  2. PC常用格式
    DXT:RGB 4 bpp 尺寸要求為2的冪次方 不透明紋理常用
    BC7:RGBA 8bpp 尺寸要求為2的冪次方 支持透明通道
    BC6H:RGBA(HDR)8 bpp 支持HDR

unity官方紋理壓縮文檔
3. 開啟minmap可以有效降低帶寬,但是會增加內(nèi)存 33%
4. 各向異性過濾,建議不開啟或者只單獨處理
unity 性能優(yōu)化之GPU和資源優(yōu)化
它是默認開啟的,一般設(shè)置Per Texture,然后需要在圖片上開啟。
unity 性能優(yōu)化之GPU和資源優(yōu)化
開啟以后會增加采樣,會降低紋理mipmap過渡時的鋸齒。
5. 如果ui圖片的尺寸不符合標準,會采用無損壓縮,會造成浪費。

Mesh

  1. 注意寫入的開啟,開啟狀態(tài)內(nèi)存占用會翻倍
    unity 性能優(yōu)化之GPU和資源優(yōu)化
  2. 骨骼模型要著重注意面數(shù),比較影響性能,因為它的動畫需要每幀計算頂點位置

資源相關(guān)檢查工具

  1. 紋理和Mesh的檢查工具,可以一鍵查看相關(guān)占用
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以一鍵檢查出對應(yīng)的大文件。
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    Mesh統(tǒng)計了使用次數(shù)的總占用,可以清晰的查看當(dāng)前Mesh在場景的總占用。紅色為未合并網(wǎng)格。

  2. 貼圖相關(guān)檢測
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以檢測貼圖的尺寸是否規(guī)范
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以檢測貼圖尺寸是否過大
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    會將非4的倍數(shù)的圖片導(dǎo)出到相應(yīng)文件夾,然后美術(shù)同學(xué)可以修改完成圖片后,對資源進行替換。

  3. shader相關(guān)檢查
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以查看所有shader變體數(shù)量
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以打印出項目中shader的所有變體數(shù)量。
    變體減少的辦法就是減少宏的使用,如果沒辦法,就少用multi_compile,使用shader_feature
    變體的相關(guān)使用 點擊此處看官網(wǎng)

  4. 資源引用查找
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    可以查看資源之間的互相引用,Uses可查看使用的資源,Used By可以查看被引用,Unused Assets查看沒有被使用的資源
    可以選中物體進行查看相關(guān)引用,或者向上查找

  5. Prebe資源分析
    unity 性能優(yōu)化之GPU和資源優(yōu)化
    查找一個Prefab的資源引用分析,以及占用。

蒙皮動畫

蒙皮動畫也在游戲運行時占用比較大的性能,一般都會有一些方式解決,這里我推薦之前項目中使用的,使用GPU Skining + LOD,近處的模型使用默認蒙皮動畫,保證效果,遠處的角色模型,則使用低模+頂點動畫烘焙動畫貼圖,根據(jù)顏色像素轉(zhuǎn)換反向和距離,重新生成頂點位置繪制,這種方式還支持合批甚至GPU Instancing提高性能。

資源的加載

資源加載有時也會出現(xiàn)卡頓的情況 查看官方文檔,這個一般需要程序同學(xué)協(xié)助完成。

Shader的加載

默認情況下,Shader會在首次渲染幾何體是進行加載,這也是我們減少變體的原因之一。如果使用了相同的變體和Shader,渲染新的幾何體時,將不會在重新加載Shader。
有時會運行卡頓,我們可以使用預(yù)加載的形式進行Shader加載。
unity 性能優(yōu)化之GPU和資源優(yōu)化

UI的優(yōu)化

優(yōu)化unity UI,這是先備份一下,需要時再看。文章來源地址http://www.zghlxwxcb.cn/news/detail-432172.html

到了這里,關(guān)于unity 性能優(yōu)化之GPU和資源優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity 性能優(yōu)化四:UI耗時函數(shù)、資源加載、卸載API

    Unity 性能優(yōu)化四:UI耗時函數(shù)、資源加載、卸載API

    1.1 Canvas.SendWillRenderCanvases 這個函數(shù)是由于自身UI的更新,產(chǎn)生的耗時 1. 這里更新的是vertex 屬性,比如 color、tangent、position、uv,修改recttransform的position、scale,rotation并不會導(dǎo)致頂點屬性改變,因為頂點的position是根據(jù)pivot的偏移決定的,而改變其size、pivot、anchor,則會修改

    2024年02月14日
    瀏覽(24)
  • Unity 性能優(yōu)化的手段(對象池、靜/動態(tài)批處理、GPU實例化、垃圾回收、LOD、LightMap)【更新中】

    Unity 性能優(yōu)化的手段(對象池、靜/動態(tài)批處理、GPU實例化、垃圾回收、LOD、LightMap)【更新中】

    目錄 對象池 擴容策略 收縮策略 DrawCall DrawCall的過程 為什么減少DrawCall可以實現(xiàn)性能優(yōu)化? 減少Draw Call的方法 靜態(tài)批處理(Static Batching) 動態(tài)批處理(Dynamic Batching) GPU Instancing(GPU實例化)??????? 貼圖集 垃圾回收的優(yōu)化 垃圾回收的性能影響 延遲垃圾回收 避免

    2024年02月04日
    瀏覽(17)
  • Unity Shader - UI/Default shader 優(yōu)化示例

    Unity Shader - UI/Default shader 優(yōu)化示例

    Unity : 2020.3.37f1 Pipeline : BRP 做性能優(yōu)化都是慢慢都扣出來的 當(dāng)然,優(yōu)先處理 top 熱點的 但是一些就算不是 top,但是像素面積有多,overdraw 也多不可小覷 當(dāng)然,如果你能找到性能熱點,那還是優(yōu)先分析一下哪些 shader 占的 cycles 最高,和 A, L/S, T, 最高 還有 register 的數(shù)量盡可能

    2024年02月07日
    瀏覽(21)
  • Unity中Shader變體優(yōu)化

    Unity中Shader變體優(yōu)化

    在Shader中,一般有兩個方面的優(yōu)化:一方面是內(nèi)存優(yōu)化(即變體優(yōu)化);一方面是渲染優(yōu)化(即Shader中計算的優(yōu)化)。我們這篇文章來了解一下Shader變體的優(yōu)化。 創(chuàng)建一個UnlitShader,里面有一個默認的Shader #pragma multi_compile_fog 選擇Shader后,點擊Compile and show code 右邊的小箭頭可

    2024年02月04日
    瀏覽(22)
  • Unity中Shader指令優(yōu)化

    Unity中Shader指令優(yōu)化

    上一篇文章中,我們解析了Shader解析后的代碼。我們在這篇文章中來看怎么實現(xiàn)Shader指令優(yōu)化 Unity中Shader指令優(yōu)化(編譯后指令解析) 在DirectX平臺,常數(shù)運算是不占指令數(shù)的。但是,穩(wěn)妥起見我們最好自己計算好常數(shù)計算的結(jié)果。防止其他平臺認為常數(shù)運算需要占指令。

    2024年02月03日
    瀏覽(19)
  • 【Unity Shader 中Pass相關(guān)介紹_第四篇】

    故事的開始在前一篇 a.結(jié)構(gòu)體語法 結(jié)構(gòu)體允許儲存多個不同類型的變量,并將多個變量包裝成為一個整體進行輸入或者輸出。 結(jié)構(gòu)體如下: struct:定義結(jié)構(gòu)體的。 Type:給當(dāng)前結(jié)構(gòu)體定義一種類型,著色器函數(shù)定義輸入和輸出數(shù)據(jù)類型時會用到,結(jié)構(gòu)體內(nèi)包含的變量

    2024年02月07日
    瀏覽(33)
  • Unity Shader相關(guān)的ZTest,ZWrite,Blend

    畫家算法: 以一個畫布為背景,從遠到近畫一個畫面,先畫最遠的背景,也就是天空 然后假如是雪山, 然后再畫上樹木,樹木在雪山上 然后山下是若干個居民的房屋,以及若干條道路 其次房屋門前可能有樹木又當(dāng)?shù)啦糠址课?其中某片區(qū)域一定會進行若干次上色,這樣在

    2024年02月03日
    瀏覽(21)
  • CPU和GPU性能優(yōu)化

    在Unity游戲開發(fā)中,優(yōu)化CPU和GPU的性能是非常重要的,可以提高游戲的運行效率、降低功耗和延遲,并提高用戶體驗。以下是一些優(yōu)化CPU和GPU性能的方法: 1.優(yōu)化游戲邏輯和算法 減少不必要的計算和內(nèi)存操作,例如避免頻繁的分配和釋放內(nèi)存,減少不必要的數(shù)據(jù)結(jié)構(gòu)和循環(huán)。

    2024年02月09日
    瀏覽(18)
  • 前端面試:【性能優(yōu)化】頁面加載性能、渲染性能、資源優(yōu)化

    嗨,親愛的前端開發(fā)者!在今天的Web世界中,用戶期望頁面加載速度快、交互流暢。因此,前端性能優(yōu)化成為了至關(guān)重要的任務(wù)。本文將探討三個關(guān)鍵方面的性能優(yōu)化:頁面加載性能、渲染性能以及資源優(yōu)化,以幫助你構(gòu)建更快速、響應(yīng)更快的Web應(yīng)用程序。 1. 頁面加載性能:

    2024年02月11日
    瀏覽(33)
  • Unity中Shader指令優(yōu)化(編譯后指令解析)

    Unity中Shader指令優(yōu)化(編譯后指令解析)

    我們先讀懂Shader編譯后代碼,才能對Shader進行合理的優(yōu)化 我們目前先只編譯到 D3D 平臺 這是編譯后的代碼(我們來逐步分析):

    2024年02月04日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包