ue4 渲染学习笔记

本文探讨了游戏渲染中的CMD命令,如StatInitviews、FreezeRendering和statRHI,用于性能分析和调试。强调了DrawCall数量和三角面数对性能的影响,以及如何通过LOD、实例化和合并网格来降低DrawCall。同时,介绍了着色器、纹理和材质的优化策略,以及静态和动态光照、阴影和后期处理对性能的贡献。建议根据场景需求和目标帧率进行适当的优化配置。
摘要由CSDN通过智能技术生成

渲染相关常用的CMD

  • Stat Initviews 统计初始画面 会在界面上显示遮挡的概述
  • Freezerendering 冻结当前的遮挡,可以看到那些被遮挡了没有渲染。那些渲染了
  • stat RHI 可以查看Draw Call,三角面的个数,针对当前的画面;
  • stat unit 显示每帧时间,游戏,GPU,绘制时间,在检查性能问题时要先看看这个。

渲染性能分析

  • 一般两千到3千的DrawCall是合理的。五千时就很高了,超过五千就可能出问题了。对于VR和手机一般是一千次左右
  • 对于一个场景中三角形的数量不一定是造成性能问题的关键,可能是因为物体的材质过于复杂,导致DrawCall过高引起的。
  • 每个DrawCall都会有一些基础损耗
  • 对场景有着苛刻的要求,希望它能保持逼真的外观, 延迟渲染器较为适合
  • 对于要求使用多重采样抗锯齿(MSAA)的项目,向前渲染器较为合适
  • GBuffer 它会创建渲染过程后期各阶段需要的所有信息。来帮助实现实时渲染
  • 过度使用半透明材质会导致丢帧,这是因为 每个材质都会添加要与其后像素混合的新图层。
  • 在创建场景时应始终以特定的帧率为目标。在时间方面,可以将毫秒值作为目标。
  • 动态阴影对性能的消耗较大,这个是阴影投射网格体的多边形数量造成的。
  • 绘制线程用于计算场景中的遮蔽
  • 游戏线程计算动画和处理逻辑
  • GPU线程在屏幕上对场景进行着色和绘制

降低DrawCall的一些方法

  • 最好使用少量大型模型,而不是大量小型模型,要注意寻找平衡
  • 最好减少模型数量,增大模型尺寸,这样可以节省一定内存
  • 可以在场景中合并一些消耗大的网格体,只有出问题的时才需要进行
  • 可以使用实例化静态网格体渲染提升性能,这个适用于海量的对象如场景中的草之类的。不要用于孤立对象使用比较少的对象。
  • 注意使用Lod,HLod

着色器

  • 顶点着色器——可以使用顶点着色来制作一些动画,节省CPU性能效果也会比较好,如草地,旗帜。着色器是进行了优化的可以达到很好性能,其中本身的模型并没有移动,只是在渲染的时候进行了位移,碰撞物理啥不会受到影响。这种操作只能用于渲染效果。
  • 过度着色——Lod有利于过度着色,距离越远像素密度越大,着色越慢,通过减少面数可以改善过度着色
  • GBuffer——一组以不同方式渲染的场景图像,用于延迟渲染;会缓存一组不同属性的图片,这个会占用较多内存,一般我们不能对他做处理。
  • UE的材质最后都会编译成着色器,而且会编译比较多的着色器(这个是出于性能的考量)
  • Dx的shader语言HLSL

纹理和材质

  • 当纹理导入UE4的时候会自动进行压缩,可以节省内存和带宽。
  • 使用多级纹理可以让场景噪点更少。
  • 材质的宽和高必须有一个是2的次幂。
  • 材质采样的纹理有上限,一般是16个,能用的是13个。有些间接性的纹理会占用位置。
  • 反射捕获 ——并不精确,但是非常快,需要预先计算;局部范围。数量最好不要超过8个。
  • 平面反射——使用于平面,可以实时,但是消耗比较大。局部范围。
  • SSR——屏幕空间反射,默认启用,能反射所有的对象,实时反射;有噪点,损耗大只会反射当前可见的内容,会失真

光照

  • 静态光照——通过事先的烘焙,把光照和阴影信息存储到Lightmaps中,在渲染的时候会读取贴图的信息加入到对应的物体上。光照贴图的大小会影响内存。
  • 衰减半径很大或者源半径很大的光源会增加重新构建的时间,为了使用关照贴图,需要模型有光照的UV
  • 阴影——常规动态阴影;逐个对象阴影(固定光源阴影);级联阴影;距离场阴影(UE4实用);有插图阴影;接触阴影;胶囊体阴影(不常用 )
  • 对于光源尽量减少重叠,降低半径,调整最大的绘制距离
  • 透明物体的渲染非常消耗,如果要使用透明物体,它的材质要尽量简单;最好能使用一些其他方式进行仿造。
  • 光源和衰减半径,光照贴图分辨率和烘焙设置,两个因素会影响静态光照的Lightmass烘焙时间
  • 间接光照缓存(或体积光照贴图),对动态网格体给予光照
  • 建议根据网格体大小,靠近相机镜头、考虑内存约束并与其它网格体保持一致,选取不会对质量造成明显可见的牺牲的最低可行选项。来确定场景中对象的光照贴图分辨率
  • 具有较高多边形计数的场景,在同一片区域存在大量投射阴影的光源,这种场景下会造成动态和CSM阴影方法开销增加
  • 后期处理效果 在渲染结束时应用
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值