[include(틀:다른 뜻1, other1=연산, rd1=테트레이션)] [include(틀:평면기하학)] [[파일:external/uploads8.wikiart.org/two-birds.jpg]] 테셀레이션의 활용으로 유명한 화가 [[M. C. 에셔]]의 작품. [목차] == 개요 == Tessellation, Tiling [[기하학]] 용어. 일정한 형태의 도형들로 평면을 빈틈 없이 채우는 것. 평면작성, 타일링 등으로 불리기도 하며 '쪽매맞춤' 혹은 '쪽매붙임'으로 번역되기도 한다. 같은 모양의 정다각형으로 테셀레이션을 하려면 정삼각형, 정사각형, 정육각형 밖에 불가능하지만 (이 세 개의 정다각형만이 한 각의 크기가 360의 약수이기 때문이다) , 두 가지 이상의 정다각형을 활용해서 다양한 테셀레이션을 할 수 있다. 실생활에서는 목욕탕 [[타일]]이나 [[보도블록]]을 까는 것에서 쉽게 찾아 볼 수 있을 것이다. 펜로즈 타일링을 발견한 영국의 [[로저 펜로즈]]와 네덜란드의 [[마우리츠 코르넬리스 에셔]](Maurits Cornelis Escher)가 테셀레이션으로 유명하다. == 기하학적 상세 == 현실에서의 타일링은 타일의 모양이 [[직사각형]]일 수도 있고, [[마름모]], [[평행사변형]], [[사다리꼴]]이더라도 평면을 채우는 것이 가능하다. 임의의 형태의 [[삼각형]]은 평면을 채울 수 있다. 임의의 삼각형에 이를 180도 회전한 삼각형을 붙이면 평행사변형이 되며 평행사변형은 평면을 채울 수 있기 때문이다. 또한, 다각형이 아니라 곡선 형태의 비정형 도형으로도 평면을 채우는 것이 가능하다. 이런 경우를 모두 다루기에는 경우가 많기에, 좀더 간단하게 다루기 위해서 [[기하학]]에서는 여러 제한 조건 하에서 테셀레이션을 다룬다. * [[정다각형]]을 먼저 다룬다. * 모든 [[다각형]]은 '''꼭짓점'''끼리 만난다. * 같은 형태의 다각형은 크기가 같다. * 서로 다른 정다각형을 다룰 경우 모든 정다각형의 '''한 변의 길이가 같다'''. === 정규 테셀레이션 === [[파일:regular_tessellation.jpg]] 정규 테셀레이션(regular tessellation) 혹은 정타일링이란 평면을 한 종류의 정다각형 타일만 써서 빈틈 없이 채운 것을 말한다. 정다각형을 이용해 평평하게 무한히 이어야하므로 정규 테셀레이션을 이루는 정다각형의 꼭짓점이 만나는 부분이 360도가 되어야 하므로 정규 테셀레이션을 이루는 정다각형은 내각이 360의 약수이어야 한다. 이를 만족하는 도형은 정삼각형, 정사각형, 정육각형뿐이므로 정규 테셀레이션 또한 정삼각타일링, 정사각타일링, 정육각타일링으로 3종이 존재한다. 정규 테셀레이션은 정다면체의 정의에는 부합하나 일반적으로 정다면체로 간주하지 않거나 무시한다. === 반정규 테셀레이션 === Uniform tiling, 1-uniform tiling, Semiregular tiling. [[파일:SemiregularTessellations_600.gif]] 한 변의 길이가 같은 두가지 이상의 [[정다각형]]을 조합하여 평면을 채우는 것을 의미한다. 이중, 임의의 점에서 정다각형의 구성이 동일한 경우를 뜻하며, 총 8가지 경우가 있다. === k-uniform tilings === [[파일:DemiregularTessellations_601.gif]] 2-uniform tiling (Demiregular tiling) 정다각형을 이용해서 평면을 채울때, 각점에서 정다각형의 구성이 2가지 이상인 경우도 있다. 이것이 몇종류이냐에 따라서 k-uniform tilings 이라고 부른다. 2-uniform tilings 은 총 20가지 종류가 있으며, 3-uniform tilings 은 61가지, 4-uniform tilings 은 151가지가 있다. 참고로 k=6 까지는 완전히 분류가 끝났다. k=7 일때 1472가지가 있다는 사실은 확인되었으나, 완전히 분류되지는 않았다. 3차원 이상의 테셀레이션(벌집)은 종류가 더 많을 것이며 무궁무진 할것이다. n차원 쌍곡 타일링이나 벌집도 한 점에서의 다포체 조합의 가짓수 종류에 따라서 분류할 수는 있겠다. [[https://en.wikipedia.org/wiki/List_of_k-uniform_tilings|위키백과 참조]] === [[펜로즈 타일]] === 정다각형이 아닌 타일링 중에서 유명한 것으로 [[펜로즈 타일]]이라는 것이 있다. === 왕 타일 === 왕 타일은 상하좌우가 다른 색으로 칠해져있고 타일을 조립할때 반드시 같은 색의 부분이 서로 마주하도록 만들어진 타일이다. 테셀레이션 보다는 수학의 형식 체계에 더 가깝다. [[https://en.wikipedia.org/wiki/Wang_tile|위키백과 참조]] === [[쌍곡 테셀레이션]] === [[푸앵카레 원반]] 위에서 정의되는 비유클리드 테셀레이션. [[쌍곡 테셀레이션|해당 문서]] 참조. == CGI에서의 응용 == === 개요 === [[파일:attachment/테셀레이션/Tesselation.jpg]] 이미 오래전부터 있던 기법이었으나 높은 성능의 CPU 혹은 GPU 요구 사양으로 인해 사용되지 못 했고, 2001년 [[ATI]]가 발표한 TruForm과 2007년 [[TeraScale]] 아키텍처부터 TruForm의 개선판인 하드웨어 테셀레이션[* 2012년 [[GCN]] 아키텍처부터는 이를 '지오메트릭 프로세서'라고 명명되었다.]을 비롯한 테셀레이터가 PC 그래픽카드에서는 라데온 8500부터, 콘솔 게임기에서는 2005년 [[Xbox 360]]부터 탑재되어 존재를 알렸으나 ATI 독자 규격이라서 역시 널리 사용되지 못 했다. 그래도 기본적인 성능이 꾸준히 향상되었기 때문에 MS에서는 2009년 [[DirectX]] 11에 들어서 정식으로 채택하기에 이르렀고, 크로노스 그룹에서도 대세에 따라 2010년 [[OpenGL]] 4.0부터 정식으로 지원함으로써 널리 알려지기 시작했다. 앞에서도 서술했듯이 과거엔 이것을 구현하는데 GPU만으로는 한계가 있어서 일부는 CPU와 함께 사용했고 그마저도 성능 요구치가 너무 높았기 때문에 아무도 사용하지 않았다. 더 정확히 따지면 테셀레이션은 디스플레이스먼트(변위) 매핑과 동시에 쓰여야 진가가 발휘되는데 디스플레이스먼트 매핑까지 동원해야 하므로 실질적인 요구 사양은 기하급수적으로 더 높았다. 테셀레이션은 단순히 폴리곤의 면적을 잘게 쪼개어 더 많은 버텍스를 갖게 해주는 것일 뿐이고 디스플레이스먼트 매핑은 그 잘게 쪼개인 버텍스의 높낮이를 조절해서 울퉁불퉁한 표면의 굴곡을 만드는 역할이기 때문이다. 위의 그림에서 테셀레이션 ON/OFF의 차이는 단순히 테셀레이션 뿐만이 아닌 디스플레이스먼트 매핑도 ON/OFF 된 것이다. 이름의 유래는 폴리곤을 삼각형으로 분할해 빠짐없이 메우는 특성 때문으로 보인다. 원래 게임 그래픽은 요구 사양에 대한 낮은 진입 장벽을 위해 주로 자잘한 디테일은 생략하고 평면적인 껍데기(메쉬)에다가 색칠(텍스처)을 하는 식으로 구성된다. 이 메쉬를 구성하는 단위는 [[폴리곤]]인데 폴리곤은 전부 삼각형 모양이기 때문에 메쉬를 구성하는 폴리곤 숫자가 적으면 자연스레 겉면이 울퉁불퉁해지고 어색해진다. 옛날 3D 게임의 바퀴가 원형이 아닌 육각형으로 구성되어 있는 이유는 폴리곤 숫자가 적기 때문이다. 이는 바위나 자갈 같은 것에서도 마찬가지인데, 사실 바위의 거친 표면이나 자갈 하나하나를 폴리곤으로 구성하려면 굉장히 힘이 들고 사양 또한 무지막지하게 잡아먹는다. 그래서 그래픽 엔지니어들은 자잘한 디테일은 생략하고 평면을 깔아 그 위에 울퉁불퉁하게 보이기 위해 범프매핑이나 노말 매핑, 패럴랙스 매핑, 패럴랙스 오클루젼 매핑[* 기존 패럴랙스 매핑의 단점을 보완한 매핑이지만 그만큼 연산 요구량이 더 많아지고 리소스도 더 필요하며, 결과적으로 더 비싼 기법이라 자주 사용되지 않는 편이다.][[https://docs.unrealengine.com/udk/Three/DevelopmentKitGemsParallaxOccludedMappingKR.html|#]] 등의 기법을 이용하여 눈속임을 했었다. 테셀레이션은 이런 눈속임이 아니라 말 그대로 '''자잘한 것까지 모조리 폴리곤'''으로 구성하는 기술이다. 이해가 안 된다면 위의 사진을 비교해보자. 디스플레이스먼트 매핑과 마찬가지로 테셀레이션이 적용되면 연산해야할 폴리곤의 숫자가 엄청나게 많아서 처리속도가 느려진다. 그러나 DirectX 11, OpenGL 4 이상을 지원하는 GPU엔 기본적으로 테셀레이션 처리 모듈인 테셀레이터가 포함되어있기 때문에 같은 수의 폴리곤을 가진 모델을 넣는 것보다 그나마 더 효율적이다. 때문에, 그래픽 퀄리티(폴리곤 숫자)를 기준으로 보면 디스플레이스먼트 매핑을 하드웨어 테셀레이션으로 구현하는 게 그나마 성능 위주의 최적화이다. 점진적으로 기존 기술을 대체한 건 괜히 그런 게 아니다. * 실제로 [[ATI]]에서 [[TeraScale]] 발표 초기에 하드웨어 테셀레이션 수준의 디스플레이스먼트 매핑을 기존 기술(패럴랙스 오클루젼 매핑)로 억지로 구현해서 프레임이 박살난 걸 먼저 보여준 후에 하드웨어 테셀레이션을 적용하여 극적인 프레임 향상을 시연한 바 있다.[[http://lite.parkoz.com/zboard/view.php?id=int_vganews&no=7273|#]] 2560x1600 해상도에서 자갈 재질의 울퉁불퉁한 바닥은 구현하는데 있어, 패럴랙스 오클루젼 매핑의 초당 72 프레임에 비해 173프레임으로 2.4배 가량 빠른 모습을 보인다. 일반적인 범프맵핑은 같은 조건에서 494 프레임으로 훨씬 빠르지만 입체감이 떨어지는 게 한 눈에 띌 정도로 차이가 난다. 다만 당시 AAA급 기준 기본값이라 할 수 있을 정도의 대세였던 [[노멀 매핑]]이 비교에서 빠진 건 아쉬운 점. 테셀레이션과 디스플레이스먼트 매핑같은 고급 매핑을 활용할 자원의 성능이 충분해졌다 하더라도 2010년대 초반까지만 해도 이를 많이 활용하기엔 여전히 버거운 기능이었다. 그러다가 2013년에 AMD에서 개발한 새로운 API인 [[맨틀#s-2|Mantle]]을 도입하여 기존의 API로 구현하면서 발생한 오버헤드를 줄이고 콘솔 게임기에서나 활용했던 하드웨어 직접 접근, 이기종 컴퓨팅, 비동기 셰이딩, 개선된 메모리 공유 기능을 통해 성능 효율이 대폭 상승하게 되어 테셀레이션과 고급 매핑의 제약이 줄어들었고 2015년부터 게임사들에게 본격적으로 사용되기 시작했다. 2014년에 MS에서도 Mantle의 특성을 반영하고 대응하기 위해 DirectX 12를 발표하였고, 2015년에 크로노스 그룹에서도 역시 Mantle과 DirectX 12에 대응하기 위해 기존의 OpenGL 네이밍이 아닌 [[Vulkan(API)|Vulkan]]이라는 새로운 이름의 API를 발표하였으며, [[언리얼 엔진]], [[유니티 엔진]], [[크라이엔진]], [[프로스트바이트 엔진]] 등의 유명 게임 엔진 쪽에서도 이러한 새로운 API를 실험적으로 도입하여 테셀레이션과 고급 매핑 기능을 많이 활용한 게임이 증가할 것으로 전망되고 있다. 물론, 개발 난이도가 높은 기술 특성상 테크니컬한 부분에 많은 투자를 할 수 있는 [[AAA 게임]] 위주가 될 가능성이 높다. === 테셀레이션이 사용된 게임 === * [[더트 2]] * [[에일리언 vs 프레데터(2010)]] * [[맥스 페인 3]] * [[메트로: 라스트 라이트]] * [[배트맨: 아캄 시티]] * [[배틀필드 V]] * [[스나이퍼 엘리트 3]] * [[어쌔신 크리드: 유니티]] PC판 * [[크라이시스 2]] * [[크라이시스 3]] * [[툼 레이더(2013)]] * [[히트맨: 앱솔루션]] * [[Grand Theft Auto V]] 리마스터판 * [[라이즈 오브 더 툼 레이더]] * [[파이널 판타지 XIV]] * [[파이널 판타지 XV]] * [[월드 오브 탱크]] * [[몬스터 헌터 월드]] * [[퀘이크 챔피언스]] * [[메트로 엑소더스]] * [[그란 투리스모 스포트]] * [[노 맨즈 스카이]] * [[마인크래프트]] == 여담 == [[파일:2015년 9월 고2 수학 20번.png|width=350]] 2015학년도 9월 고2 전국연합학력평가 수학 20번에 테셀레이션이 등장한 바 있다. 정답은 ④이다. [[분류:기하학]][[분류:컴퓨터 그래픽]]