그래픽스 파이프라인 순서도
IA - VS - HS - TS - DS - GS - SO (3D처리)
- RS - PS - OM (2D처리)
- IA (Input Assembler) : 사용자의 Input을 관리한다. Input은 Vertex Data(정점)등이 들어가게 된다.
사용자가 채운 버퍼에서 기본 데이터요소(선 및 삼각형)를 읽고 데이터를 다른 파이프라인 단계에서 사용할 기본 형식으로 결합하고, 셰이더를 보다 효율적으로 만드는데 도움이 되는 시스템 생성 값을 연결하는 것입니다. - VS (Vertex Shader) : 정점의 처리, 노말공간이나 탄젠트공간을 월드(world)공간로 변환시킨다.
일반적으로 변환, 스킨, 조명 등의 작업을 수행 하는 정점을 처리 합니다. 정점셰이더는 단일 입력 버텍스를 사용하고 단일 출력 정점을 생성 합니다. - HS (Hull Shader) : 선분을 어떻게 쪼갤 것인가 무게중심이 어디가 될 것인가를 판단하여 선을 나눠놓는다.
선체 셰이더 (HS) 단계는 공간 분할 (tessellation) 단계 중 하나로, 모델의 단일 표면을 여러 삼각형으로 효율적으로 분할 합니다. 선체 셰이더 (HS) 단계에서는 각 입력 패치 (쿼드, 삼각형 또는 선)에 해당 하는 기하도형 패치 (및 패치 상수)를 생성 합니다. - TS (Tesellation Stage) : HS에서 어떻게 쪼갤것인가에 대한 판단한 것대로 선을 쪼갠다.
Tessellator (TS) 단계는 기하도형 패치를 나타내는 도메인의 샘플링 패턴을 만들고 이러한 예제를 연결 하는 작은 개체 (삼각형, 요소 또는 선) 집합을 생성 합니다. - DS (Domain Shader) : HS와 TS에서의 입력을 기반으로 출력 패치의 쪼개어진 지점의 정점위치를 출력한다.
DS(도메인 셰이더) 단계는 출력 패치에서 세분화된 지점의 정점 위치를 계산합니다. 이 단계에서 각 도메인 샘플에 해당하는 정점 위치도 계산합니다. 도메인 셰이더는 분할기 단계 출력 지점당 한 번씩 실행되며, 헐 셰이더 출력 패치 및 출력 패치 상수, 분할기 단계 출력 UV 좌표에 대한 읽기 전용 액세스 권한을 가집니다. - GS (Geometry Shader) : 기하도형 셰이더 (GS) 스테이지는 인접 한 정점과 함께 삼각형, 선 및 점의 전체 기본 형식을 처리 합니다. 점 스프라이트 확장, 동적 파티클 시스템 및 섀도 볼륨 생성을 포함하는 알고리즘에 유용 합니다. 기하도형 증폭 및 비 증폭을 지원 합니다.
- SO (StreamOutput) : 앞에서 처리한 결과를 다시 IA로 return하거나 cpu로 전달해줌 (재계산이 필요할떄 쓰임)
스트림 출력 ()은 이전 활성 단계에서 메모리의 하나 이상의 버퍼로 버텍스 데이터를 지속적으로 출력 (또는 스트림) 합니다. 메모리로 스트리밍되는 데이터는 입력 데이터로 다시 파이프라인으로 다시 또는 CPU에서 다시 읽을 수 있습니다. - RS (RasterizingStage) : 3D공간을 2D공간으로 변환시켜줌 (Viewport있음)
래스터라이저는 뷰에 없는 기본 요소를 잘라내고, PS단계에 대해 기본 요소를 준비하고, 픽셀 셰이더를 호출하는 방법을 결정합니다. 래스터화 단계는 실시간 3D 그래픽을 표시하기 위해 벡터 정보(형태 또는 기본 요소로 구성)를 래스터 이미지(픽셀로 구성)로 변환합니다. - PS (PixelShader) : 기본 형식에 대한 보간된 데이터를 받고 색과 같은 픽셀 별 데이터를 생성 합니다.
- OM (Output-Merger Stage) : OM (출력 병합기) 단계에서는 다양한 유형의 출력 데이터 (픽셀 셰이더 값, 깊이 및 스텐실 정보)를 렌더링 대상의 내용과 깊이/스텐실 버퍼의 내용과 결합하여 최종 파이프라인 결과를 생성합니다.
출처 : docs.microsoft.com/ko-kr/windows/uwp/graphics-concepts/graphics-pipeline
'Game Programming > DirectX' 카테고리의 다른 글
DirectX 3D - TerrainEditor Portfolio (0) | 2022.01.10 |
---|---|
DirectX 3D - Battle Portfolio (0) | 2022.01.10 |
DirectX 2D - Portfolio (프리스타일1 모작) (0) | 2021.02.03 |