【UE官方培训】UE渲染管线介绍

本文最后更新于:2025年1月14日 晚上

【[官方培训]01-实时渲染基础上 | 陈拓 Epic】 https://www.bilibili.com/video/BV1Tt4y1H7kQ/?share_source=copy_web&vd_source=5d07d04eb2516df147034367e7af6fd2

渲染前准备

会有多个线程在跑,游戏线程、渲染线程和GPU线程,这样流水线的走,如果比较理想,就是稳定30帧

距离

距离阈值(Desired Max draw distance)

如果不想对每一个物体都设置这个距离,可以用Cull Distance Volume,包围的东西都会应用culling,可以设置size和distance,是一个数组,比如0-500size的东西应用一个culling,500-10000的又应用一个culling

如果想某些不被剔除可以用Never distance Cull,或者勾掉那个volume

视锥

这个很好理解,也就是在相机里面才会渲染

可以用FreezeRendering来跳出观察

ToggleDebugCamera

预计算可见性

Precomputed Visibility Volume

然后得编译一下,Compile->Precompute Static Visibility

要用这个得在Setting里面开启Precompute Visibility

遮挡剔除

几何体渲染

通过以上的步骤,可以拿到该被渲染的物体列表,但是如果直接渲染,会造成一些像素重复绘制,所以需要找出哪些模型应该先被渲染。

Early Z:GPU驱动会在执行像素着色器前先检查改点深度,提前跳过不符合条件的像素。为了利用这个特性,可以开启Prepass,提前把深度写入buffer里面,可以加快速度。

Drawcall:绘制拥有相同属性的一组多边形。

不同的材质会不同的drawcall(*2是因为有earlyz)

切换材质影响性能开销,GPU渲染时,引擎会根据材质对物体进行排序,相同材质的会在同一个批次里绘制。

stat RHI命令可以查看drawcall数量

drawcall数量比三角形数量更影响性能。

引擎有一些基础的drawcall开销

降低drawcall方法:

模型合并(Merge Actor),但是有副作用:

遮挡检测性能更差(因为合批模型会变大)

计算碰撞性能更差(合并之后更大)

占用更大内存

Modular Meshes

Instanceing(只针对相同模型 )

Level Of Detail(LOD)和HLOD

降低模型面数

合并模型假如有多个材质还是会多个drawcaal,可以考虑合并材质

调试可以用Render Doc插件,来看详细的DrawCall信息

Shader

VertexShader

1.坐标转换(局部空间->世界空间->投影空间)

2.顶点着色

3.应用世界坐标偏移(WPO):鸟、水体、飘动的草(顶点动画

image-20250107000703048

VS并不直接修改模型,只是视觉上的效果,CPU无法察觉VS的修改,所以物理和碰撞都不会发生变化。

动画越复杂、顶点越多性能越慢

对远距离的物体应该禁用顶点动画(反正也看不到)

对高精度的模型应该应用简单的VS

光栅化和G-Buffer

经过这些之后,可以得到每个顶点在屏幕上的坐标

因为硬件问题,计算一个像素还需要计算周边2*2的像素,所以会造成overShading

纹理

因为法向是归一化,所以只需要知道两个就够了

采用mipmap,会让内存变大1.3倍(一直1/4),但是会清晰很多(远处的物体也能平均取到)

像素着色器和材质

Pixel shader,实现光照、雾这些效果

UE里面会有一个连线的材质器,然后会自动转成不同平台的shader语言嵌入进去

反射

反射捕获

Reflection Capture

cubemap,预先计算,但是不太准确,而且分辨率会影响反射效果

屏幕空间反射

默认开启,准确,有噪点,只会反射能看到的物体(根据G-Buffer算出来的)

平面反射

Planar Reflection

适合需要精确反射的表面(镜子)

其实就是相机换了一个位置,重新渲染了一遍,所以比较损耗性能,但是比较精确。

Lumen

RT Reflection

光照

静态光照

UE里面生成lightmap用lightmass

动态光照

动态阴影

常规动态阴影

以光的视角作为摄像机渲染,能看到的就会被点亮

把需要渲染的物体在光源的矩阵下转换,然后计算深度,如果前面有东西挡住了,就说这里是阴影

级联阴影

因为普通的阴影只有一张map,级联阴影就是分隔了多个视锥,然后叠加

逐对象阴影

固定光源,对每个对象都生成阴影

距离场阴影

Lumen

UE5全新的全局光照,有一些新特性

Color Bleeding:物品本身颜色对周围光照的影响

Soft indirect shadow:间接软阴影,当前帧和前几帧的混合

半透明

延迟渲染难以处理半透明材质,可以考虑在前向渲染管线渲染

后期处理

自带的效果,Post Process Volume(可以设置为无限大)

实时Ray Tracing

性能调试


【UE官方培训】UE渲染管线介绍
https://rorschachandbat.github.io/游戏杂货铺/【UE官方培训】UE渲染管线介绍/
作者
R
发布于
2025年1月6日
许可协议