테셀레이션

two-birds.jpg
테셀레이션의 활용으로 유명한 화가 M. C. 에셔의 작품

테트레이션을 찾으신거면 해당항목으로

1 개요

Tessellation

기하학 용어.

일정한 형태의 도형들로 평면을 빈틈 없이 채우는 것. '쪽매맞춤' 혹은 '쪽매붙임'으로 번역되기도 한다.

같은 모양의 정다각형으로 테셀레이션을 하려면 정삼각형, 정사각형, 정육각형밖에 불가능하지만, 두 가지 이상의 정다각형을 활용해서 다양한 테셀레이션을 할 수 있다. 물론 정다각형이 아닌 모양으로도 테셀레이션을 할 수 있다. 보통 타일을 몇 개 조합해 만든 일정한 형태가 반복되어 나타나게 되지만, 그런 패턴이 존재하지 않는 펜로즈 타일링(Penrose tilling) 등의 테셀레이션도 존재한다.

실생활에서는 목욕탕 타일이나 보도블록을 까는 것에서 쉽게 찾아 볼 수 있을 것이다.

네덜란드의 마우리츠 코르넬리스 에셔(Maurits Cornelis Escher)]]가 테셀레이션으로 유명하다.

2 CGI에서의 응용

파일:Attachment/테셀레이션/Tesselation.jpg

걷기 불편해진다

이미 오래전부터 있던 기법이었으나 DirectX 11, OpenGL 4.0부터 본격적으로 지원하게된 그래픽 기술 중 하나. 이전엔 이것을 구현하는데 일부는 CPU를 사용했기 때문에 아무도 사용하지 않았다. 이름의 유래는 폴리곤을 삼각형으로 분할해 빠짐없이 메우는 특성 때문으로 보인다.

원래 게임 그래픽은 주로 자잘한 디테일은 생략하고 평면적인 껍데기(메쉬)에다가 색칠(텍스쳐)을 하는 식으로 구성된다. 이 메쉬를 구성하는 단위는 폴리곤인데 폴리곤은 전부 삼각형 모양이기 때문에 메쉬를 구성하는 폴리곤 숫자가 적으면 자연스레 겉면이 울퉁불퉁해지고 어색해진다. 옛날 3D 게임의 바퀴가 원형이 아닌 육각형으로 구성되어 있는 이유는 폴리곤 숫자가 적기 때문이다.

이는 비단 바위나 자갈 같은 것에서도 마찬가지인데, 사실 바위의 거친 표면이나 자갈 하나하나를 폴리곤으로 구성하려면 굉장히 힘이 들고 사양 또한 무지막지하게 잡아먹는다. 그래서 그래픽 엔지니어들은 자잘한 디테일은 생략하고 평면을 깔아 그 위에 울퉁불퉁하게 보이기 위해 범프맵핑이나 노말맵핑, 패럴렉스 계열 맵핑[1] 등의 기법을 이용하여 눈속임을 했었다.

테셀레이션은 이런 눈속임이 아니라 말 그대로 자잘한 것까지 모조리 폴리곤으로 구성하는 기술이다.[2] 이해가 안 된다면 위의 사진을 비교해보자.

디스플레이스먼트 맵핑과 마찬가지로 테셀레이션이 적용되면 연산해야할 폴리곤의 숫자가 엄청나게 많아서 처리속도가 느려진다. 그러나 DX11, OGL4.0 이상을 지원하는 GPU엔 기본적으로 테셀레이션 처리 모듈이 포함[3]되어있기 때문에 같은수의 폴리곤을 가진 모델을 넣는것보다 그나마 더 효율적이다.

테셀레이션과 고급 맵핑을 활용할 자원의 성능이 충분해졌다 하더라도 이를 많이 활용하기엔 여전히 버거운 기능이었다. 그러다가 2013년에 AMD에서 개발한 새로운 API인 Mantle을 도입하여 기존의 API로 구현하면서 발생한 오버헤드를 줄이고 콘솔 게임기에서나 활용했던 하드웨어 직접 접근, 이기종 컴퓨팅, 비동기 셰이딩, 개선된 메모리 공유 기능을 통해 성능 효율이 대폭 상승하게 되어 테셀레이션과 고급 맵핑의 제약이 줄어들었다. 2014년 초엔 MS에서도 Mantle의 특성을 반영하고 대응하기 위해 DirectX 12를 발표하였고, 크로노스 그룹에서도 역시 Mantle과 DirectX 12에 대응하기 위해 기존의 OpenGL 네이밍이 아닌 Vulkan이라는 새로운 이름의 API를 발표하였으며, 언리얼엔진 4.9.0버전, 유니티 엔진 5.2버전, 프로스트바이트 3 엔진 등의 유명 게임 엔진 쪽에서도 이러한 새로운 API를 실험적으로 도입하여 테셀레이션과 고급 맵핑 기능을 많이 활용한 게임이 증가할 것으로 전망되고 있다.

2.1 테셀레이션이 사용된 게임

  1. 패럴렉스 맵핑에서 파생된 맵핑이 여러 가지 있는데 주로 기존 패럴렉스 맵핑의 단점을 보완하는 상위 격 맵핑으로 취급하고 있다. 하지만 그만큼 연산 요구량이 더 많아지고 리소스도 더 필요하며, 결과적으로 더 비싼 기법이라 자주 사용되지 않는 편이다.
  2. 테셀레이션 기능이 본격적으로 활용하기 전에는 DirectX 9.0c 세대부터 구현 가능한 변위(디스플레이스먼트)맵핑의 등장으로 거친 표면이나 잔디 표면 등을 제대로 구현하게 되어 기존의 노말맵핑보다 수준 높은 퀄리티를 보여주면서 2000년대 중후반에 나온 AAA급 게임들이 출시 당시 실사처럼 보였던 이유 중에 하나였을 정도로 뛰어난 기법이었다. 하지만 노말맵핑보다 더 많은 정보 처리량을 요구하여 사양이 높아졌기 때문에 그래픽 엔지니어들이 지금의 테셀레이션과 마찬가지로 쉽게 채택할 수 있는 기법이 아니었다. 오버헤드가 줄어든 DirectX 10 세대에 들어서야 본격적으로 채택되기 시작했다.
  3. 하드웨어 테셀레이터가 탑재된 GPU는 DirectX 11 이상의 그래픽카드만 존재하는게 아니라 DirectX 9.0c 세대이자 XBOX 360의 GPU인 Xenos에도 탑재되어 있었다. 현세대같은 퀄리티로 뽑기엔 성능 자체가 부족해서 구현하는데 제약이 많을 뿐.