렌더링 파이프라인이라 3차원으로 만들어진 리소스를 2차원인 화면에 렌더링 하는 과정을 말한다.
입력 조립기 단계(Input Assembler)
입력 조립기 단계에서는 메모리에서 정점과 인덱스와 같은 기하 자료를 읽어서 기본 도형을 조립한다.
- 정점(버텍스)
수학적으로 정점은 두 변이 만나는 점이다.
그러나 Direct3D의 정점은 도형의 꼭짓점 이상의 의미를 가지는데,
공간적 위치 외에도 정점에 법선 벡터를 추가하거나 텍스처 좌표를 추가하는등
다양한 커스텀 정점 형식이 있다.
- 인덱스
3차원 물체의 기본 요소는 삼각형이다.
이러한 삼각형을 만들기 위해 정점 목록을 만들어 두고,
해당 정점들을 어떤 순서로 사용할지 인덱스를 적절히 나열함으로써 삼각형을 정의한다.
정점 셰이더 단계
입력 조립기 단계에서 기본 도형들이 조립된 후 정점 셰이더 단계로 입력된다.
정점 셰이더에서는 변환, 조명, 변위 매핑등 수많은 특수 효과를 정점 셰이더에서 수행할 수 있지만,
흔히 수행하는 일은 공간변환이다.
3D 오브젝트들은 자신만의 로컬 공간을 가지고 있다.
각 로컬 공간에서 SRT, 크기, 회전, 이동 연산이 이루어지고 월드 공간으로 변환한다.
2차원 이미지가 화면에 표시되기 위해서는 가상의 카메라가 필요하고,
이 카메라가 2차원 이미지를 생성해야 하는 영역을 결정한다.
이 좌표계가 바로 뷰 공간이다.
월드 공간을 뷰 공간으로의 좌표 변환을 뷰 변환이라고 부른다.
테셀레이션 단계
테셀레이션(tessellation)이란 한 메시의 삼각형들을 더 잘게 쪼개서 새로운 삼각형을 만드는 과정을 말한다.
메시를 쪼개서 좀 더 세밀한 메시를 만들어 낼 수 있으며, 생략 가능한 단계다.
테셀레이션을 통해 카메라에 가까운 메시에는 테셀레이션을 적용해서 세부도를 높이고,
먼 메시에는 테셀레이션을 적용하지 않는 방식으로 LOD 메커니즘을 구현할 수 있다.
그리고 메모리에는 로우폴리 메시를 담아두고 즉석으로 메시를 추가할 수 있다.
애니메이션이나 물리 연산은 로우폴리 메시에 대해 수행하고, 테셀레이션된 메시에는 렌더링에만 사용함으로서
계산량을 줄일 수 있다.
기하 셰이더 단계
기하 셰이더 단계 역시 테셀레이션 단계처럼 생략 가능한 단계이다.
기하 셰이더 단계에서는 정점 셰이더 단계를 거친 도형을 입력받아 정점 증감처리를 한다.
여기서 정점을 없앨 수도 있고, 정점 쉐이더에선 할 수 없었던 점, 선, 폴리곤 등을 만들 수 있다.
레스터화기 단계
레스터화기 단계는 지금까지 계산한 정점 데이터들을 실제 픽셀 데이터로 계산하는 단계이다.
이 레스터화기 단계는 프로그래밍이 불가능하고, 하드웨어에서 처리한다.
- 뷰포트 변환
-1~1로 정규화 되어있는 NDC상의 좌표를 화면 해상도 범위로 변환하고,
이 변환을 마치고 나면 x,y 성분은 픽셀 단위의 값이 된다.
- 정점 특성의 보간
앞서 정점은 위치 정보뿐만 아니라 법선 벡터, 텍스처 좌표같은 추가적인 특성도 붙일 수 있다고 했는데,
이러한 정점의 값을 보간하여 컬러, UV좌표, 노말값 같은 프래그먼트(픽셀)의 속성을 결정한다.
픽셀 셰이더 단계
픽셀 셰이더는 프래그먼트 셰이더라고 부르기도 한다.
앞서 레스터화기 단계에서 보간된 정점 특성들을 입력받아서 하나의 색상을 출력한다.
출력 병합기 단계
픽셀 셰이더 단계에서 생성한 픽셀들은 출력 병합기 단계로 입력된다.
이 단계에서, 일 부 픽셀들은 폐기되기도 하고,
폐기되지 않은 픽셀들은 후면 버퍼에 기록된다.
그리고 혼합도 이 단계에서 일어난다.
'컴퓨터 그래픽스' 카테고리의 다른 글
3. 변환 : 변환들의 합성 (0) | 2023.05.05 |
---|---|
3. 변환 : 아핀변환 (0) | 2023.05.05 |
3. 변환 : 선형변환 (0) | 2023.04.07 |
2. 행렬 대수 : 행렬의 역 (0) | 2023.03.31 |
2. 벡터 대수 : 행렬식과 딸림행렬 (0) | 2023.03.31 |