Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Visual Studio

Tessellation 본문

Graphics

Tessellation

emacser 2022. 6. 6. 21:13

최근에 테셀레이션이 궁금해져서 찾아봤는데, 쉽게 설명해주는 영상이 있어서 남겨 놓는다.

 

DX11부터는 파이프라인에서 하드웨어 테셀레이션을 지원한다. Vertex Shader 과정이 끝나면 Hull Shader에서 폴리곤을 어떤 방식으로 분할할 지(Hull-Main Shader), 얼마나 분할할 지(Hull-Constant Shader) 결정한다. tessellation factor를 자유롭게 조절할 수 있는 것이 큰 장점인데, 이를 이용해 LOD(Level Of Detail)를 구현할 수 있다. 이에 대해서는 아래 포스트에서 자세히 설명하고 있다.

 

[Snow Footprint] 02.Tessellator - 01 (Hull-Shader)

저번 포스팅에선 Wave Deformer 예시를 갖고 Deformer 연산에 대한 이해와 비선형 Deform 작업에서 Normal을 구하는 방법 두 가지 (J Matrix, 근사수치기법)에 대해 공부했습니다. 이번 포스팅에선 저번 예제

develop-4-art.tistory.com

주의할 점으로 보통 vertex shader에서 model-to-world 변환과 view, projection 변환을 수행하는데, tessellation을 사용할 경우에는 vertex shader 단계 이후에 바로 Pixel Shader로 넘어가는 것이 아니기 때문에 3차원 정보가 보존되어야 한다.

따라서 월드 좌표계 변환만 수행하고 view, projection 변환은 수행하면 안된다.

 

그렇다면 카메라 좌표계로의 변환과 스크린 투영은 어느 단계에서 해야 할까?

대부분의 포스트에서는 이에 대해 자세히 다루지 않아 뭔가 찝찝한 느낌이 든다. 이에 관한 내용은 다른 포스트에서 찾았는데,

 

3차원 그래픽스 랜더링 파이프라인에 대한 흐름 설명 (1)

3차원 그래픽스에서 가장 핵심적인 내용으로 랜더링 파이프라인을 뺴놓을 수 없을 것입니다. DirectX와 ...

blog.naver.com

쭉 스크롤 하다 보면 마지막 문단에서 아래 사진과 같은 내용이 나온다.

vertex shader에서 변환 과정을 생략하였다면 tessellation과 geometry shader에서 이를 대신할 수 있다고 한다. 다만 DX11에서 tessellation stage는 다른 셰이더 단계와 달리 프로그래밍할 수 없는 고정 파이프라인 단계이므로 geometry shader에서 view-project 변환처럼 vertex shader 단계에서 생략한 변환을 수행하면 되는 것으로 보인다.

 

또 테셀레이션을 할 때 displacement map 이란 것을 사용한다고 한다. 이에 관해서는 좀 오래된 글이지만 아래 포스트를 참고하면 좋을 것 같다. 2009년에 작성한 글이지만 그만큼 fundamental에 가까운 설명 덕분에 좋은 참고가 되었다.

 

Displacement Mapping 과 Parallax mapping 의 차이

Real-time rendering 이라는 책을 읽고나서 Wiki 를 좀 둘러보다가 깨닳은 것이 있어서 좀 적어보려고 합니다. 우선 Displacement mapping 에 대해서 간단히 설명하고 이게 어떻게 Parallax mapping 과 다른지 설명

egloos.zum.com

해당 포스트에서 소개하기를 tessellation에서 사용하는 displacement map은 bump map, normal map이 mesh가 실제로는 평평하지만 마치 굴곡이 있는 것처럼 보이도록 빛을 왜곡하는 것과는 달리, 실제로 mesh의 폴리곤들이 서브폴리곤들로 분할되는 높이의 맵이라는 것이다. 여기에도 단점이 있는데, 실제로 폴리곤 개수가 늘어나기 때문에 normal mapping보다 훨씬 성능 저하가 심한 것이다. 그래서 이러한 성능 저하를 완화하기 위해 Parallax Mapping 이라는 것이 등장했다고 한다. 더이상 파고드는 것은 글 주제에 맞지 않는 뇌절이니 Parallax Mapping에 관해서는 나중에 따로 작성하는 것으로 넘어가겠다.