前言
UE5渲染管线相较于UE4来说,更加复杂,但作为图程,总会碰到碰到其他组同学提交的bug,此时熟悉渲染管线就显得十分重要
本篇不会一股脑解析每个pass的细节,先进行总览,解析每个pass主要在干什么,每个pass的细节在后续会一章一章依次介绍
渲染管线总览
如上图所示,这是UE5目前的渲染管线,核心在于将“几何体的绘制”与“光照的计算”分离开,并引入Nanite和Lumen这两大核心技术
CPU Frame & Setup
- 总览:在GPU开始绘制像素之前,CPU需要决定“画什么”
-
职责
- Game Thread:处理游戏逻辑、物理、动画、蓝图等
-
Render Thread:收集需要渲染的对象
-
Culling:剔除掉摄像机看不到的物体
Distance Culling->Frustum Culling->Pre Computed Visibility->HIZB Culling->Nanite Culling
Pre-Pass / Early Z
- 总览:GPU开始处理几何体,但不计算颜色
- 职责
- Early Z Pass:渲染场景中所有不透明物体的深度并写入Depth Buffer。这一步的目的是为了防止Overdraw(过度绘制)。在后续计算复杂颜色时,被挡住的像素就可以直接丢弃,不浪费性能
- Nanite Rasterization:Nanite网格体在此处被评估,决定哪些三角形需要在屏幕空间被光栅化,并将数据写入可见性缓冲区(Visibility Buffer)
Base Pass
- 总览:把所有Opaque和Masked物体的表面属性记录在屏幕空间的二维纹理上
- 职责
- 场景中的所有不透明物体会被渲染,它们的材质信息会被分别输出到多张屏幕大小的纹理中
- 处理预计算光照与自发光
- 生成速度缓冲
- 深度与模板写入
Lighting & Shadows
- 总览:计算屏幕空间光照
- 职责
- 计算阴影
- 计算直接光照+间接光照
Reflections
- 总览:计算反射效果
- 职责
- 计算反射效果,如reflect capture、planer reflect、ssr、Lumen reflect、raytracing reflect
Additional Pass & Translucency
- 总览:计算大气、体积云、体积雾等半透明效果
- 职责
- 计算一些需要的半透明效果,如头发、水、折射等
Post Process
- 总览:给照片加滤镜和进行最后的物理光学校正
- 职责
- 抗锯齿
- 模拟泛光
- 动态模糊
- 景深
- 色调映射
总结
UE5的渲染管线是一个高度优化的流水线:先剔除 -> 铺深度 -> 存材质(GBuffer) -> 算光影(Lumen/VSM) -> 画半透明 -> 加滤镜(后处理) -> 盖UI




Comments | NOTHING