Unity渲染管线流程图解析
根据Unity官方文档和图形学原理,Unity渲染管线主要分为以下核心阶段:
阶段说明1. 场景准备确定需要渲染的物体和光源2. 顶点处理执行顶点着色器计算模型空间变换3. 投影裁剪将物体投影到屏幕空间并进行视锥裁剪4. 光栅化将几何图元转换为屏幕像素5. 片段处理执行片段着色器计算像素颜色6. 像素测试依次执行Alpha/模板/深度测试7. 混合输出颜色混合后写入帧缓冲区8. 后期处理执行屏幕空间特效(如Bloom) \begin{array}{|l|l|} \hline \text{阶段} & \text{说明} \\ \hline 1.\ 场景准备 & 确定需要渲染的物体和光源 \\ 2.\ 顶点处理 & 执行顶点着色器计算模型空间变换 \\ 3.\ 投影裁剪 & 将物体投影到屏幕空间并进行视锥裁剪 \\ 4.\ 光栅化 & 将几何图元转换为屏幕像素 \\ 5.\ 片段处理 & 执行片段着色器计算像素颜色 \\ 6.\ 像素测试 & 依次执行Alpha/模板/深度测试 \\ 7.\ 混合输出 & 颜色混合后写入帧缓冲区 \\ 8.\ 后期处理 & 执行屏幕空间特效(如Bloom) \\ \hline \end{array} 阶段1. 场景准备2. 顶点处理3. 投影裁剪4. 光栅化5. 片段处理6. 像素测试7. 混合输出8. 后期处理说明确定需要渲染的物体和光源执行顶点着色器计算模型空间变换将物体投影到屏幕空间并进行视锥裁剪将几何图元转换为屏幕像素执行片段着色器计算像素颜色依次执行Alpha/模板/深度测试颜色混合后写入帧缓冲区执行屏幕空间特效(如Bloom)
关键流程说明
-
场景准备阶段
Unity会先进行视锥体裁剪,通过Camera.Render
方法确定可见物体。此阶段与脚本生命周期中的LateUpdate
阶段紧密关联 -
顶点处理阶段
使用Shader中的顶点着色器进行坐标变换,包含:- 模型空间→世界空间→观察空间→投影空间变换
- 法线向量计算
- 顶点光照预计算
-
像素测试阶段
执行顺序为:
Alpha测试→模板测试→深度测试 \text{Alpha测试} \rightarrow \text{模板测试} \rightarrow \text{深度测试} Alpha测试→模板测试→深度测试
通过测试的像素才会进入混合阶段 -
混合阶段
根据材质属性配置混合公式,常见模式:
Cresult=Csrc×α+Cdst×(1−α) C_{result} = C_{src} \times \alpha + C_{dst} \times (1-\alpha) Cresult=Csrc×α+Cdst×(1−α)
该公式实现透明效果
管线类型对比
管线类型 | 顶点处理 | 光照计算 | 适用平台 |
---|---|---|---|
内置管线 | 逐顶点 | 逐顶点 | 全平台 |
URP | 逐物体 | 延迟渲染 | 移动端 |
HDRP | 计算着色器 | 光线追踪 | PC/主机 |
-
: Unity生命周期中渲染阶段在
- 颜色混合阶段决定最终像素写入方式
- 测试阶段顺序与OpenGL ES规范一致
LateUpdate
之后执行