朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊|登陸

等待

返回 展開菜單

克服VR眩暈之幀數(shù):提升UE4內(nèi)容實時渲染效率

Illusion粒子 觀看預(yù)覽

Illusion粒子

包含3節(jié)視頻教程
關(guān)注5.9萬

Illusion是特效制作者不可缺少的必備軟件;钣眠@個軟件你可以快速高效的制作2d粒子。更可以和影片結(jié)合制作各種特效。他的原理也是你學(xué)習(xí)特效必須知道的技術(shù)!

關(guān)閉

克服VR眩暈之幀數(shù):提升UE4內(nèi)容實時渲染效率

     VR已經(jīng)成為了當(dāng)今最火熱的一個話題,帶上頭盔之后,從此進入一個奇妙的世界,在這里你不再是觀眾,你參與這個世界發(fā)生的每一件事件。整個世界從此與眾不同。在賽道上飛馳,在戰(zhàn)場上縱橫
     但是生理機制讓我們的大腦在身體并沒有移動,而視覺在不斷告訴我正在飛速前行的迷惑中產(chǎn)生了暈眩。如何解決因為VR而產(chǎn)生的眩暈,就成為每一位設(shè)計師需要面對的問題。

     引起VR眩暈有很多原因啦,比如設(shè)計上的,技術(shù)上的。渲染的幀數(shù)高低必定是其中一個最主要的原因之一。關(guān)于UE4里對VR內(nèi)容的優(yōu)化方法和思路大部分是和傳統(tǒng)的3D游戲優(yōu)化是一致的,有部分是VR尤其相關(guān)的。接下來就以oculus為平臺和大家一起分享一下在UE4里常見內(nèi)容的一些設(shè)置和優(yōu)化的思路和方法.


首先我們來看一個優(yōu)化過程的實例,先有個大概的了解。打開一個UE4下載的項目,particle cave, VR preview,帶上眼鏡就能體驗了,對,就這么簡單,雖然說這個并不是一個針對VR的項目。

這里做了一些簡單的設(shè)置
1、發(fā)現(xiàn)攝像機是以預(yù)設(shè)軌道在飛,而且明顯感覺幀率不高,哦,好暈。為了比較方便衡量接下來優(yōu)化,我做了一些攝像機的設(shè)置,讓攝像機開始游戲后固定在一個我認為幀數(shù)最低的畫面。
2、確保幀數(shù)沒有被限制住,關(guān)閉垂直同步,把最高幀數(shù)限制上限提高好了,再run一下,固定住了,轉(zhuǎn)轉(zhuǎn)頭可以,hmm。。真的挺卡的

再接個命令證實一下,最直接和GPU渲染效率有關(guān)的就是分辨率嘍
HMD SP 100    54FPS
幀數(shù)立馬提高不少,果然是GPU渲染瓶頸
 
降低渲染品質(zhì)
Adjust scalability to medium  72FPS
成功了? 還沒有哦,這個太暴力了
這個肯定不是最優(yōu)的優(yōu)化結(jié)果了。因為肯定有些可以進一步做大量的優(yōu)化,有些和視覺相關(guān)比較大的調(diào)整可以提高質(zhì)量。而非粗暴的都調(diào)低了,那接下來就得找原因了
 
打開GPUprofiling: (Ctrl+Shift+,)
看下最大的GPU開銷在哪里

  1. Base pass:              Deferred Decals
  2. Lighting:                ReflectionEnvironment:
  3. Translucency:        Postprocessing:

 
從最大開銷的幾個點入手
BASEPASS: 敲入幾個渲染選項命令行:
r.Earlyzpass 1:增加draw calls和一部分GPU的消耗,但大大降低base pass的消耗
關(guān)閉了一些不需要的PP效果
一套最優(yōu)POP設(shè)置組合:

  1. Postprocessing setting:
  2. Scene color;
  3. Fringe intensity                  0
  4. Grain intensity                   0
  5. Color grading intensity     0
  6. Bloom setting
  7. LPV                                     0
  8. Ambient occlusion            0
  9. DOF Method Gaussian, 其他參數(shù) 全部 0
  10. Motion blur all                  0
  11. AA FXAA
  12. SSR 0 MAX roughness      0.01
  13. Ambient cubemap            0

