圖形渲染-像素填充率、內存帶寬


像素填充率-Fill rate

  • GPU每秒可以渲染到屏幕的像素數量。(估計公式:填充率 = 總像素數 x Shader復雜度 x Overdraw)
    如果我們的游戲受到填充率的限制,那么說明我們的游戲每一幀輸出到屏幕的像素數量超過了GPU的承載限度。

  • 要檢查是否是 填充率 導致的GPU瓶頸方式很簡單,
    運行游戲,在Profiler窗口觀察GPU的效率
    減小Game窗口的尺寸達到降低窗口分辨率的效果
    再運行游戲,觀察GPU的效率,如果游戲的表現提升了,那么很可能就是填充率導致的問題。
    Unity 最新的[官方文檔](Unity - Manual: Optimizations)也介紹了這個公式,並告訴大家一個評估是否填充率受限的方法:
    game run faster if you decrease the display resolution? If yes, you are limited by fillrate.

  • 確定了是填充率導致的,我們可以通過以下幾個方面來進行優化:
    片元着色器(Fragment Shader)是shader代碼塊中告訴GPU該如何逐像素渲染的部分,這部分代碼是由GPU來執行的,並且每一個像素都會被計算。復雜的片元着色器代碼常常是引起填充率問題的根源。

顯存帶寬-Memory bandwidth

  • 顯存帶寬指的是GPU可以讀取和寫入的速率。
    如果遇到顯存帶寬的問題,常常是由於我們使用了非常大的紋理以至於GPU無法快速的處理它。

  • 如果檢查是否是顯存帶寬的問題,我們可以參考以下步驟:
    運行游戲並關注GPU的性能情況
    減少紋理的精度,並且可以在Quality Settings中進行相關設置。
    再次運行游戲並且關注GPU的性能情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM