UE4优化

https://www.unrealengine.com/zh-CN/blog/chn-pubg-mobile-ue4-development-experience
https://zhuanlan.zhihu.com/p/36434616
http://api.unrealengine.com/CHN/Engine/Performance/Profiler/index.html
http://api.unrealengine.com/CHN/Engine/Rendering/ParticleSystems/Optimization/Concepts/index.html
https://docs.unrealengine.com/en-us/Engine/Performance/Guidelines

##美术注意
减少每个对象的元素数
组合模型使单个模型面数可观(300+面)
不透明性能(z buffer剔除)>cut out > 半透明(overdraw)
uv接缝\硬边少用(会增大顶点数)
复杂的顶点处理用在skinmesh比staticMesh上更费
顶点处理开销在用到变形和世界坐标偏移时,消耗更大;贴图采用由于缓存会变慢
细分增大开销,最好模型本身已经细分过。
大物体减小,更好地遮挡剔除
贴图格式更小材质更快(Dxt1是4bit/pixel,dxt5s 8bpp,argb是32bpp)
更小分辨率的贴图更快。有时候会更光滑,双线性滤波产生比贴图格式更好的着色
shader指令少,贴图采样少性能更好(材质编辑器stats和shader complex查看)。用材质编辑器和view模式的shader复杂度对材质进行优化
不要关掉mipmap,如果贴图会以更小的状态显示,避免贴图cache丢失导致的变慢
一些材质表达式更耗(sin, pow, cos, divide, noise),最快的有乘、加、减、clamp
unlit光照模型最快,lit用的最多,其他模型更耗费

不同lod不要用不同的、简化的材质球(切换shader开销)
远处的shader设置为极简模式,降低GPU开销。
Dynamic Instancing, 用于大型世界中减少Draw Call。根据当前View动态合并同VertexType的资源,同时可以支持不同的材质实例在单个DC中完成,把材质的uniform拼合到了instance的vertex stream中。
渲染的次序调整,大型物件(如天空、地表)渲染放到最后,提高GPU效率。
添加了移动平台的LLM进行更准确的资源分类的内存统计。

##策划注意
限制动态、静态光数量
面光更费,尽量别用
调整小物体的渲染距离,更好的剔除
相似的源头的光想办法合并,比如车前头的灯,用一个单独的灯和一个函数让它看起来是两个
static光照最快,stationary次快,动态光消耗最大
尽量减小灯的范围(衰减半径、角度等)
动态或静态的点光源最费,平行光稍微省一点儿,聚光灯最省。shadowmap生成的开销正比于阴影投射物体的光四椎体
广告牌、代替的网格或天空球贴图可以被用来假装精细的几何
考虑遮挡剔除,用r.VisualizeOccludedPrimitives检查
避免Light Propagation volumes,或通过GIReplace材质表达式限制其开销或在大多数物体上禁用它
尽可能关掉投射阴影(物体或光源)
用ProfileGPU(Ctrl + Shift + ,)
贴花消耗大,他们覆盖的像素都要再渲染一遍

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

你可能感兴趣的:(UE4)