ue4 渲染等優化參考點。

圖片使用支持的壓縮紋理格式如ETC1,PVRTC,S3TC等格式而不是常見的jpg,png格式加快圖片解析,這個UE4已經幫你做了。

下面是關於渲染效率提升的知識點:

影響OpenGL繪製的效率直接和OpenGL API相關的
一部分來自於其在CPU上執行的開銷,一部分來自於渲染本身在GPU上執行的開銷
CPU上執行的開銷主要是由於調用API導致的OpenGL驅動的開銷,這類開銷一般可以分成三大類:
第一類是由於驅動提交渲染命令的開銷,即調用OpenGL draw函數造成;通過批次合併(即將合理的方式將渲染狀態相同多個可渲染物的draw繪製數據合併到一批繪製),以及實例渲染(即將諸多幾何數據近似的可渲染物通過一次drawInstance函數繪製,而將這些可渲染物的區別通過數組傳入渲染命令中),可以顯著降低第一類開銷
第二類是由於驅動提交狀態命令導致的狀態命令切換的開銷,這種切換命令包括了固定管線中的各種光照函數的切換,片段測試與操作的切換,不同Shader, Texture之間的切換,甚至包括VBO, UBO等GPU緩衝對象之間的開銷,這兩類情況在D3D API使用時也是一樣,甚至有表明在D3D中更顯著;通過對可渲染物進行有效的排序,將狀態相同的部分的可渲染物儘可能依次渲染,從而減少狀態的切換,可以較明顯減少第二類開銷
第三類就是其他由於OpenGL API被調用導致加載或是同步數據的驅動開銷,減少數據的傳輸,使用VAO,VBO等緩存數據,避免重傳數據。

 

Mipmap用於:

  • 細節層次(LOD)[6] [7]

  • 提高圖像質量。從大紋理渲染,其中僅使用小的,不連續的紋素子集可以容易地產生莫爾圖案 ;

  • 通過減少採樣以渲染每個像素的紋素數量,或增加所採樣本的存儲位置,加快渲染時間;

  • 減輕GPUCPU上的壓力

    該圖顯示了mipmap如何減少遠距離的混疊。請注意左側圖像上的莫爾條紋圖案

Mipmap生成工具:

ue4自帶生成紋理工具(必須是2的冪次方或者將power of two mode 設置爲非None)

針對Adobe Photoshop的NVIDIA Texture Tools插件

https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop

 

 

 

下面是UE4中可以提高渲染效率的一些參考點

陰影效率:

光照選擇:

https://blog.csdn.net/u010385624/article/details/89339320

尤其建議使用固定光源的級聯陰影

 

LOD 取消陰影:

 

 

 

減少drawCall:

儘量減少一個物體使用多個材質(材質material,不是texture)(因爲一個材質至少會有一次drawCall):

使用合併Actor工具,進行頂點合併或者合併爲多實例。

Instanced Static Mesh(不使用LOD)

HierarchicalInstancedStaticMeshComponent(使用LOD)

https://answers.unrealengine.com/questions/127435/using-instanced-meshes-doesnt-reduce-draw-calls.html

 

https://blog.csdn.net/qq_31788759/article/details/81254696

 

 

減少頂點數:

自動生成LOD

靜態網格體LOD

https://api.unrealengine.com/CHN/Engine/Content/Types/StaticMeshes/HowTo/AutomaticLODGeneration/index.html

 

 

HLOD

http://api.unrealengine.com/CHN/Engine/HLOD/index.html

 

骨架網格體LOD

https://api.unrealengine.com/CHN/Engine/Content/Types/SkeletalMeshes/SkeletalMeshReductionTool/index.html

 

 

地形渲染優化

地形細節級別(LOD)系統已經過修改。現在,它不再根據距離,而是根據屏幕大小決定組件的細節,與靜態網格體LOD系統的工作原理相似。LOD分配將基於屏幕中的大小爲遠景三角形給出更一致的尺寸,從而達到前所未有的精細度。

 

(左圖爲舊方法;右圖爲新方法)

您可以前往 視口>查看器>LOD 查看地形LOD。

以下設置可根據屏幕大小控制出現LOD過渡的地方。此外,您現在還可以對材質曲面細分進行控制,使用啓動動態陰影的定向光照時可提升性能。

 

 

減少渲染物體數:

剔除距離體積(Cull Distance Volume)

http://api.unrealengine.com/CHN/Engine/Actors/Volumes/index.html#%E5%89%94%E9%99%A4%E8%B7%9D%E7%A6%BB%E4%BD%93%E7%A7%AF%EF%BC%88culldistancevolume%EF%BC%89

剔除距離體積(Cull Distance Volume)

剔除距離體積(Cull Distance Volume) 是優化工具,藉助它們,你可以基於對象距攝像機的距離和其大小對對象進行剔除(不繪製到屏幕)。它可以在對象尺寸小到可被視爲不重要時不繪製對象,從而幫助你優化場景。按照沿其最長有效維度的邊界框計算大小,選擇的剔除距離是與該大小最接近的剔除距離。

剔除距離體積(Cull Distance Volume)設置取決於 剔除距離(Cull Distances) 屬性,如以下 細節(Details) 面板截圖所示。

上圖中的屬性定義下列行爲:

  • 體積內大小最接近50單位(距離等於或小於85單位)的對象會在它們距攝像機500單位或更遠時被剔除(消失)。

  • 體積內大小最接近120單位(距離介於85單位和210單位之間)的對象會在它們距攝像機1000單位或更遠時被剔除(消失)。

  • 體積內大小最接近300單位(距離等於或大於210單位)的對象將永不會被剔除,因爲在這種情況下,0被當作無窮大,這意味着永遠不可能距攝像機足夠遠。

要設置,首先向“剔除距離(Cull Distances)”數組中添加一個新條目,方法是單擊按鈕。接下來,只需填入給定對象的大小以及你希望該尺寸或小於該尺寸的對象被剔除時所處的距離。無需按照特定的順序創建這些屬性。

可視性和遮擋剔除

http://api.unrealengine.com/CHN/Engine/Rendering/VisibilityCulling/index.html

 

着色器效率:

加速片源着色:減少模糊處理等循環操作,使用紋理查詢來代替程序化生成,僅在必要時使用歸一化( Normalization),將更多片源着色器工作放到頂點着色器中完成, 減少除法操作。計算儘量簡單:能夠得到一個近似值就儘量用,不要用類似sin(),cos(),tan()的比較消耗的操作。

減少紋理帶寬:減少紋理尺寸,使用mipmapping, 壓縮所有的彩色紋理

 

顯示效果效率

可延展性參考

http://api.unrealengine.com/CHN/Engine/Performance/Scalability/ScalabilityReference/index.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章