如果要提高3D遊戲的幀數,調低哪些特效參數是最有效的?

以2015年的3A級遊戲為基準

當然,非常重要的內容不能關。AO關了以後完全就是兩個遊戲了。陰影質量可以降低。

有沒有哪個遊戲能量化評估各種特效造佔用的運算量和瓶頸?


我能先從底層技術的角度說一下么?能先簡單說一下3D渲染的流程么?就用很樸素的語言說一下?好吧,你們不聽,我也要說:

  1. 遊戲邏輯。哪裡是地面,那裡是牆壁,牆壁後面的物品是否渲染,選擇高級。有一些遊戲,將一些耗性能的特效,物品都是這一級別中直接剔除。這個級別是物體級別的。
  2. 顯卡GPU(圖形處理器)變換。這裡是上面傳過來,這裡是三角形級別。可以畫出物體,將超過畫面的三角形和像素不渲染。
  3. 顯卡GPU屏幕特效。最後畫出的畫面,一張照片吧,然後對這張照片進行PS(Photoshop 或者理解成 Pixel Shader),美顏相機那種效果吧,包括景深,柔光什麼的。

幾個步驟走完,一幀遊戲畫面呈現給玩家,如果想得到更多的FPS,那麼就需要把這幾步的時間壓縮,待我用圖片解釋一下基本概念,然後最後說如何優化。

(圖1)邏輯剔除:

(圖2)3d模型:

(圖3)簡單的模糊效果PS步驟,柔光,HDR,景深都要用到模糊和疊加,圖有點大,不知道看不看得清楚:

開始說正題,如何優化。

從(圖1)看,是不是將遠近裁剪面(near/far clipping plane)拉近一點就可以了啊,這樣被剔除的物體多了,渲染的不就少了嗎?如果你在玩大地圖遊戲(就說魔獸世界把),遠方的物體都看不到了,FPS不就上去了么?當然,如果說,你對遠處的風光看不到了而感到體驗不好,那就當我沒說。還有一些煙霧、火光等特效,如果遊戲做得好,他們都是可以屏蔽掉的,這些粒子特效都是消耗性能的殺手,幹掉它,哈哈哈,雖然我們這些中小開發者都請不起人做這些複雜的特效。

從(圖2)看,是不是把一個模型做的三角形越少,顯卡GPU的負擔越少哇?有人說,現在顯卡不會在乎你的模型三角形數量了,幾乎一樣快呀。好吧,那你就這樣做把,做的模型越細越好,哇哈哈,我就少了一個競爭對手了。說回來,3D高手建模高手基本上只有一個條件,用最少的三角形更好體現出原畫的意圖。

從(圖3)看——小李子最近很火啊,終於得影帝了——言歸正傳,當顯卡把物體都渲染出來的時候,比如畫了一個小李子,好酷,對不對,這個時候,怎麼能沒有美顏相機?哼哼哈嘿,(看上面的最後效果)漂亮么?不過顯卡就慘了,它需要重新畫這個圖片3次(水品模糊、垂直模糊、疊加),HDR需要14-16次,景深沒做過,不知道多少次,不過也應該不會少。說一下次表面散射,我做過,它做出蠟燭啊,玉啊,人皮膚啊等真實的透光效果那種特效,不過不屬於PS範疇,他是把整個場景再重新渲染一次,也就是如果開啟,就會比不開啟耗時一倍,說到這裡,忍不住特貼一張圖:

好多人說道陰影,我也說一下把,陰影分4中,三角形陰影,PS陰影,場景固定陰影,假陰影,沒聽過把,哈哈,我發明的,他們有英文名,Stencil Shadow,Mapping Shadow,Lightmapping,Dot/Fake Shadow。你們自行替換啊。

前兩者(三角形陰影,PS陰影)都需要在一幀重新渲染一邊需要投影的物體,就是把相機挪到光源,渲染一邊得出一張表,在這張表用於在這另一次真正渲染的時候繪製陰影,具體遠離不解釋了,不然變教程了,直接說利弊。

  • 三角形陰影精準,但是無法降級,所以只能用於少數幾個物體渲染,說白了,比較耗,只能用來渲染主角啊,身邊的怪物啊等等,而且不能自陰影,現在貌似。
  • PS陰影不精確,但是可將級,如果說卡的話,哈哈,我把陰影變成簡單一點不就可以了嗎,可以被模糊,柔和陰影,現在3A大作基本用這個方法。

