
- Input Assembler(IA)
- 정점 데이터를 받아 그래픽 파이프 라인으로 전달하는 역할
- Index Buffer, Vertex Buffer 리소스 사용 가능
- Vertex Shader(VS)
- 각 정점의 위치 및 기타 속성을 처리하는 단계
- Vertex Shader는 텍스처 좌표와 같은 추가 데이터를 계산하고 변환 가능
- Sampler와 Constant Buffer를 사용할 수 있으며, 샘플러는 최대 16개, 상수 버퍼는 최대 14까지 사용 가능
- Hull Shader
- 테셀레이션이 활성화된 경우, 곡면(패치)를 정의하여 Tessellator에 전달하는 단계
- Sampler와 Constant Buffer를 사용할 수 있음
- Tessellator
- 정점 데이터를 추가적으로 세분화하여 더 많은 정점을 생성하는 단계
- 물체의 곡선이나 복잡한 모양을 더 세밀하게 표현
- Domain Shader
- 테셀레이션된 정점을 처리하여 최종 위치와 속성을 결정하는 단계
- Geometry Shader
- 삼각형, 점, 선과 같은 기본 도형을 조작하고 새로운 도형을 생성할 수 있는 단계
- Stream Output을 통해 데이터를 외부 버퍼로 출력 가능
- Rasterizer
- 3D 데이터를 2D 화면에 렌더링할 준비를 하는 단계
- 각 픽셀에 대한 정보가 설정 됨
- 깊이 및 스텐실 테스트를 수행하고, 각 픽셀의 위치 결정
- Pixel Shader
- 각 픽셀의 색상과 텍스처를 계산하여 최종 이미지를 구성하는 단계
- sampler와 Constant Buffer를 사용할 수 있다
- Texture Buffer는 최대 128개까지 사용 가능
- Output Merger(출력 병합기)
- 최종 픽셀 데이터를 받아 렌더 타겟에 병합하고 출력
- 깊이 및 스텐실 버퍼와 렌더 타겟을 사용하여 최종 이미지 생성
- Depth/Stenci과 Render Target리소스를 사용
- 최대 8개 Render Target 허용