GPU渲染管线之旅
文章平均质量分 91
GPU渲染管线的硬件架构设计和实现的分析探讨性文章集合,适合对GPU架构有兴趣的人群。
空空的司马
微信搜『程序员加油站』,回复『pdfs』获取优质电子书
展开
-
GPU渲染管线之旅|08 Pixel Shader
在这一部分中,我将处理像素处理的前半部分:dispatch和实际的像素着色。事实上,这是大多数图形程序员在谈到PS stage时想到的. 我们将在下一部分中谈到的alpha blend和Late-Z。在硬件上,情况有点复杂,我们之后会看到——这也是我将像素处理分成两部分的原因。在我们进入这个阶段的时候,阴影的像素坐标(实际上是四边形),加上相关的覆盖遮罩,从光栅化器/早期z单元到达——三角形的顺序与应用程序提交的完全相同,正如我上次指出的那样。我们在这里需要做的是将线性的,连续的工作流输出到数百个着色器单元原创 2021-06-18 09:10:37 · 1613 阅读 · 1 评论 -
GPU渲染管线之旅|07 深度处理、模板处理
在这一篇中,我们来讨论Z-pipline的前端部分(简称它为early-Z), 以及它是在光栅化中怎么起作用的。和上一篇一样,本篇也不会按实际的管道顺序进行讨论;我将首先描述基础算法,然后再补充管线中的各个阶段(以相反的顺序可以更简单的解释这些内容)。1.插值Z通过三角形进行插值,因为三角形顶点的属性是由vertex shader输出的。 让我先花点时间解释一下它是如何工作的。 在这一点上,我最初有一节介绍如何推导插值背后的数学运算,以及为何透视插值以这种方式起作用。 我花了几个小时苦苦挣扎,因为我试图原创 2021-03-17 22:01:35 · 531 阅读 · 0 评论 -
GPU渲染管线之旅|06 三角形的生成和建立
系列文章原发布在自己搭建的博客上:https://binean.top/欢迎回来。这次我们去看看三角形的光栅化。但在光栅化三角形之前,我们需要执行三角形设置,并且在设置三角形之前,我还要解释一下我们做的准备是为了什么,最后我们来聊聊三角形硬件光栅化算法。1.如何画一个三角形首先,给很熟悉这部分并自己写过软纹理映射的人一点小提示:三角形光栅器一次要处理一堆东西:跟踪三角形的形状,插值出坐标uuu和vvv(对于透视矫正映射,是u/zu/zu/z,v/zv/zv/z和1/z1/z1/z),执行Z缓冲测试.原创 2020-07-18 10:14:39 · 1025 阅读 · 0 评论 -
GPU渲染管线之旅|05 图元处理、Clip/Cull, 投影和视图变换
系列文章原发布在自己搭建的博客上:https://binean.top/上一篇中我们讨论了关于“纹理和采样”,这一篇我们回到3D管线的前端。在执行完顶点着色之后,就可以实际的渲染东西了,对吗?暂时还不行, 因为在我们实际开始光栅化图元之前,仍然还有很多事要做。所以在本篇里我们不会看到任何光栅化内容——还得等到下次再讲。1. 图元装载当我们离开顶点处理流水线时,从着色器单元中得到了一个包含已经着色完成的顶点数据内存块,该内存块中包含一些完整的图元。我们不会让三角形,直线或者补块(pathces)之类.原创 2020-07-06 20:07:16 · 1649 阅读 · 2 评论 -
GPU渲染管线之旅|04 纹理和采样
上一篇讨论了顶点着色器,涵盖了GPU通用着色器处理单元的一些内容。它们都仅仅是向量处理单元, 但是当我们在访问Resource的时候,通常都不是这种向量的形式,所以GPU中还需要另一个专门用来在Pipeline中处理整数的单元:Texture Sampler. 这个单元内部相对比较复杂,复杂(也很有趣)到我们需要用单独的一篇文章来讨论它们。1.纹理阶段在我们开始了解真正的纹理操作之前,让我们先对API阶段的纹理操作有个完整的认识。在D3D11中,这主要由三个部分组成:采样阶段。设置滤波模式,设置寻址原创 2020-07-05 14:18:00 · 1873 阅读 · 0 评论 -
GPU渲染管线之旅|03 图形管线概览及GPU中顶点处理
通过前面几篇的内容,我们知道,应用程序中的Draw API调用会经过D3D Runtime, 用户态驱动等等各个层级,最终将命令传到GPU的命令解释器,GPU就会根据命令的内容来进行图形的计算和处理。那么这一篇我们就来看看顶点的处理流程。1. 开胃菜在介绍GPU的顶点处理之前,我们先看看3D渲染管线。3D渲染管线是由一系列的stage构成的,每个stage都完成一些特定的工作。下图是D3D 1...原创 2020-05-08 10:08:59 · 1416 阅读 · 1 评论 -
GPU渲染管线之旅|01 从App到硬件各个层级
0. 介绍从App到硬件各个层级 (Introduction: the Software stack)我在这里发布了东西已经有一段时间了,我可能会用这个地方来解释一些关于2011年图形硬件和软件的一般观点。通常你可以找到你电脑中显卡调用栈的相关描述,但是这些调用关系是如何工作?它们又是为什么要这样呢?这些问题就不那么容易找到答案了。我会尽量填补空白,而不会对特定的硬件进行具体的描述。我将主要讨论...原创 2020-05-04 13:16:48 · 1363 阅读 · 3 评论 -
GPU渲染管线之旅|02 GPU内存架构和命令处理器
系列文章原发布在自己搭建的博客上:https://binean.top/上一篇中主要介绍了3D渲染命令到达GPU之前经历过的各个阶段。用下图可以概括上一篇中所讲的内容,当然其中很多细节没有出现在图中。之前我们说KMD将命令送给了硬件,这个简单的“送”的过程实际上并不是那么简单的。我们知道显卡都是通过信号线连在主板上的,所以我们送命令都是需要走这些信号线的。还有就是我们把命令送给显卡,那显卡总...原创 2020-05-04 17:51:21 · 1169 阅读 · 0 评论