A Trip through the Graphics Pipeline 번역
해당 포스트를 번역한 글입니다.
환영합니다.
이 글은 실제 GPU에 의해 구현된 D3D/OpenGL 그래픽스 파이프라인에 대해 현재 작성중인 일련의 블로그 포스트의 목차 페이지입니다. 그래픽스 프로그래머들에게 이것들의 대부분은 잘 알려져 있고, 수많은 자료들이 존재합니다. 그러나 제가 이것에 대해 언짢아하는 점은 각각의 컴포넌트에 대해 매우 폭넓은 개요 혹은 매우 세부적인 정보들이 존재하는 것과는 달리 그 사이 어딘가의 자료는 많지 않고 그마저도 매우 오래 된 것이라는 점입니다.
이 시리즈는 모던 3D API(적어도 OpenGL 2.0+ 혹은 D3D9+)를 잘 다루고 그것이 내부적으로 어떻게 이루어지는지를 잘 알고 싶은 그래픽스 프로그래머를 대상으로 합니다. 이것은 초심자를 위한 그래픽스 파이프라인에 대한 설명이 아닙니다. 만약 당신이 3D API를 사용해보지 않았다면, 아마도 대부분의 이 시리즈에서 소개하는 내용은 당신에게 필요없을 것입니다. 저는 또한 당신이 현대적인 하드웨어 구조에 대해 이해하고 있다고 가정합니다ㅡ적어도 당신은 레지스터, FIFO, 캐시, 그리고 파이프라인 등이 무엇인지, 어떻게 작동하는지에 대해 이해하고 있어야 합니다. 마지막으로, 당신은 최소한의 병렬 프로그래밍parallel programming에 대한 기본적인 이해를 하고 있어야 합니다. GPU는 매우 거대한 병렬 컴퓨터이므로, 이를 무시할 수 없습니다.
몇몇 독자는 이것이 그래픽스 파이프라인과 GPU에 대한 매우 낮은 수준의(Low-level의) 설명이라고 언급해왔습니다. 글쎄요, 그건 모두 당신이 어디에 서 있는지에 따라 달려 있습니다. GPU 설계자는 이것이 GPU에 대한 높은 수준의(High-level의) 설명이라고 말할 것입니다. 새로운 GPU 세대가 등장할 때 마다 하드웨어 리뷰 사이트에서 볼 법한 알록달록한 색깔의 플로우차트만큼 높은 수준은 아닙니다. 그러나, 솔직히 말해서, 그러한 종류의 리포팅은 잘 작성된 경우라도 매우 낮은 밀도의 정보를 가지고 있는 경향이 있습니다. 궁극적으로, 그러한 플로우차트는 모든 것이 어떻게 동작하는지 설명하기 위한 것이 아닙니다. 단지 반짝이는 새 gizmo를 과시하려는 기술 포르노일 뿐입니다. 글쎄요, 저는 여기서 좀 더 실질적이려 합니다. 불행하게도 색상과 벤치마크 결과는 적을 것이고, 대신 많은 텍스트와 몇가지 단색의 다이어그램, 그리고 심지어는 (살 떨리는) 방정식들이 있을 것입니다. 이것이 당신에게 괜찮다면, 목차를 소개하겠습니다.
Part 1: 소개; 소프트웨어 스택
Part 2: GPU 메모리 구조와 명령 프로세서
Part 3: 3D 파이프라인 조명(Overview), 정점 프로세싱
Part 4: 텍스처 샘플러
Part 5: 프리미티브 조립, 클립/컬링, 투영, 그리고 뷰포트 변환
Part 6: (삼각형) 래스터화와 셋업
Part 7: 깊이/스텐실 프로세싱, 세 가지 다른 방법
Part 8: 픽셀 프로세싱 - "fork phase"
Part 9: 픽셀 프로세싱 - "join phase"
Part 10: 지오메트리 쉐이더
Part 11: 스트림 아웃
Part 12: 테셀레이션
Part 13: 컴퓨트 쉐이더