周报 第22期
剖析虚幻渲染体系(01)- 综述和基础(0向往0)
如题所述,一篇综述性质的文章,因此篇幅有点长,但内容不错,值得花点时间阅读。
- 虚幻的历史:UE1(1995)-> UE2(1998) -> UE3(2004) -> UE4(2008) -> UE5(2021)。
- 序列博文旨在:能够较完整地剖析UE渲染体系的全貌。
- 基础模块:Lambda,智能指针,Delegate,代码规范,STL白名单,容器等等底层语言相关的内容。
- 引擎模块:内存分配,垃圾回收,内存屏障,引擎启动流程。
Mesh Generation and Editing at Runtime in UE4.26
- 运行时网格体生产和编辑的方法有:UProceduralMeshComponent,UStaticMeshComponent(4.25 above),RuntimeMeshComponent(Plugin),USimpleDynamicMeshComponent。
- 深入阐述了USimpleDynamicMeshComponent和FDynamicMesh3的具体实现原理。
2018TGDC王祢:UE4制作多人大地型游戏的优化
- 动画优化
- 把在虚拟机上计算的EvenGraph转到C++
- Update Rate Optimization(URO)骨骼计算分帧处理
- 大量SceneComponent(SC)的Transform更新
- Auto Manage Attachment管理是SC,若非激活态,则不更新。
- UI
- Cache UI的位置和大小
- Batching
- Particle的Overdraw
- 所有的半透也可以以独立的RenderPass以低分辨率绘制在upscale回来以减少overdraw带来的大量的fragment的开销
- Level Streaming
- IO放在Worker thread。
- Time Slice分帧异步处理Postload
- 渲染线程
- Culling:ES3.1->Hardware occlusion query, Es3.1以下->software occlusion
- DrawCalls: HISCM, HLOD, Dynamic Instancing.
- 减少渲染状态切换
- scalability系统处理适配和迭代
UE4项目《和平精英》渲染技术浅析
- Drawcall在300以下。
- 通过调节Scalability参数来控制屏幕上显示的Foliage实例的数量,以此来控制Drawcall数量。
- 网格体的几何拓扑复杂度。
- 渲染管线用的是Forward Rendering
- 将可能产生大范围重叠覆盖并且Overdraw很高的植被(Masked Mesh)元素执行了Early Z-pass。这样做在后面再次渲染自身和其他物体的时候可以有效地由硬件来做Early Z剔除,缓解FS渲染压力
- UE4提供了Foliage Scalability特性,游戏可以在运行时动态决定植被的密度,所以这点对于适配不同档次的机型非常有帮助。
- 场景中所有的静态物体都有HLOD烘培
- 建筑模型设计方面有一点是值得借鉴的,建筑在设计上最大可能地重用一套贴图
Storing vertex data: To interleave or not to interleave?
- performance: de-interleave win.
- storage: interleave win.(LZ4 compression)