图形渲染管线之旅 (2011)
A trip through the Graphics Pipeline (2011)

原始链接: https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/

本博客系列深入探讨了现代GPU图形流水线的工作原理,弥合了高级概述和高度具体的组件细节之间的差距。它面向熟悉OpenGL 2.0+或D3D9+等API,并具备计算机硬件(寄存器、缓存、流水线)和并行编程基础知识的经验丰富的图形程序员。 该系列深入研究了流水线的实际实现,超越了简化的图表,提供了一次内容详实但文字密集的探索。涵盖的主题包括软件堆栈、GPU内存架构、3D流水线的每个阶段(顶点和像素处理、光栅化等)以及几何着色器、细分曲面和计算着色器等高级功能。 作者的目标是采用详细、信息丰富的 подхода,优先考虑技术内容而非花哨的视觉效果或基准测试结果。整个系列也已发布到公共领域。

一个黑客新闻的讨论围绕着一篇2011年的图形渲染管线指南。虽然被认为是一份很好的资源,但评论员指出它已经过时。2011年以来的主要更新包括网格体(meshlet)和光线追踪阶段的加入。 用户推荐“描述符很难 (Descriptors are Hard)” ([https://www.gfxstrand.net/faith/blog/2022/08/descriptors-are...](https://www.gfxstrand.net/faith/blog/2022/08/descriptors-are...)) 作为现代补充,以及D3D12功能规范以获取更多信息。 一个显著的变化是网格着色器管线的引入,它取代了较老的阶段,如顶点、细分和几何着色器——尽管广泛的引擎采用仍在进行中。讨论还涉及虚幻引擎5的Lumen/Nanite功能,明确它们可以在硬件支持的情况下利用网格着色器,但也可以使用计算着色器与旧硬件一起工作。
相关文章

原文

Welcome.

This is the index page for a series of blog posts I’m currently writing about the D3D/OpenGL graphics pipelines as actually implemented by GPUs. A lot of this is well known among graphics programmers, and there’s tons of papers on various bits and pieces of it, but one bit I’ve been annoyed with is that while there’s both broad overviews and very detailed information on individual components, there’s not much in between, and what little there is is mostly out of date.

This series is intended for graphics programmers that know a modern 3D API (at least OpenGL 2.0+ or D3D9+) well and want to know how it all looks under the hood. It’s not a description of the graphics pipeline for novices; if you haven’t used a 3D API, most if not all of this will be completely useless to you. I’m also assuming a working understanding of contemporary hardware design – you should at the very least know what registers, FIFOs, caches and pipelines are, and understand how they work. Finally, you need a working understanding of at least basic parallel programming mechanisms. A GPU is a massively parallel computer, there’s no way around it.

Some readers have commented that this is a really low-level description of the graphics pipeline and GPUs; well, it all depends on where you’re standing. GPU architects would call this a high-level description of a GPU. Not quite as high-level as the multicolored flowcharts you tend to see on hardware review sites whenever a new GPU generation arrives; but, to be honest, that kind of reporting tends to have a very low information density, even when it’s done well. Ultimately, it’s not meant to explain how anything actually works – it’s just technology porn that’s trying to show off shiny new gizmos. Well, I try to be a bit more substantial here, which unfortunately means less colors and less benchmark results, but instead lots and lots of text, a few mono-colored diagrams and even some (shudder) equations. If that’s okay with you, then here’s the index:

  • Part 1: Introduction; the Software stack.
  • Part 2: GPU memory architecture and the Command Processor.
  • Part 3: 3D pipeline overview, vertex processing.
  • Part 4: Texture samplers.
  • Part 5: Primitive Assembly, Clip/Cull, Projection, and Viewport transform.
  • Part 6: (Triangle) rasterization and setup.
  • Part 7: Z/Stencil processing, 3 different ways.
  • Part 8: Pixel processing – “fork phase”.
  • Part 9: Pixel processing – “join phase”.
  • Part 10: Geometry Shaders.
  • Part 11: Stream-Out.
  • Part 12: Tessellation.
  • Part 13: Compute Shaders.


CC0

To the extent possible under law,

Fabian Giesen

has waived all copyright and related or neighboring rights to
A trip through the Graphics Pipeline 2011.

联系我们 contact @ memedata.com