参考链接:
https://zhuanlan.zhihu.com/p/84275265
渲染流水线,起点是cpu,终点是gpu,分为3个阶段:应用阶段,几何阶段,光栅化阶段
1.应用阶段(由cpu负责)
准备要渲染的场景数据,例如SetActive为false的物体,所在层不被相机照射的物体,会被忽略。然后将网格和纹理加载到显存中,设置网格的渲染状态(即怎样渲染该网格,用哪个shader)。在网格和材质准备好后,调用drawcall。
drawcall,即cpu调用gpu去绘制的过程,前提是同一个网格,同一个材质。回想下动态合批,静态合批,ugui的合批,都有一个合网格的过程
2.几何阶段(由gpu负责)
几何阶段主要分为顶点着色器处理,裁剪,屏幕映射
a.顶点着色器处理:处理顶点,必须完成的一个工作是将顶点坐标从模型空间转换到齐次裁剪空间
o.pos= UnityObjectToClipPos(v.vertex); 新的API
o.pos= mul(UNITY_MVP,v.vertex); 旧版本的写法
b.裁剪:上一步转换到齐次裁剪空间后,就可以进行裁剪操作,将不在相机视锥体内的三角面裁剪掉,与视锥体边界相交的会生成新的顶点
c.屏幕映射:将裁剪空间的三维坐标转化为屏幕空间的二维坐标
3.光栅化阶段(由gpu负责)
光栅化阶段主要分为三角形设置,三角形遍历,片元着色器处理
a.三角形设置:将上一个阶段输出的顶点连成三角面
b.三角形遍历:此阶段会遍历屏幕上的每一个像素,检查其是否被一个三角网格所覆盖,若是则会生成一个片元。片元的信息由3个顶点信息进行插值得到,即三角网格的3个顶点的顶点信息对整个覆盖区域的像素进行差值
片元比像素多了一些额外的数据,如深度值,纹理坐标等
c.片元着色器处理:处理片元,其中最重要的操作是纹理采样。片元在通过模板测试、深度测试后才能和颜色缓冲区中已存在的像素颜色进行混合,最后再写入颜色缓冲区中
即片元->模板测试->深度测试->混合->颜色缓冲区
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?