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

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

《Unity性能優(yōu)化》系列課程筆記——第拾節(jié)

2022-03-23 10:51 作者:Metaverse大衍神君  | 我要投稿

2022年3月22日第拾講 UGUI(上)

Unity UI性能的四類問(wèn)題

  1. Canvas Re-batch 時(shí)間過(guò)長(zhǎng)

  2. Canvas Over-dirty, Re-batch次數(shù)過(guò)多

  3. 生成網(wǎng)格頂點(diǎn)時(shí)間過(guò)長(zhǎng)

  4. Fill-rate overutilization

Canvas畫布

Canvas負(fù)責(zé)管理UGUI元素,負(fù)責(zé)UI渲染網(wǎng)格的生成與更新,并向GPU發(fā)送DrawCall指令。

Canvas Re-batch過(guò)程

  1. 根據(jù)UI元素深度關(guān)系進(jìn)行排序

  2. 檢查UI元素的覆蓋關(guān)系

  3. 檢查UI元素材質(zhì)并進(jìn)行合批

UGUI渲染細(xì)節(jié)

  • UGUI中渲染是在Transparent半透明渲染隊(duì)列中完成的,半透明隊(duì)列的繪制順序是從后往前畫,由于UI元素做Alpha Blend,我們?cè)谧鯱I時(shí)很難保障每一個(gè)像素不被重畫,UI的Overdraw太高,這會(huì)造成片元著色器利用率過(guò)高,造成GPU負(fù)擔(dān)。

  • UI SpriteAtlas圖集利用率不高的情況下,大量完全透明的像素被采樣也會(huì)導(dǎo)致像素被重繪,造成片元著色器利用率過(guò)高;同時(shí)紋理采樣器浪費(fèi)了大量采樣在無(wú)效的像素上,導(dǎo)致需要采樣的圖集像素不能盡快的被采樣,造成紋理采樣器的填充率過(guò)低,同樣也會(huì)帶來(lái)性能問(wèn)題。

Re-Build過(guò)程

  • 在WillRenderCanvases事件調(diào)用PerformUpdate::CanvasUpdateRegistry接口

    • 通過(guò)ICanvasElement.Rebuild方法重新構(gòu)建Dirty的Layout組件

    • 通過(guò)ClippingRegistry.Cullf方法,任何已注冊(cè)的裁剪組件Clipping Compnents(Such as Masks)的對(duì)象進(jìn)行裁剪剔除操作

    • 任何Dirty的 Graphics Compnents都會(huì)被要求重新生成圖形元素

  • Layout Rebuild

    • UI元素位置、大小、顏色發(fā)生變化

    • 優(yōu)先計(jì)算靠近Root節(jié)點(diǎn),并根據(jù)層級(jí)深度排序

  • Graphic Rebuild

    • 頂點(diǎn)數(shù)據(jù)被標(biāo)記成Dirty

    • 材質(zhì)或貼圖數(shù)據(jù)被標(biāo)記成Dirty

使用Canvas的基本準(zhǔn)則:

  • 將所有可能打斷合批的層移到最下邊的圖層,盡量避免UI元素出現(xiàn)重疊區(qū)域

  • 可以拆分使用多個(gè)同級(jí)或嵌套的Canvas來(lái)減少Canvas的Rebatch復(fù)雜度

  • 拆分動(dòng)態(tài)和靜態(tài)對(duì)象放到不同Canvas下。

  • 不使用Layout組件

  • Canvas的RenderMode盡量Overlay模式,減少Camera調(diào)用的開銷

UGUI射線(Raycaster)優(yōu)化:

  • 必要的需要交互UI組件才開啟“Raycast Target”

  • 開啟“Raycast Targets”的UI組件越少,層級(jí)越淺,性能越好

  • 對(duì)于復(fù)雜的控件,盡量在根節(jié)點(diǎn)開啟“Raycast Target”

  • 對(duì)于嵌套的Canvas,OverrideSorting屬性會(huì)打斷射線,可以降低層級(jí)遍歷的成本


《Unity性能優(yōu)化》系列課程筆記——第拾節(jié)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阜新市| 扶绥县| 云阳县| 本溪市| 广平县| 神木县| 宝应县| 乳山市| 那坡县| 来宾市| 东阿县| 翁源县| 睢宁县| 新密市| 正宁县| 密山市| 沂水县| 平顶山市| 清苑县| 绥滨县| 宁波市| 榆树市| 太仓市| 勃利县| 汕尾市| 安徽省| 平定县| 鸡西市| 海安县| 南涧| 息烽县| 呼伦贝尔市| 永和县| 虎林市| 万盛区| 达拉特旗| 宣城市| 叶城县| 轮台县| 临湘市| 通化县|