자 쉰 일곱 번째 키워드인 'DirectX Tessellation'을 알아 보았다.
이전에 DX의 렌더링 파이프라인을 알아 보았는데 연계해서 같이 알아보았다.
DirectX Tessellation은 그래픽스 렌더링 파이프라인의 중요한 부분으로, 3D 모델의 디테일을 동적으로 향상시키는 데 사용된다고 한다. 이를 통해 더 현실적이고 복잡한 장면을 효율적으로 렌더링할 수 있다.
DirectX Tessellation은 세 단계로 구성된 파이프라인을 통해 수행된다.
Hull Shader - Tessellator - Domain Shader
입력: 패치 컨트롤 포인트 데이터(기본적으로 버텍스 데이터).
출력: Tessellation Factor(세분화 수준)와 변환된 패치 컨트롤 포인트 데이터.
기능: Hull Shader는 각 패치의 Tessellation Factor를 계산합니다. 이 Factor는 패치가 얼마나 세분화될지를 결정한다.
Tessellation Factor는 기본적으로 두 가지로 나뉘게 된다. 내부(Inner) Tessellation Factor와 외부(Outer) Tessellation Factor. 내부는 패치의 내부를 세분화하는 정도를, 외부는 가장자리의 세분화 정도를 나타낸다.
입력: Hull Shader가 계산한 Tessellation Factor.
출력: 분할된 새로운 패치.
기능: Tessellator는 지정된 Tessellation Factor에 따라 패치를 작은 삼각형 또는 쿼드로 분할한다. Tessellator 자체는 프로그래머가 직접 제어할 수 없으며, 고정 기능으로 수행된다.
입력: Tessellator가 생성한 세분화된 패치.
출력: 최종 정점 데이터.
기능: Domain Shader는 Tessellator가 생성한 각 새로운 정점의 위치를 계산한다. 이 셰이더는 각 정점에 대해 필요한 모든 변환 및 계산을 수행하여 최종 3D 위치와 속성을 결정한다.
Tessellation은 패치 단위로 이루어집니다. 패치는 여러 개의 컨트롤 포인트로 구성된 기본 단위이다. 예를 들어, 삼각형 패치나 사각형 패치가 있다.
Hull Shader는 입력된 패치의 컨트롤 포인트를 바탕으로 Tessellation Factor를 계산한다. 이 Factor는 보통 카메라 거리, LOD(Level of Detail), 혹은 특정 메트릭스에 기반하여 결정된다.
Tessellator는 Tessellation Factor를 사용하여 패치를 세분화한다. 이 단계는 고정 기능으로 실행되며, 지정된 Tessellation Factor에 따라 패치를 더 작은 삼각형이나 사각형으로 분할한다.
Domain Shader는 Tessellator가 생성한 작은 패치의 각 정점 위치를 계산한다. 이 셰이더는 정점의 최종 위치를 결정하며, 종종 버텍스 셰이더와 유사한 작업을 수행한다.
캐릭터 모델의 피부, 옷, 머리카락 등의 디테일을 향상시켜 더 현실적인 외형을 구현할 수 있다.
게임의 지형이나 자연환경을 더 세밀하게 표현할 수 있습니다. 예를 들어, 산맥의 세부적인 곡선이나 바위의 울퉁불퉁한 표면을 정확하게 렌더링할 수 있다.
건물, 차량, 무기 등 복잡한 기하학적 구조를 가진 오브젝트의 디테일을 향상시켜, 낮은 폴리곤 모델을 고해상도 모델로 변환할 수 있다.
이번 키워드로 인해 DX를 공부해야하는 이유를 뼈저리게 느꼈다..