【剖析虚幻渲染体系】03-渲染机制
阅读目标
- 了解 UE 渲染管线的过程,以及各部分的设计作用
- 了解目前渲染管线的优化逻辑与局限性
模型渲染管线
传统图形 API 的绘制
比如 OpenGL,首先在 CPU 端创建资源数据,然后在 GPU 上创建与绑定数据,最后调用 API 的绘制接口
对于商业游戏引擎,由于其业务需求需要每秒数十帧渲染复杂场景,有着大量的 DrawCall,不能直接调用图形 API
在真正调用图形 API 进行绘制前,必须要经过很多调优操作,比如:
- 遮挡剔除
- 动态和静态合并
- 动态 Instance
- 缓存状态和命令
- 生成中间指令再转译为图形 API 指令
- 等等
UE 4.22 之后的 Pipeline
- FPrimitiveSceneProxy
- FMeshBatch
- InitViews ()
- FMeshPassProcessor:: AddMeshBatch ()
- FMeshDrawCommand
- RenderBasePass ()
- SubmitMeshDrawCommands ()
- RHICommandList
- DrawIndexedPrimitive
从 FPrimitiveSceneProxy 到 FMeshBatch
FPrimitiveSceneProxy
是游戏线程中的 UPrimitiveComponent
在渲染线程中的代理(拷贝副本),不包含所要参加的绘制 Pass
FMeshBatch
包含了绘制 Pass 所需要的所有信息
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Fubuki の Donuts!