Quick Flow
IA -> VS -> HS -> Tessellator -> DS -> GS -> Stream Output -> Rasterizer -> PS -> OM최소 triangle 렌더링은 보통 IA, VS, Rasterizer, PS, OM을 사용합니다. HS·DS는 tessellation, GS는 primitive 단위 생성·변형, Stream Output은 shader stage의 vertex data를 buffer에 기록해 이후 draw에서 재사용할 때 연결합니다.
단계별 계약
IA는 vertex·index buffer와 topology를 primitive로 조립하고 VS는 각 vertex를 clip space로 변환합니다. Stream Output은 VS 또는 마지막 활성 geometry stage 결과를 rasterization 전 buffer에 기록할 수 있습니다. Rasterizer는 clipping, perspective divide와 fragment 후보 생성을 담당하며 PS는 보간된 입력으로 색·depth를 계산합니다. OM은 depth-stencil test와 blending을 거쳐 RTV·DSV에 기록합니다.
Shader stage 사이 데이터는 semantic과 type이 맞아야 합니다. PS가 읽는 값은 앞 단계가 같은 semantic으로 내보내야 하며, 현재 draw가 쓰지 않는 resource도 이전 binding에 남을 수 있으므로 pass 경계에서 필요한 상태를 명시합니다.
자주 틀리는 점
- Input layout이 맞아도 vertex buffer stride가 틀리면 IA 입력이 깨집니다.
- VS가 clip-space position을 내보내지 않으면 rasterization까지 이어지지 않습니다.
- Depth·blend 결과는 PS 코드만 보고 판단하지 않고 OM state를 함께 확인합니다.
- Deferred context가 파이프라인 단계를 바꾸는 것은 아닙니다.
참고 링크
2 sources