包含标签 图形学 的文章

渲染管线之旅|13 计算着色器

欢迎回到"渲染管线之旅"系列,本篇是“渲染管线之旅”的最后部分。这个系列已经够长了,后面可能写更多与GPU相关的文章。 之前我们一直遨游在图形渲染管线的所有常规部分,以及不同层级的具体细节。这篇我们来看DX11中引入的一项重要新功能:计算着色器(Computer……

阅读全文

渲染管线之旅|12 曲面细分

欢迎回来!这次,我们将研究D3D11 / Shader 5.x硬件世代所引入的“海报男孩”功能:细分。这个很有趣,既因为它是一个有趣的话题,又因为它标志着很长一段时间以来的第一次,这是一个重要的用户可见的组件已被添加到不可编程的图形管道中。 与从概念上讲很简单的“几何着色器”(它是一个可以看到整个……

阅读全文

渲染管线之旅|11 流输出

欢迎回来! 这次,重点将放在流出(SO)上。 这是一种用于将“几何着色器”阶段的输出存储到内存中,而不是将其沿管道的其余部分发送的功能。 这可以用于例如 在D3D10级别的硬件上使用D3D10 API缓存外观化的顶点数据,或作为穷人的Compute Shader(请注意,使用D3D11,即使……

阅读全文

渲染管线之旅|10 几何着色器

欢迎回来。 上一次,我们深入到像素管线的底端。 这次,我们将切换回管道的中间,以查看D3D10:几何着色器可能是最明显的附加功能。 但是首先,我要进一步讲解如何分解本系列中的图形管道,以及与API呈现给你的视图有何不同。 Welcome back. Last time, we dove into bottom end of the pixel pipeline. This time, we’ll switch back to the middle of the pipeline to look at what is……

阅读全文

渲染管线之旅|09 像素处理之联合

这篇文章介绍了像素处理的后半部分,即“连接阶段”。 上一阶段的工作是将少量输入流转换成着色器单元的许多独立任务。 现在,我们需要将大量独立的计算折叠到一个(正确排序的)内存操作流中。 就像我在光栅化和Z早期的文章中已经做过的那样,我将首先简要介绍需要在一般级别上完成的工作,然后再介绍如……

阅读全文

渲染管线之旅|08 像素处理之"fork"

在这一部分中,我们来谈谈像素处理的前半部分:dispatch和实际的像素着色。事实上,这部分是大多数图形开发者在谈到PS stage时所关心的内容。有关alpha blend和Late-Z的内容放到下一篇文章中去探讨。后面我们会看到,硬件上PS stage的设计相是对比较复杂的。这也是……

阅读全文

渲染管线之旅|07 深度处理、模板处理

在这一篇中,我们来讨论Z-pipline的前端部分(简称它为early-Z), 以及它是在光栅化中怎么起作用的。和上一篇一样,本篇也不会按实际的管道顺序进行讨论;我将首先描述基础算法,然后再补充管线中的各个阶段(以相反的顺序可以更简单的解释这些内容)。 1.插值 Z通过三角形进行插值,……

阅读全文

渲染管线之旅|06 三角形的生成和建立

欢迎回来。这次我们去看看三角形的光栅化。但在光栅化三角形之前,我们需要执行三角形设置,并且在设置三角形之前,我还要解释一下我们做的准备是为了什么,最后我们来聊聊三角形硬件光栅化算法。 1.如何画一个三角形 首先,给很熟悉这部分并自己写过软纹理映射的人一点小提示:三角形光栅器一次要处理……

阅读全文

渲染管线之旅|05 图元处理、Clip/Cull, 投影和视图变换

上一篇中我们讨论了关于“纹理和采样”,这一篇我们回到3D管线的前端。在执行完顶点着色之后,就可以实际的渲染东西了,对吗?暂时还不行, 因为在我们实际开始光栅化图元之前,仍然还有很多事要做。所以在本篇里我们不会看到任何光栅化内容——还得等到下次再讲。 1. 图元装载 当我们离开顶点处理流水线……

阅读全文

渲染管线之旅|04 纹理和采样

上一篇讨论了顶点着色器,涵盖了GPU通用着色器处理单元的一些内容。它们都仅仅是向量处理单元, 但是当我们在访问Resource的时候,通常都不是这种向量的形式,所以GPU中还需要另一个专门用来在Pipeline中处理整数的单元:Texture Sampler. 这个单元内部相对比较复杂,复杂(也很有……

阅读全文