再VR preview,
嗯,還是75,當(dāng)然了,DK2上頂格是75,再優(yōu)化看不出效果
13.39ms        75FPS
 
把品質(zhì)調(diào)高成high   Scalability high,還是75,哈哈,沒問題!
現(xiàn)在算優(yōu)化完了吧? 其實還可以再優(yōu)化,這時候的優(yōu)化就是以盡量提升畫質(zhì)但不降低幀數(shù)為目標(biāo)。
 

看看哪些還可以優(yōu)化的?   當(dāng)然有 !之前的Translucency花費好高
Viewmode: shade complexity 好紅, 一堆overdraw
Decal的花費也很高, Stat scenerendering, decals in view
環(huán)境反射的花費很高: 選中sphere reflection capture, 看一下總共有幾個,觀察他們影響范圍是否重疊嚴重
 
Vertex intensity: 好密啊。高密度的三角面幾乎看上去就像一個實體了, 一個三角面的大小在屏幕上的面積小于2*2個像素就會極大的增加開銷
還有Particle 。
現(xiàn)在基本上已經(jīng)定位到可執(zhí)行層面的原因了,一些原因也已經(jīng)通過可接受的渲染參數(shù)調(diào)整解決了;另外一些就必須要artist來優(yōu)化Assets本身了。
哪些工作最快,質(zhì)量損失最小,能夠換其他更能提升品質(zhì)的選項。
啟示他們并不需要這么多面,assets的優(yōu)化需要更多的時間。把scaleability有些選項提升到EPIC,當(dāng)然他們并不是全部
 
 
一些引起DRAW CALL數(shù)量多的原因

  1. 同屏看到的Actor太多,如果材質(zhì)復(fù)雜這個因素還會加成。 合并Actor,尤其是中遠處
  2. 材質(zhì)ID太多(or Section; Mesh elements)。重用材質(zhì)貼圖,盡量把同一材質(zhì)物體合成為一個物體
  3. 每個actor上的feature太多。主要是增加投影的屬性,增加custom depth的屬性
  4. 太多燈光投影(這里投影的消費來自于需要計算哪些物體需要被投影)

MESH DRAW CALL往往是個大頭,MESH ID 的數(shù)量可以在STATISTICS統(tǒng)計可以很方便的查看,從經(jīng)驗判斷哪些資源制作不合理
 
關(guān)于ACTOR設(shè)置feature會增加DRAW CALL數(shù)的是投影和custom depth,可以通過一些工具來檢查這些設(shè)置。使用property matrix來過濾,檢查,并修改
 
另外一個經(jīng)常使用的查找原因的方法排除法
通過隱藏各種元素,尋找哪個是導(dǎo)致DRAW CALL數(shù)量的大頭
記得隱藏HUD,有的時候HUD也是個大頭之一
Showflag.slate         1
如果是GPU瓶頸,最快速的驗證方式就是改變分辨率,降低分辨率可以極大提高幀數(shù)。為了抵消畸變糾正而產(chǎn)生的圖像模糊,或者分辨率的丟失,在渲染的的buff里往往是實際屏幕尺寸的120-130%,這樣增加了圖像的銳利度,但降低了渲染的速度。
HMD SP全稱是HMD 的screen percentage, 這個參數(shù)就是來修改渲染buff的尺寸的,HMD SP 120是默認值,改成100看看。
如果像剛才例子看到的,幀數(shù)有大幅度的提高,那就是GPU負擔(dān)太大的問題了,如果分辨率的改變對于幀數(shù)影響不大,很有可能是因為面太多了。
 

對這些內(nèi)容重點做檢查,看看有沒有超標(biāo)的現(xiàn)象出現(xiàn)

  1. 分辨率
  2. HMD SP
  3. 投影貼圖
  4. 面數(shù)/點數(shù)(燈光的多少,陰影的設(shè)置,多少物體)
  5. LOD,關(guān)閉shadow,燈光屏幕面積
  6. 面數(shù)密度太高,高到一個三角面小于2*2的像素,這個往往發(fā)生在遠處物體
  7. 點處理,點太多
  8. 點動畫的shader太復(fù)雜
  9. tessellation太復(fù)雜
  10. 太多UV,太多SG
  11. 查看staticmesh editor里點和面數(shù)的差別是否大
  12. 點沒有合并等
  13. view cost(HZB occlusion culling)
  14. Precumputed visibility volume
  15. Scene cost GPU particle simulation
  16. 材質(zhì)復(fù)雜度 
  17. quality switch,sin, pow, cos, divide, Noise很費
  18. 由于Texture 太多,太大 Texture caching反復(fù)的page in and out of 顯存
  19. 遮擋的culling計算
  20. Precumputed visibility volume
  21. 延遲燈光

