GPU逻辑管线

文章目录

  • 前言
  • 一、渲染流水线
  • 二、英伟达显卡简化概念图(GPU)
    • 1、我们的Shader会调用英伟达提供的 API
    • 2、调用API后,把Shader用到的指令存储在Pushbuffer中
    • 3、然后图元分配器,会把 模型数据 和 Shader 指令传入GPU中
    • 4、这个SM是每个小单元的内部结构
    • 5、模型顶点数据准备好 并且 Shader 指令准备好后,进入每一个 Core 中计算
    • 6、顶点数据计算完成后,会进行顶点数据转化为裁剪空间,然后传入片元着色器计算
    • 7、计算使用的还是 SM 单元,只是逻辑变了
    • 8、纹理采样 和 纹理缓存 在如下位置完成
    • 9、如果我们在 顶点着色器 或 片元着色器 中使用了条件语句,我们的SM会按如下逻辑运行
    • 10、然后最后完成颜色混合


前言

了解一下 GPU 逻辑管线


一、渲染流水线


二、英伟达显卡简化概念图(GPU)

GPU逻辑管线_第1张图片

1、我们的Shader会调用英伟达提供的 API

GPU逻辑管线_第2张图片

2、调用API后,把Shader用到的指令存储在Pushbuffer中

GPU逻辑管线_第3张图片

3、然后图元分配器,会把 模型数据 和 Shader 指令传入GPU中

GPU逻辑管线_第4张图片

4、这个SM是每个小单元的内部结构

GPU逻辑管线_第5张图片

5、模型顶点数据准备好 并且 Shader 指令准备好后,进入每一个 Core 中计算

GPU逻辑管线_第6张图片

6、顶点数据计算完成后,会进行顶点数据转化为裁剪空间,然后传入片元着色器计算

GPU逻辑管线_第7张图片

7、计算使用的还是 SM 单元,只是逻辑变了

GPU逻辑管线_第8张图片

8、纹理采样 和 纹理缓存 在如下位置完成

GPU逻辑管线_第9张图片

9、如果我们在 顶点着色器 或 片元着色器 中使用了条件语句,我们的SM会按如下逻辑运行

GPU逻辑管线_第10张图片

遇到 if 为 true,则通过Core计算。否则,会等待其他语句块的 if 计算完成后,进行else计算

GPU逻辑管线_第11张图片
如果我们的Shader中,存在条件分支语句、循环语句。
这是非常消耗性能的
因为,只要存在一个分支为false,那么对于同一排的Core计算
都需要等待运行 if 和 else 两个语句块的时间

10、然后最后完成颜色混合

在颜色混合阶段完成 深度测试、模板测试等这些功能
GPU逻辑管线_第12张图片

你可能感兴趣的:(Unity,unity,游戏引擎)