(圖4)三角形陰影,直接投射三角形到地上:

(圖5)PS陰影,輕鬆使用降級,輕鬆全場景,輕鬆模糊處理,輕鬆自陰影,3A大愛:

再說說我最愛的兩個高效的陰影方法(窮人最愛):

  • 場景陰影。場景是固定,對不對?它不動對不對?為啥不一開始就給它計算好呢?我不用透射到主角身上的,親。
  • 假陰影。我是可愛的小坨坨啊,小坨坨,什麼都不耗啊,都不耗。

(圖6)場景陰影。預先計算好:

(圖7)假陰影。是不是很可愛啊?我最愛:

(圖8) 忍不住,再來一張:

從陰影優化的話,你需要分清楚要給玩家什麼感覺,然後分級處理。如果你就是玩家,停止渲染場景固定陰影,假陰影(魔獸爭霸3常用),是幾乎提高不了幀率的。

上面,我只是簡單說一下,其中優化的或者可以開放給玩家配置的選項還有很多,不一一例舉了,NVidia 出過很多Profiler(給開發者用, nvidia.com 的頁面),可以發現瓶頸,如果發現,可以開放配置或者優化、去除。題主如果作為玩家,想要體驗一下分析遊戲,也可以使用ATI(AMD)的一些Profiler工具(GPU PerfStudio),不用修改代碼就能直接調試遊戲(玩家專用),查看遊戲都讓顯卡做了些什麼。

這兩個工具我很早都用過,現在去看,我去都改版了,熟悉的界面找不到啦。其實就是打開工具,然後讓通過工具啟動遊戲,然後就可以使用工具暫停遊戲,查看GPU首先畫什麼再畫什麼,然後畫了多少時間,當年寫引擎的時候,感覺酷斃了。

最後說一下,

  • 關於抗鋸齒(AA anti-aliasing),在我寫引擎的那個時候(2008-2010),效果特別牛逼,但這玩意兒真的非常耗,非常耗,非常耗,可能是顯卡沒有很好的支持,現在不清楚,不發表意見哈。
  • 關於碰撞碰撞肯定不能被優化的,這牽涉到遊戲邏輯,你不能讓一個遊戲在這台機器就不能穿牆,那台機器就能穿牆吧?
  • 關於LOD,應該都是程序自動的,有些還是一開運算好的,玩家應該調整不了。
  • 關於解析度,如果PS特效很多,很重,應該很有效果。但是如果是物體本來就很多呢?(2017年10月22日補充:解析度影響最終顯卡渲染的填充頻率,所以同樣的渲染物體,是越小越省顯卡,這樣幀率就上去了)


GPU 不行:調低/關閉景深、動態模糊、曲面細分、遮蔽陰影、陰影解析度、LOD(物體細節隨距離下降程度),最後不行降解析度。

CPU 不行:關閉物理效果。


說說我在ue4下的Htc vive開發經驗,

1:vive推薦幀率是90fps以上,就是說開銷大於11ms,就達不到90fps,一旦超過,由於更新機制vive會降到22ms,也就是45fps。

2:想要雙眼保持90fps,哪怕開了instance stereo,那麼在1080p屏幕運行時也得達到全程120fps,這是非常難得,vive 單眼就有1200x1080像素,而且是雙屏,再加上默認130%的目標解析度。

3.所以第一點要關掉的就是SSAO,非常的貴,但這並不影響Bake AO。

4.AA在實際開銷中會X2,但是我還沒遇到過超過單眼開銷超過1ms的情況。

5.第二點要關的就是DFAO,DFGI(如果曾經在屏幕使用的話),這兩個會double開銷。

6.第三點要優化的是HZB Occlusion,,也是個大頭,關鍵點在於actor數量的優化,遠近層級的優化,不能太碎,也不能為了減少draw call附加得遠近都是同一個actor。

7.第四個大頭點當然就是減少動態光了啊,如果有,必須用,那麼能不產生陰影的就取消掉。

