에디의 우당탕탕 코딩공장

[Graphics] Tesselation

by 인턴 에디

테셀레이션은 주어진 메시의 삼각형들을 더 잘게 쪼개서 새로운 삼각형들을 만드는 과정을 말한다. 새 삼각형들을 새로운 위치로 이동함으로써 원래 메시에 없는 세부적인 특징을 만들어 낼 수 있다.

 

1.  Tesselation

1. 카메라에 가까운 삼각형에는 tesselation을 적용하여 세부도를 높이고, 먼 삼각형들에는 적용하지 않는 방식으로 세부수준 ( LOD : Level - Of - Detail ) 를 구현할 수 있다.

 

 

2. 적은 수의 삼각형들로 이루어진 메시를 메모리에 담아두고 즉석으로 삼각형을 추가하여 메모리를 절약할 수 있다.

 

3. 애니메이션이나 물리 처리 같은 연산들을 단순한 저 다각형 메시에 대해 수행하고, 테셀레이션이 된 고 다각형 메시는 렌더링에만 사용함으로 써 계산량을 줄일 수 있다.

 

 

2. Tessellation Stages

 

 

1️⃣ Hull-Shader Stage

- 변환 순서

Tessellation은 Geometry 계산을 하기 전에 실행된다. 그 이유는 Vertex Shader에 들어온 정점을 사용하는 것이 아니라, 그 정점을 기반으로 새로운 정점을 생성하기 때문이다. 따라서 Vertex Shader 단계에서 Projection을 하지 않고 정점의 월드 변환 까지만진행한다.

 

- 역할

폴리곤을 어떻게 분할할 것인가? → Hull-Main Shader

폴리곤을 얼마나 분할할 것인가? →  Hull-Constant Shader 를 결정한다.

2️⃣ Tessellation Stage

Programmable

 

Hull Shader에서 정한 폴리곤을 어떤 기준으로 얼마나 분할 할 것인지에 대한 결과를 Input으로 받아, Domaion Shader에 사용할 '무게중심'을 계산한다.

 

3️⃣ Domain Shader Stage

Tessllator에서 생성한 최종 vertex position을 생성한다.

 

 

3. Tesselation을 하는 이유

처음부터 cpu에서 high resolution( 높은 해상도 )로 gpu에 올리려고 하면 병목 현상이 발생한다. 그러나 테셀레이션을 사용하면 데이터 버스에서 오는 병목현상을 줄이면서 고해상도로 구현이 가능하다.

'Client > directX' 카테고리의 다른 글

[Graphics] Gimbal Lock  (2) 2024.02.28
[Graphics] Vertex Shader VS Pixel Shader  (0) 2024.02.27
[Graphics] Rendering Pipe Line  (1) 2024.02.27
[DirectX11] Vcpkg-Imgui 설치하기  (0) 2022.09.17
[CGP(2)] DirectX11 기초 개념 복습(1)  (1) 2022.09.02

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기