图片使用支持的压缩纹理格式如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用于:
-
通过减少采样以渲染每个像素的纹素数量,或增加所采样本的存储位置,加快渲染时间;
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://blog.csdn.net/qq_31788759/article/details/81254696
减少顶点数:
自动生成LOD
静态网格体LOD
HLOD
http://api.unrealengine.com/CHN/Engine/HLOD/index.html
骨架网格体LOD
地形渲染优化
地形细节级别(LOD)系统已经过修改。现在,它不再根据距离,而是根据屏幕大小决定组件的细节,与静态网格体LOD系统的工作原理相似。LOD分配将基于屏幕中的大小为远景三角形给出更一致的尺寸,从而达到前所未有的精细度。
(左图为旧方法;右图为新方法)
您可以前往 视口>查看器>LOD 查看地形LOD。
以下设置可根据屏幕大小控制出现LOD过渡的地方。此外,您现在还可以对材质曲面细分进行控制,使用启动动态阴影的定向光照时可提升性能。
减少渲染物体数:
剔除距离体积(Cull Distance Volume)
剔除距离体积(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