渲染流水线

渲染流水线

CPU通信GPU-应用阶段
数据加载
读取
结束
着色器\光源属性\材质等
数据加载到显存
CPU
设置完渲染状态
调用Draw_Call
GPU
硬盘
内存
显存
光栅化阶段
几何阶段
三角形设置
几何阶段完成
三角形遍历
片元着色器
逐片元操作
光栅化阶段完成
顶点着色器
GPU
曲面细分着色器
几何着色器
裁剪
屏幕映射
屏幕图像

着色器和操作

  • 顶点着色器
    • 完全可编程
    • 处理单位是顶点,来自CPU
    • 每个顶点执行一次顶点着色器
    • 无法得知任意两点间是否存在联系
    • 可以进行顶点变换
    • 顶点位置变成归一化的设备坐标(OpenGL下,为一个边长为2,中心点0,0,0的正方体内部)
  • 曲面细分着色器
    • 可选
    • 确定曲面细分等级
    • 将复杂的曲面转换为简单的点,线,三角形等
  • 几何着色器
    • 可选
    • 逐图元着色操作
    • 能产生更多的图元
  • 裁剪
    • 不可编程,但可以自定义配置
    • 对不可视的图元进行删除,对部分可视的图元进行裁剪(生成新的顶点)
    • 这里的可视/不可视只是对于模型自身而言
  • 屏幕映射
    • 设备坐标系中的xy转化为屏幕坐标系
    • 屏幕坐标系内存储了顶点对应像素的位置,与距离像素有多远
    • 设备坐标系中的z坐标和屏幕坐标系一起构成窗口坐标系,z即是深度值
  • 三角形设置
    • 进入光栅化阶段
    • 由上一阶段三角网格的顶点计算三角形的边,获得三角形的网格情况
  • 三角形遍历
    • 检查每个像素是否被三角形覆盖,如果被覆盖,则产生一个片元
    • 片元并不是真正的像素,而是包含了很多状态的集合,包括但不限于屏幕坐标,深度
    • 对于三角形的覆盖区域,会用三角形的三个点对每个片元进行插值计算
  • 片元着色器
    • 片元着色器的输入时上一阶段对顶点信息进行插值得到的结果
    • 其输出是一个或多个颜色值
    • 期间通常会进行纹理坐标的插值,计算片元的颜色
    • 无法获取周边片元的信息
  • 逐片元操作
  • 对每一个片元进行操作,主要进行测试(如模板测试和深度测试)与混合
  • 片元需要通过所有测试才能和颜色缓冲区进行合并(混合)
  • 模板测试,通常用来限制渲染区域
  • 深度测试,和透明效果有关
  • 将通过测试的片元的信息和已在缓冲区内的信息相混合
  • 最终输出图像是使用双缓冲模式的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值