8.至於Dof,motion blur,還有其它同學提到的一些默認開啟的效果,都是小費了,ue4還有一些陰影,距離,後期質量等方面的級別默認都是很保守的,都不會敲你一棒槌的。


解析度

補充一下垂直同步最好別關,關掉只是看上去幀數高了,但是同時會讓畫面更新速度不穩定,就是平移的時候時快時慢,反映到人眼中就是不流暢。

但是如果幀率低,輸入延遲也會高,為了減少一點輸入延遲倒是可以關掉。

總體來講,就是遊戲已經到20fps了還是關掉垂直同步吧,30fps以上的時候其實開著效果會更好一點的。為了追求輸入延遲也可以關。


解析度


如果你想要提高整體流暢性的話,那麼單純提高fps並不是一個好的思路,好的思路是改善最壞情況時間延遲,解決最壞情況的問題才能帶來整體體驗的提高。

首先最重要的一點是改善散熱以盡量推遲節流。同一個cpu/顯卡節流和不節流是兩種狀態,畢竟散熱不好泰坦也得隕落的。

因此第二條是關掉三重緩衝,打開垂直同步,甚至可以強制兩次同步刷新一幀(或者鎖30幀),如果你在最壞情況兩幀時間間隔長於1/30s,那麼你很有可能會得益於這個設置造成的發熱降低。

當然,垃圾顯卡垃圾cpu就算是冰鎮(除非使用傳說中的液氮超頻)也不太可能流暢渲染過於複雜的場景,畢竟是體制,啊不是,體質問題,這就要靠降低遊戲的複雜度來解決了。當然最科學的辦法是判斷目前的瓶頸在哪裡,然後具體問題具體分析,不過這樣太麻煩了。

一般來說最立竿見影的方法是降低解析度。畢竟內存帶寬和顯卡線程數在那擺著,過高的解析度會帶來至少和像素數成正比的運算時間上升…………不過我們一般不會降,畢竟買4k屏不是為了當640*480用的。

然後是粒子,間接光照,動態模糊還有「後處理」這些,它們共同的特點是不僅直線提高了gpu運算時間,同時也大量消耗cpu時間(ssao除外,ssao吃的是顯卡)。

如果模型細節太大的話,降低到合理水平就好,模型太粗糙喂不飽顯卡的線程數的話就不太好了。

視野距離這個東西,如果你發現遊戲讀硬碟的頻率過高,或者讀硬碟/下載造成的蛋疼時間太長,那麼你可以調小一些。當然如果視野里東西太多的話也會直線甚至平方降低幀速,所以在最壞情況下最好盡量減少需要渲染的對象…………但是,對於某些mmorpg你敢降低視野距離么…………畢竟高視野距離意味著先敵發現

AA別用太高級的,不過N卡的fxaa在4k下面也不慢…………當然fxaa和腦補aa區別也不大了。

然後如果是策略遊戲的話,後期ai線程也會影響到渲染速度。


解析度和紋理細節。

我以前修改配置文件用surface通關了孤島危機3。

反正解析度低了,紋理精度也沒什麼用了。

效果上還湊合。反正360上的這些遊戲都是低解析度版。


不同意大部分的回答。目前的顯卡抗鋸齒實現已經非常高效了,關閉抗鋸齒並不能有效提升FPS。尤其是某些本身就很高效的抗鋸齒比如SMAA,開關區別不大。

關閉各向異性過濾也對FPS影響不大。

早期的遊戲可以控制使用雙線性過濾或者三線性過濾,前者可以省一些資源;但現在線性過濾已經算是非常基礎的圖形處理了,調這個對FPS基本無影響,而且新遊戲大多也沒有這個選項了。

當然幾個特效省下的資源合起來,也許FPS能有點改善。但靠這些想從30fps跑到60,還是別指望了。

特別耗資源但效果值不回票價的特效當屬super sampling. SS把遊戲以高解析度渲染,然後再下降至屏幕解析度,其實就是最暴力的抗鋸齒。關閉SS可以讓你的FPS有50%以上的改進。當然了,這種暴力特效不是每個遊戲都有的(Witcher 2和Elite Dangerous有)

