首先,什么是渲染管线?
渲染管线就是将3D空间中的事物转化为2D平面图(降维打击)。
计算机图形渲染管线分为三个大的阶段:
一、应用程序阶段
二、几何阶段
三、光栅化阶段
应用阶段(主要由CPU负责)
一、剔除
剔除总共分为四步:
1,距离剔除 (默认不开启,details->LOD)
当从近向远拉镜头的时候,会看到有物体突然消失的效果,UE4会自动进行一个检查,看一个物体是否超出了某个距离,如果超过了,那么就不渲染它。在下一帧中,就不会被渲染。它不仅适用于物体,还适用于粒子。
2,视锥体剔除(默认开启,并且无法被禁用)
摄像头有一个视角,超出视角的物体是看不见的,所以不会被渲染。
3,预计算可见性(默认不开启,world settings->Precomputed Visibility)
渲染前,会与计算哪些物体是被遮挡的,如果被遮挡了,就不渲染这个物体。
细节:可以打开可视化,这时候UE4会显示一个一个的单元格,每当摄像机走到单元格,就会向单元格询问,我能看到哪些?我不能看到哪些?能看到的,就会被渲染。
4,遮挡剔除
精确计算每一个物体的可见性,询问每一个模型的可见性。而巨大的物体通常是被一直渲染的。(可以通过freeze rendering)
以上四种剔除方式的消耗是递增的。
讨论:那既然3和4的损耗大,为什么不把小的模型合并成大的模型呢?因为这样就可以减少对象数量了。
这样的确可以减少模型数量,但是即使只能看到一个角,整个大的模型也都会被渲染,而大部分模型我们是看不到的。
二、Drawcall
传递各项参数给对应的函数接口,交由GPU处理。参数有:顶点坐标、法向量、纹理坐