简单来说,渲染管线是一条从 场景数据 → 屏幕图像 的生产流水线。下面我们结合流程图,讲讲它的每一个阶段在做什么。

一、应用阶段(Application)——让世界动起来
这一阶段其实还没开始“画图”。它属于游戏逻辑层:C# 脚本运行、动画播放、物体移动、摄像机更新,所有能改变场景状态的行为都发生在这里。
关键点:
这一阶段决定了“下一帧要画什么”。脚本中的 、
Update()、
LateUpdate() 都属于这里。当 Transform、动画或粒子变化时,它们会影响接下来的渲染结果。
FixedUpdate()
可以理解为:这是“导演排好演员站位”的阶段。
二、几何阶段(Geometry Processing)——挑演员上场
场景中可能有几千个物体,但不可能全都画。渲染管线要先挑选哪些是“观众(摄像机)能看到的”,这叫 剔除(Culling)。
包含三步:
视锥体剔除(Frustum Culling):超出摄像机视野的物体直接不画。遮挡剔除(Occlusion Culling):被墙体挡住的物体也不画。渲染排序(Rendering Order):把不透明物体排在前面画,透明物体排在后面画。
经过这一阶段,Unity 就得到了一份“待渲染列表”。可以想象成:导演选好了要上镜的演员,并安排好出场顺序。
三、顶点处理(Vertex Processing)——确定每个顶点的位置
接下来,每个网格模型的顶点会交给 顶点着色器(Vertex Shader) 处理。
主要任务:
把顶点从模型空间依次变换到世界空间、摄像机空间、裁剪空间。计算法线方向、UV 坐标,为后续光照和纹理做准备。
通俗理解:这是“摄影师根据灯光、角度调整镜头”的过程。
四、图元装配与光栅化(Rasterization)——把面拆成像素
顶点经过变换后会组成一个个三角形(图元),接下来要做的就是把这些三角形“投影”到屏幕上。
这一过程叫 光栅化(Rasterization)。它会:
计算每个三角形在屏幕上的覆盖范围。生成对应的像素(片元 Fragment)。
就像把三角形“盖章”到屏幕上,每个像素准备进入下一步的上色阶段。
五、片元处理(Fragment Shader)——决定每个像素的颜色
这是最精彩的一步,也是显卡最忙的一步。片元着色器(Fragment Shader) 决定屏幕上每个像素的最终颜色。
关键内容包括:
纹理采样:读取贴图颜色。光照计算:根据法线、光源、材质计算亮度。阴影判断:是否被遮挡、阴影多深。
这一阶段的计算最密集,Shader 的复杂程度直接影响性能。
可以把它理解成:这是“化妆师给演员上妆、打光、修饰”的过程。
六、合成与输出(Blending & Output)——让像素真正上屏
所有片元都算完了,还得经过一些考核才能“上镜”:
深度测试(Depth Test):前面的挡住后面的,谁更近谁显示。模板测试(Stencil Test):控制哪些区域能被绘制。混合(Blending):半透明物体与背景颜色混合。
最终结果被写入帧缓冲(Frame Buffer),这时画面已经基本完成。
可以理解为:这一阶段是“后期合成师”把所有镜头叠加出最终画面。
七、后处理(Post Processing)——加点特效
渲染完成后,Unity 还可以执行一系列视觉特效,比如:
Bloom(泛光):让亮部更柔和。Color Grading(色调调整):统一画面氛围。Motion Blur(运动模糊):模拟高速移动效果。
这些属于“特效师”阶段,让画面更有电影质感。
八、显示到屏幕(Display)——观众看到的最终画面
所有处理结束后,帧缓冲的内容被送到显示设备(显示器、手机屏幕、VR 头显),这一帧终于呈现在我们眼前。
下一帧又开始重复整个流程。
总结
Unity 渲染管线做的事,就是从场景中挑选可见的物体,经过一系列计算、变换、光照与特效处理,最终在屏幕上绘制出一帧画面。
理解这个流程的意义在于:
你能更好地优化性能(知道哪里最耗时)。你能理解 Shader 和 SRP(URP/HDRP)的设计原理。你能掌控渲染顺序、透明效果、甚至自定义管线。
渲染管线是一条从数据到图像的清晰路径。只要理解它,你就能真正掌握游戏画面的灵魂。