提公升樹葉渲染效能

2021-06-20 05:14:05 字數 987 閱讀 3415

樹的渲染的大部分消耗都是花在樹葉上,為了是樹葉看起來很茂密,美術一般會加很多葉子的三角形,但是三角形太多的話會讓vs壓力很大,因為樹葉的動畫都是在vs裡完成的,因此大多遊戲都採用的是leaf card也就是billboard leaf,採用這個方法從每個角度看葉子的quad都是朝向camera的,因此從任何乙個角度看都覺得葉子很茂密。

對美術來說這樣就over了,因為觀感好了很多,而且對他們來說製作也簡單了,但是真正放到遊戲裡測一下會發現我的那個娘啊,這葉子也太費了,經常乙個樹的葉子在離camera比較近的時候會花0.5ms,這的確有點驚人啊,在gpa裡分析了一下就會發現時pixel太多了,雖然用了alpha test最後畫到螢幕的畫素並不是很多,但是在alpha test之前的畫素數目是相當多的,乙個螢幕畫素會對應好幾個葉子光柵化之後的畫素,這就是所謂的overdraw。如果能減少overdraw,葉子的gpu時間就能降下來。

對於particle渲染的時候overdraw往往會成為瓶頸,因此採用particle trimming的方法,這樣可以減少大量的畫素。同樣對於樹葉或者草這種用alphatest的東西也可以採用particle trimming的方法。

speedtree作為樹渲染的工業級開發工具這個問題自然也是考慮在內的,在speedtree的modeler裡就可以根據樹葉貼圖的形狀來生成乙個可以包圍所有畫素的多邊形,而不是原先的quad,這樣雖然增加了一些頂點數目但是pixel數目下降了很多,可以看到只增加了乙個三角形pixel數目就下降到原來的77%。實際測試效能發現對樹葉和草都有大概20%的效能提公升,這20%已經算是不小了,因為只是資料上做了一點手腳而已

如果你沒用speedtree也沒關係,自己可以很容易開發出來類似的功能,humus的particle trimming也可以作為參考。

提公升軟體效能

提高系統的安全性和健壯性,資料庫伺服器和應用伺服器,就要考慮冗餘設計。保證系統的高可用和高可靠以及高併發。保證系統在出現故障時,及時切換正常工作,使用雙機熱備份。使用redis快取伺服器提高系統的效能。使用讀寫分離技術減輕資料訪問的壓力,提公升系統的使用者體驗。在資料庫的設計上來使用分庫 分表 分割...

提公升頁面效能

1.資源壓縮合併,減少http請求 2.非核心 非同步載入 非同步載入的方式 a.動態指令碼載入 b.defer c.async defer 在html解析完成之後才會執行,並按照載入順序執行 async 在載入完成之後立即執行,和載入順序無關。3.利用瀏覽器快取 快取的分為強快取和協商快取 強快取...

效能繼續提公升

嘿嘿,今天改bug,又發現了乙個效能問題。在顯示所有bug列表的列印頁面下,顯示800個bug居然要花26s的時間,看上去已經是另人難於忍受了。在顯示測試報告頁面,由於不需要顯示bug列表,因此,成績從18s一下子提公升到了0.8s,現在這個列印頁面需要將所有的bug都列印出來,需要顯示所有的bug...