▪ Game Graphics
그래픽스 파이프라인 (Graphics Pipeline)
maay
2022. 4. 10. 04:00
그래픽스 파이프라인
3차원 이미지를 2차원 래스터 이미지로 표현하기 위한 단계적 방법
파이프라인 : 한 데이터 처리단계의 출력이 다음 단계의 입력으로 이어지는 형태, 연결된 구조

여기서 초록색 블록들은 HLSL 프로그래밍 언어를 사용해 프로그래밍 가능
Input Assembler (입력 어셈블러)
파이프라인의 첫번째 단계. 버텍스 버퍼와 인덱스 버퍼에서 기본 데이터를 읽고 이를 다른 단계에서 사용할 수 있도록 조합.
Vertex Shader (정점 셰이더)
입력 어셈블러의 정점 정보를 처리하여 변환(Transformation), 스키닝 (Skinning), 조명(Lightning)
과 같은 작업을 수행
Tessellation (테셀레이션) 단계
Hull Shader (헐 셰이더), Tessellator (테셀레이터), Domain Shader(도메인 셰이더)로 구성되어 있음
- Hull Shader (헐 셰이더) : 테셀레이션의 첫 단계로 모델의 단일 표면을 여러 삼각형으로 효율적 분할. 또한 각 입력 패치(quad, triangle, or line)에 맞는 지오메트리 패치를 생성
- Tessellator (테셀레이터) : 지오메트리 패치를 나타내는 도메인의 샘플링 패턴을 생성. 이러한 샘플을 연결하는 더 작은 개체(삼각형, 점, 선)을 생성.
- Domain Shader(도메인 셰이더) : 테셀레이션의 세번째 단계로 출력 패치의 정점 위치를 계산.
Geometry Shader (지오메트리 셰이더)
정점을 입력 데이터로 받아 정점 셰이더에서 생성되지 않은 삼각형, 선, 점을 생성하거나 수정. 지오메트리의 확장 및 축소가 가능
Stream Output (스트림 출력)
지오메트리 셰이더 또는 버텍스 셰이더 (지오메트리가 활성화되어 있으면 지오메트리 셰이더, 그렇지 않으면 정점 셰이더 ; 이전 활성 단계) 의 정점 데이터를 메모리에 있는 하나 이상의 버퍼로 연속적으로 출력(또는 스트림)
Rasterizer (래스터라이저)
실시간 3D 그래픽을 표시하기 위해 벡터 정보를 픽셀로 구성된 래스터 이미지로 변환
Pixel Shader (픽셀 셰이더)
보간 데이터를 받아 색상과 같은 픽셀 당 데이터를 생성
Output Merger (출력 병합)
다양한 유형의 출력 데이터 (픽셀 셰이더값, 깊이나 스텐실 정보)를 렌더 타겟의 깊이와 스텐실 버퍼와 조합해 최종 렌더링된 픽셀 색(최종 파이프라인 결과)을 생성