【unity笔记】L1渲染流水线

本章导图:
在这里插入图片描述

一、渲染流水线概述

渲染流水线由CPU和GPU协同工作,可分为三大阶段:

  • 应用阶段:输出渲染图元
  • 几何阶段:输出屏幕空间的顶点信息
  • 光栅化阶段:输出最后结果

1.应用阶段

  • 参与者:CPU,开发者主导
  • 任务:
    首先,构建场景
    其次,将不可见的物体进行剔除
    最后,设置模型的渲染状态,即怎么渲染的
    核心:输出渲染所需的几何信息

2.几何阶段

  • 参与者:GPU
  • 任务:
    对输入的渲染图元进行处理,输出屏幕空间的二维顶点坐标,每个顶点的深度值,着色信息
    核心:将顶点坐标变换到屏幕空间中

3.光栅化阶段

  • 参与者:GPU
  • 任务:
    使用上一阶段传递数据产生屏幕上的像素,输出最终图像

二、CPU和GPU之间的通信——应用阶段

应用阶段可分为三个子阶段:

  • 加载:将数据加载到显存
  • 设置:设置渲染状态
  • 调用:调用 Draw Call

1.把数据从硬盘加载到显存

  • 首先,数据从硬盘到系统内存
  • 然后,网格和纹理数据从内存加载到显存,再由显卡读取

在这里插入图片描述

2.设置渲染状态

  • 定义:表示场景中的网格是怎么被渲染的

在这里插入图片描述

3.调用 Draw Call

  • 定义:向GPU发送渲染请求
    在这里插入图片描述

三、GPU流水线——几何阶段和光栅化阶段

在这里插入图片描述
(黑色代表可编程可配置,灰色代表不可编程但可配置,白色代表不可编程不可配置)

1.几何阶段

  • 首先,在顶点着色器进行顶点的空间变换、顶点着色。其中,无论对顶点进行怎样的变化,都要进行归一化,也就是将模型空间转换到齐次裁剪空间。
  • 然后,在曲面细分重色器中细分图元
  • 再在几何着色器中进行逐图元的着色操作
  • 然后进行裁剪,将不再摄像机视野内的点去掉。其中,完全在单位立方体外部的图元被舍弃,完全在立方体内部的图元被保留,和立方体相交的图元被裁剪,新的顶点被生成,外部的顶点被舍弃。
  • 最后将图元坐标转换到屏幕空间中

2.光栅化阶段

  • 首先是三角形设置与遍历阶段,由顶点坐标信息得到边的像素信息,判定哪些像素被三角形网格覆盖,得到对应的片元信息。
  • 然后,在片元着色器总进行逐片元的着色操作,利用插值的结果对片元的颜色进行计算。
  • 再对GPU配置,进行逐片元操作。主要任务为决定每个片元的可见性(模板测试和深度测试)和颜色的混合。
    具体流程图如下:
    在这里插入图片描述
    决定片元可见性:
    在这里插入图片描述
    颜色混合:
    在这里插入图片描述
  • 最后根据颜色缓冲区中的颜色值得到屏幕图像,利用双重缓冲,让前置缓存与后置缓存交替,保证图像的连续性。

四、什么是shader

  • GPU上可高度编程的阶段,并在GPU上运行,例如顶点着色器和片元着色器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值