欢迎光临散文网 会员登陆 & 注册

Unity渲染管线复习

2023-01-17 00:58 作者:天啦噜纸牌君  | 我要投稿

渲染管线可以看成3大步骤组成:

  1. CPU处理要渲染的数据,将数据发送给GPU

  2. GPU根据CPU发来的数据,将画面渲染到帧缓冲区

  3. 一个画面在帧缓冲区渲染完了,进行后处理后输出

一、CPU阶段


  1. 剔除

    将不在视锥范围内的物体剔除掉

  2. 渲染顺序

    将根据视锥范围内的物体位置决定渲染顺序

    不透明队列(RenderQueue<2500),按照从前到后的顺序排序

    透明队列(RenderQueue>2500),按照从后到前的顺序排序

    先透明队列后不透明队列

  3. 打包发送数据

    将要渲染的数据发送给GPU

    一个模型的数据,包含以下内容:

    1. 顶点坐标(Position)

    2. 法线向量(Normal)

    3. 贴图采样位置(UV)

    4. 索引列表

      每一行表示一个面的数据,而一个面是由三个点构成

      每个点的数据,都包含上述abc三个数据

      因此每一行的数据可以看成:

      点1.Position/点1.UV/点1.Normal

      点2.Position/点2.UV/点2.Normal

      点3.Position/点3.UV/点3.Normal

  4. 调用SetPass Call与Draw call

    SetPass Call:设置好各种渲染状态、背面剔除、要使用的Shader与混合模式

    Draw Call:通知GPU去渲染模型

二、GPU阶段

GPU阶段可以视为:

点:将拿到的顶点坐标,转化为屏幕屏幕坐标

线:将各个顶点连接起来,形成一个个三角面(即图元)

面:给三角面上色

最后输出合并。


  1. 顶点Shader:将模型空间顶点转化为裁剪空间(投影成像)

    裁剪操作:将不在裁剪空间里的顶点给裁剪掉

    NDC标准化设备坐标:将裁剪空间转化为NDC标准化设备坐标

    背面剔除:将背面的三角面剔除掉

    视口变换:将裁剪空间转换为屏幕空间坐标

  2. 线

    图元装配:将顶点连接,形成三角面,称为图元

  3. 光栅化:通过插值,将图元内部形成一个个片元(片元可以理解成一个像素点)

    片元Shader:通过纹理着色、光照着色来给片元上色

  4. 输出合并

    通过alpha测试、模板测试、深度测试、颜色混合,

    处理遮挡关系、处理半透明混合,将结果绘制到帧缓冲区





Unity渲染管线复习的评论 (共 条)

分享到微博请遵守国家法律