當(dāng)使用lighting function,IES,接受投影,區(qū)域光,復(fù)雜shading modes的時候會變得更貴
反射ssr有問題,關(guān)掉。 后期, AO,很費
 
知道哪里有問題了,接下來就可以著手行動了,但之前做個目標(biāo)規(guī)劃還是可以事半功倍的。
最小化圖像質(zhì)量妥協(xié),是一種有的放矢的妥協(xié)策略。比如高質(zhì)量的陰影對于高品質(zhì)的抗鋸齒而言對于最終項目實際的表達效果次要。減小陰影品質(zhì)來換取高品質(zhì)AA就是一種有的放矢的妥協(xié)策略。因此盡量大的減小不是非常關(guān)心的渲染品質(zhì)部分,增加更可見的渲染品質(zhì)部分。
從容易做起,從開關(guān)一些渲染選項,品質(zhì)參數(shù)調(diào)整,到直接刪東西,優(yōu)化一個用到幾百次的物件,這些都是立竿見影的方式,這樣可以做允許的時間計劃內(nèi)完成目標(biāo),如果有更多時間和預(yù)算可以對相對低性價比的。
目標(biāo)75幀是必須的,不要說68,70,都不行,必須75,做實際體驗中有很大區(qū)別。
 
最常見的問題所在

  1. 測試環(huán)境不合適,燈光沒有build
  2. Actor或者材質(zhì)ID太多
  3. 面太多,沒有任何的LOD設(shè)置
  4. 燈光使用沒有節(jié)制: 各種動態(tài)投影,燈光類型隨意
  5. 沒有合理的設(shè)置CULL的條件
  6. 透明太多
  7. Postprocess太高級了

這些原因又互相影響,一方面的增加也會增加另外方面的開銷
 

其他一些VR的特有行為

  1. VR 需要畸變色差糾正
  2. VR需要雙屏
  3. VR需要更大的渲染分辨率
  4. VR需要傳遞傳感器信息

比如對于oculus部分是在驅(qū)動層級做掉了,比如如何糾正畸變,如何雙屏,如何傳遞傳感器信息。
對于傳感器信息和視頻匹配的準(zhǔn)確性,以及渲染的屏幕覆蓋率,在UE4里是可以根據(jù)需要來修改的,除了這些,其他就和以往的優(yōu)化思路一致了。
 

創(chuàng)建測試環(huán)境。找原因

  1. Testing in a stable enviroment
  2. run Standalone game
  3. use pause or slomo 0.001 to prevent random numbers
  4. Measuring few times
  5. 確保幀數(shù)不封頂
  6. s.Vsync 0
  7. s.MaxFPS
  8. 了解瓶頸
  9. GPU瓶頸
  10. profileGPU(ctol+shift+,)
  11. 分辨率
  12. HMD SP
  13. 投影貼圖
  14. 面數(shù)/點數(shù)(燈光的多少,陰影的設(shè)置,多少物體)
  15. LOD,關(guān)閉shadow,燈光屏幕面積
  16. 面數(shù)密度太高,高到一個三角面小于2*2的像素,這個往往發(fā)生在遠處物體
  17. 點處理,點太多
  18. 點動畫的shader太復(fù)雜
  19. tessellation太復(fù)雜
  20. 太多UV,太多SG
  21. 查看staticmesh editor里點和面數(shù)的差別是否大
  22. 點沒有合并等
  23. view cost(HZB occlusion culling)
  24. Precumputed visibility volume
  25. Scene cost GPU particle simulation
  26. 材質(zhì)復(fù)雜度 
  27. quality switch,sin, pow, cos, divide, Noise很費
  28. 遮擋的culling計算
  29. Precumputed visibility volume
  30. 延遲燈光
  31. 當(dāng)使用lighting function,IES,接受投影,區(qū)域光,復(fù)雜shading modes的時候會變得更貴
  32. 反射ssr有問題,關(guān)掉,后期AO,很費
  33. cup瓶頸,CUP GAME瓶頸
  34. stat game
  35. AI復(fù)雜度
  36. BP
  37. raycast
  38. 物理
  39. 內(nèi)存分配
  40. CUP RENDER瓶頸
  41. stat scenerendering
  42. 材質(zhì)ID太多
  43. 重用材質(zhì)貼圖,盡量把同一材質(zhì)物體合成為一個物體
  44. actor太多,如果材質(zhì)復(fù)雜這個因素還會加成
  45. 合物體,尤其是中遠處
  46. 每個actor上的feature太多,比如增加投影的屬性,增加custom depth的屬性
  47. 太多燈光投影(這里投影的消費來自于需要計算哪些物體需要被投影)

