文章目录
- 前言
- 一、渲染流水线
- 二、英伟达显卡简化概念图(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)
1、我们的Shader会调用英伟达提供的 API
2、调用API后,把Shader用到的指令存储在Pushbuffer中
3、然后图元分配器,会把 模型数据 和 Shader 指令传入GPU中
4、这个SM是每个小单元的内部结构
5、模型顶点数据准备好 并且 Shader 指令准备好后,进入每一个 Core 中计算
6、顶点数据计算完成后,会进行顶点数据转化为裁剪空间,然后传入片元着色器计算
7、计算使用的还是 SM 单元,只是逻辑变了
8、纹理采样 和 纹理缓存 在如下位置完成
9、如果我们在 顶点着色器 或 片元着色器 中使用了条件语句,我们的SM会按如下逻辑运行
遇到 if 为 true,则通过Core计算。否则,会等待其他语句块的 if 计算完成后,进行else计算
如果我们的Shader中,存在条件分支语句、循环语句。
这是非常消耗性能的
因为,只要存在一个分支为false,那么对于同一排的Core计算
都需要等待运行 if 和 else 两个语句块的时间
10、然后最后完成颜色混合
在颜色混合阶段完成 深度测试、模板测试等这些功能