2012-07-29 71 views
1

I.要切換着色器效果哪種方式更好? 1.使用大着色器程序並在着色器程序中使用統一的if/else子句來使用差異效果。打電話之間切換程序。webgl切換着色器和紋理的性能成本

II.Is它更好地使用大紋理或用幾個小的質感?並且確實上傳紋理成本,如何綁定紋理?

回答

6

嗯,這很可能是最好寫一些PERF測試和嘗試,但一般。

  • 小着色器比大幹快上。
  • 1質地快許多紋理
  • 上傳紋理緩慢
  • 結合紋理快速
  • 切換程序是緩慢的,但通常比2個的小程序合併成1個大的程序要快得多。

特別是中獲取片段着色器執行數百萬次的框架。一個1920x1080的顯示器有200萬像素,所以沒有透支,這仍然意味着你的着色器每幀執行200萬次。對於每秒執行200萬次的任何事情,或者每秒鐘以每秒120幀的速度執行60幀,小一點的會更好。

至於紋理,MIPS比沒有MIPS更快,因爲GPU有紋理緩存,如果需要的像素下一個接近它以前看了的人,他們很可能已經在緩存中。如果他們很遠,他們將不會在緩存中。這也意味着從紋理中隨機讀取特別慢。但大多數應用程序通過紋理線性讀取。

交換計劃是很慢,足以通過該計劃,他們使用,讓您繪製使用的程序的第一個,然後使用B方案通常比以隨機順序繪製他們更快所有車型所有車型分類車型。但是還有其他一些效果表現。例如,如果一個大模型模糊了一個小模型,最好先繪製大模型,因爲小模型將會通過深度測試(z-buffer),並且不會爲任何像素執行片段着色器。所以這是一個折衷。你所能做的就是測試你的特定應用程序。

此外,以正確的方式進行測試也很重要。 http://updates.html5rocks.com/2012/07/How-to-measure-browser-graphics-performance