找到瓶頸的方法

  1. stat unit
  2. disable一些stuff,然后看效率上的區(qū)別
  3. 一些可調(diào)的show flag
  4. 開關(guān)屏幕反射
  5. 開關(guān)AO
  6. 開關(guān)AA
  7. 開關(guān)bloom
  8. 開關(guān)延遲燈光
  9. 開關(guān)燈光類型
  10. 開關(guān)動態(tài)陰影
  11. 開關(guān)GI
  12. 開關(guān)后期
  13. 開關(guān)環(huán)境反射
  14. 開關(guān)折射
  15. 開關(guān)貼畫
  16. 開關(guān)半透明
  17. 開關(guān)tessellation
  18. viemode
  19. ProfileGPU
  20. ProfileCPU
  21. stat game
  22. stat scenerendering
  23. Profiler
     


 
后期優(yōu)化首選項:

  1. Scene color fringe;
  2. ambient cubemap,
  3. image based lens flares;
  4. LPV off;  
  5. Grain intensity,
  6. DOF off,
  7. ssr off,
  8. or roughness 0.01;
  9. Motion blur off

最后選擇的參數(shù)需要應(yīng)用到DEVICE PROFILES里或者BP里
 
減小 shader的 instruction的數(shù)量
減少Texture sample的數(shù)量:把經(jīng)常使用到同一個物體上的Pattern合在一張貼圖上;去掉對質(zhì)量影響很小的貼圖,比如Specular,AO在實際情況中平衡來使用
使用quality switch,sin, pow, cos, divide, Noise,多向量的計算總是大于單向量的計算
 
UE4里由于使用了延遲燈光,所以燈光的優(yōu)化比前向渲染方便的多。最快速最有效的方法:使用靜態(tài)光源。
如果使用的事動態(tài)光減小 Lighting cull,半徑,衰減,Z INTERSSECTION, cone大小角度。總之盡量減少重疊
 
投影的開銷最大往往不是來自于pixel shader,而是來自于被投影的mesh面數(shù)太多,還會被燈光數(shù)量,投影物體數(shù)量放大
關(guān)閉投影的燈光;減小范圍或張角;減面,加LOD
 r.Shadow.MaxResolution
 
創(chuàng)造性作假:

  1. 三角面:
  2. 遠處mattinpaiting
  3. 投影面片,畫在貼圖上

 
一個作品的優(yōu)化不是一朝一夕的事情,需要確定目標(biāo)配置:確定最低配置,配置范圍小,這樣的優(yōu)化才更有針對性,并且學(xué)會在開闊的視野在設(shè)計時需要巧妙的避免不必要的內(nèi)容,學(xué)會如何制定Budget:質(zhì)量優(yōu)先驅(qū)動;快速原型制作;分析制定
對內(nèi)容制作者前期的培訓(xùn)花費是值得的,完成這些工作之后,一個高品質(zhì)的VR作品就會誕生。


朱峰社區(qū)vip超值服務(wù) 朱峰社區(qū)vip超值服務(wù)

朱峰社區(qū)網(wǎng)頁版
朱峰社區(qū)網(wǎng)頁版(手機掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請查看版權(quán)規(guī)則。本平臺提供圖文僅可用于個人學(xué)習(xí),如用于商業(yè)請購買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

hsa900909

hsa900909

普通會員

原來是這個樣子的
sdfsdf -hsa900909

贊0

踩0

17年2月6日

2005-2024 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2024 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點擊您的鏈接,您需要需刷新一下才行;同一個好友僅能點擊一次。
購買VIP,觀看所有收費教程!!