본문 바로가기
공부/Graphics

[Graphics] DirectX & UnrealEngine Pipeline 정리

by MY블로그 2024. 2. 12.

다이렉트X 그래픽스 렌더링 파이프라인

출처 : 마소 / DirectX 렌더링 파이프라인

 

1.IA - Input Assembler : 정점 데이터를 수집하는 단계

2.VS - Vertex Shader : 각각의 정점에 대한 연산을 수행

3.HS - Hull Shader : 테셀레이션 적용시 첫 단계

4.TS - Tessellator : 헐셰이더에서 입력된 정보를 기반으로 테셀레이션(쪼개기) 및 필요한 추가 정점 생성

5.DS - Domain Shader : 테셀레이터에서 생성된 정점에 대하여 추가적인 연산을 진행

6.GS - Geometry Shader : 정점 데이터를 기반으로 새로운 기하학적 형태를 생성

7.RS - Resterizer : GS에서 생성된 형태를 픽셀로 변환

8.PS - Pixel Shader : 생성된 픽셀에 대하여 연산을 실행하며 최종적으로 보여지는 색상을 결정

9.OM - Output Merger : 기존픽셀의 색상과 PS단계에서 정해진 픽셀의 색상을 결합하여 출력

 

3~5 단계(HS~DS)는 테셀레이션(쪼개기) 작업시 필요한 단계

테셀레이션 작업 예시

 

기본적으로 화면상에 출력하기 위하여 꼭 필요한 단계는 5단계

IA > VS > RS > PS > OM

 

언리얼 그래픽스 렌더링 파이프라인

현재 언리얼을 공부하고 있기 때문에 언리얼 엔진의 그래픽스 단계도 기본적으로 알아두고자 합니다.

 

1.Scene Building 단계

게임의 3D 화면(장면/Scene)을 구축하는 단계

모든 게임 오브젝트와 오브젝트의 속성(Location, Rotation, Scale)을 설정하는 과정을 포함

이 단계에서는 각 오브젝트가 어떻게 서로 상호작용 하는지도 결정

2.Culling 단계

Directx 에서도 배웠던 보이지않는 부분의 렌더링을 생략하는 단계

렌더링의 성능을 향상(최적화)시키기 위한 단계

3.Rendering 단계

컬링 단계를 통하여 필요없는 부분을 제외하고 남아있는 오브젝트들을 그리는 단계

각 오브젝트의 Texture, Material, Lighting 에대한 계산을 진행하며 최종적인 이미지를 생성

4.PostProcessing 단계

렌더링후 최종적인 결과물에 추가적으로 효과를 더하는 단계

Blur, Bloom, ColorGrading 등의 다양한 효과를 추가하여 최종적인 이미지의 퀄리티를 상승

언리얼 엔진의 포스트프로세스볼륨

 

언리얼5의 나나이트는 테셀레이션인가? (X)

언리얼의 Nanite 기술은 '가상의 기하학' 시스템으로 높은 수준의 세부 정보를 가진 모델을 실시간으로 렌더링할 수 있도록 도움을 주는 기술이다.

Nanite의 핵심은 필요한 만큼의 세부정보만을 렌더링하는것!

즉, 화면에 보이는 픽셀 수에 비례하여 세부 정보를 동적으로 렌더링하는 작업으로 불필요한 연산을 줄여주고 많은 양의 복잡한 기하학적 데이터를 더 효율적으로 처리할 수 있다.

 

요약. 테셀레이션과 나나이트 모두 세부적인 표현을 높이는 데 사용되지만 방법과 목적이 다르다,

테셀레이션은 기하학적 모델의 세부적인 해상도를 늘리기 위하여 정점을 확장 시키는 기능이며,

나나이트는 대량의 복잡한 기하학적 데이터를 효과적으로 렌더링하는 데 초점을 맞추고 있다.

댓글