其次是陰影細節。個人觀感,把陰影細節從ultra調到high會有較大的性能提升,而畫質沒有明顯的劣化(比如合金裝備5)

解析度的話,4K是一個坎,沒有GeForce 980ti還是放棄吧。個人感覺與其中等畫質跑4K,不如高畫質跑1440p。同理,如果你的機子上1440p勉強,那麼寧可1080p。

DIRT Rally有個奇葩選項叫advanced blending,開關一下,FPS能有50%的差異,視覺上我至今沒感覺出開不開有什麼區別(當然我還是開了,不為啥,就因為我可以,咔咔)但這個選項其它遊戲我從沒見過。

HBAO, SSAO比較耗資源,但關掉的話對畫面影響很大,畫面會失去很多立體感。所以能不關盡量不關。

垂直同步會把FPS的上限限制在屏幕刷新率(通常是60FPS),如果你的機子跑遊戲一般在60FPS以上的話建議別關,因為可以防止畫面撕裂,也比較省電。當然跑分例外。如果低於60FPS的話還是關了吧。

介紹一個終極大招:電視機用來顯示1080P和720P的圖像,效果要比顯示器好很多。所以如果你的機子不給力,不妨把解析度降到1080P乃至720P,保證畫質選項儘可能高,然後用HDMI輸出到電視上玩。

最後,別忘了到windows的電源管理里把電腦改成高性能模式,到N卡控制面板里把全局的性能選項從自適應改成高性能(A卡不知道有否對應選項)。調了有用嗎?說實話,我也不知道。但至少心裡踏實點。哇哈哈

(PC配置:GeForce 970 SLI, i7, 16GB)


抗鋸齒優先順序最低(FXAA除外)

HBAO, SSAO等環境光遮蔽,效果不顯著,性能吃一片

陰影也排在後面

視野距離(如果有)降到能忍耐的最低限

曲面細分(也可能叫鑲嵌,幾何細節)視情況降低

最應該保持的是紋理解析度(紋理精度,紋理細節等),很多遊戲只要這個降到最低,基本就是另一個遊戲了。

量化評價不可能,遊戲里什麼都是動態的,說不定你走路時挺流暢的,自適應垂直同步都啟用了,一個爆炸各種效果一出來就卡成狗。

當然,如果遊戲自帶測試場景的話可以稍作參考。


實名反對某個說調低抗鋸齒沒用的。

如果你的顯卡開了抗鋸齒仍然有60fps以上的,那麼確實關了抗鋸齒也不會有啥流暢度上的提升。

而如果你的顯卡開了抗鋸齒fps只有30左右了(這得是多少年前的老顯卡了),那麼顯然關了抗鋸齒對流暢性有很大提升。


個人經驗 是陰影

我指的是 從 高 到 關 不是到 低

這個解析度是比不了的 你要是把屏幕關了那就當我沒說


萬年關垂直,未出現過畫面撕裂。要求不高最好關植被和遠景。鋸齒別管吧,感覺上幀數區別不大,關了感覺有點難受


高抗鋸齒

各種所謂的高質量貼圖

環境光遮蔽

1080p降到720p幀數大概漲一倍

補:垂直同步


感覺是景深


陰影和植物是大頭,這兩項降一點對畫質影響不大,而且幀數能提高很多。光照什麼的盡量開最高,雖然耗資源但是值。


抗狗牙,陰影,然後最重要的是把海飛絲關了,就算是N卡也沒幾張招架得住海飛絲的威猛


陰影


好像每個遊戲都不一樣,降解析度和抗鋸齒幾乎通用,dx9時代陰影是個大頭,現在環境光什麼的也相當關鍵


調低對錢包的特效參數最有效。


陰影 抗鋸齒 垂直同步 煙霧 補充一個遠景(自己的經驗而已


推薦閱讀:

有3d眩暈症的人適合在圖形學上深入嗎?
如何評價CryEngine V?
如何在畫質上評價最終幻想15?
實時繪製如何實現丁達爾效應?
cytoscape繪製網路圖,導入數據的要求有哪些?

TAG:遊戲開發 | 計算機圖形學 | 3D遊戲開發 |