[UE4]渲染優化

原文:

https://blog.csdn.net/or_7r_ccl/article/details/77584699

性能及分析:

http://api.unrealengine.com/CHN/Engine/Performance/index.html#%E9%80%9A%E7%94%A8%E6%8F%90%E7%A4%BA

CPU性能分析:

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

GPU性能分析:

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

https://www.cnblogs.com/sevenyuan/p/7196687.html?utm_source=itdadao&utm_medium=referral

Pixel-bound

Translucent的材质物体的大规模使用,半透明粒子都会导致在像素渲染级别上出现瓶颈。

在材质的使用上,Opaque的性能是最高的,因为可以有效的进行Z-buffer裁剪,其次是Masked材质,性能消耗最高的是Translucent。尤其是场景内出现大规模的半透明物体叠加的时候,就会产生大量的绘制负担。

在场景布局上,利用Opaque的物体进行遮蔽,尽量的避免镜头内出现大量半透明物体,有效的利用LOD都是非常重要的。

还有一个方面就是Quad Overdraw,这个似乎是由于GPU的渲染机制引起的,直接引用视频中看到的图片:

clip_image001

在优化上,要尽量避免屏幕空间内出现小而长的三角形,将其分割为更多的三角形反而更加有效。同时,将屏幕内足够小的物体进行LOD,也可以有效的避免性能消耗。对于Foliage上的叶子,可以使用Particle Trimming来避免过度绘制,据说Speed Tree是自带这个功能的,不过由于没有使用过所以无法确认。particle trimming如其名,在粒子的优化中也有作用。

image

Vertex-bound

通常受到影响的就是场景中三角形的数量,如果印象没有错的话,当前UE4内部所有的面应该都是三角形的。会在这里产生瓶颈的还有阴影投射与曲面细分,关于曲面细分,官方有建议是尽量不要使用,在建模阶段直接进行细分是更加具有效率的。

UV Seam和Hard Edges会额外的增加计算的顶点计算的负担,要尽量避免减少使用的频度。

同时Morph Target与WolrdPostionOffset也会产生更多的顶点计算,Skinned Mesh也是如此,不过这些方面,除了WorldPostionOffset可以尽量避免使用之外,只能从游戏逻辑本身的设计上入手了呢。

如果有使用LandScape的话,尽量减少LandScape的面数可以很好的提高性能。

为了避免过量的顶点计算负担,对于远景物体尽量使用BillBoard或者Imposter meshes、Skyboxe texture来代替3D物体。

Memory-bound

如果有大量的材质使用了不同的贴图,导致Texture Sample的数量爆炸的话,就会自然的变成瓶颈。

UE4有使用Texture Streaming,如果存储空间爆炸了的话,就会出现贴图模糊的情况,这时候可以使用Stat Streaming指令进行分析。

image

对于使用相同的材质的情况,可以通过材质中的设定让他们共享Texture。同时在材质中启用GPU本身支持的压缩可以有效的减少存储空间的占用,尽量的使用Texture Packing也是非常的重要的。载入的时候尽量使用Mip级别较低的图片,可以有效的减少存储占用。在材质的贴图使用中,尽量的进行优化的配置也非常的重要。

image

对于不需要太精细的贴图可以限制其最大尺寸

clip_image001[4]

另外,光照贴图等也是被算作贴图占用存储空间的,因此也有在这里产生瓶颈的可能性。因此尽量的调低光照贴图的分辨率可以很好的提高性能。

使用Alt+0/Light Map Density可以对场景中的光照贴图密度进行分析。

在窗口>统计总也能进一步的对当前的存储使用状况进行分析

猜你喜欢

转载自blog.csdn.net/qq173681019/article/details/82590152