하드웨어 테셀레이션은 어떻게 작동합니까?


34

DX11의 새로운 전문 용어 인 하드웨어 테셀레이션의 작동 방식을 상대적인 명확한 용어로 설명하고 싶습니다.

감사.

답변:


42

"간단한"버전을 제공하고 관심이 있으시면 다른 사람이 세부 정보를 작성하도록하겠습니다. :).

기본적으로 3D 객체를 모델링하는 두 가지 방법이 있습니다. 첫 번째는 게임에서 많이 볼 수없는 것이며, 정확하게 수학적으로 정의 된 곡선을 사용하여 객체의 모양을 정의하는 것입니다. 이 방법을 사용하면 세부 수준은 (실제로 말하면) "무한"입니다. 예를 들어 실린더를 사용하십시오. 실린더는 매우 간단한 수학 용어로 정의 할 수 있습니다. 실제로 알아야 할 것은 실린더의 끝 부분의 길이와 길이뿐입니다. 지오메트리 측면에서이 정보는 3D 장면에서 원통을 렌더링하는 데 필요한 모든 것입니다. 또한 실린더를 쉽게 확장하여 더 크거나 작게 만들 수 있습니다. 길이와 반경의 비율을 유지하기 만하면됩니다. 동일한 수식을 사용하여 형상을 나타낼 수 있지만 매개 변수는 다릅니다. 우리는 원환 체를 표현할 수있다 모양) 쉽게 : 내부 반경과 외부 반경을 알아야합니다. 그것으로부터, 우리는 바깥 반지름에서 안쪽 반지름을 빼서 도넛 몸체의 직경 (따라서 반지름)을 계산할 수 있습니다. 원형 바디는 내부 반경으로 정의 된 호를 따라 랩핑됩니다. 이 유형의 3D 정의는 비교적 단순하기 때문에 (작은 모델 파일에서 생성됨) 세부 수준에 큰 제한이 없기 때문에 좋습니다. 단점은 오늘날의 비디오 하드웨어가 이러한 유형의 모델을 효율적으로 처리하도록 설계되지 않았다는 것입니다. 원형 바디는 내부 반경으로 정의 된 호를 따라 랩핑됩니다. 이 유형의 3D 정의는 비교적 단순하기 때문에 (작은 모델 파일에서 생성됨) 세부 수준에 큰 제한이 없기 때문에 좋습니다. 단점은 오늘날의 비디오 하드웨어가 이러한 유형의 모델을 효율적으로 처리하도록 설계되지 않았다는 것입니다. 원형 바디는 내부 반경으로 정의 된 호를 따라 랩핑됩니다. 이 유형의 3D 정의는 비교적 단순하기 때문에 (작은 모델 파일에서 생성됨) 세부 수준에 큰 제한이 없기 때문에 좋습니다. 단점은 오늘날의 비디오 하드웨어가 이러한 유형의 모델을 효율적으로 처리하도록 설계되지 않았다는 것입니다.

다른 방법은 간단한 지오메트리를 결합하여 표현하려는 모양과 비슷하게 만드는 것입니다. 우리는 테셀레이션 (Tessellation) 이라는 프로세스로이를 수행 합니다 . 원통을 바깥 쪽 가장자리를 감싸는 두 개의 원과 일련의 긴 직사각형으로 더 원시적 인 모양으로 세분화하여 테셀레이션 할 수 있습니다. 원은 가장자리를 따라 직사각형과 마찬가지로 많은 작은 삼각형으로 세분화 될 수 있습니다. 최종 결과는 삼각형 으로 구성된 모델 입니다.

삼각 실린더 이미지

또는, 원환 체를 위해 :

삼각형 원환 체 이미지

좋은 소식은 비디오 하드웨어가 이러한 종류의 지오메트리를 처리하도록 최적화되어 있다는 것입니다. 오늘날의 GPU는 매초 톤과 톤의 삼각형을 생성하는 데 어려움이 없습니다. 그러나 명백한 문제가 있습니다. 가장자리가 평평한 모양을 사용하여 곡면을 나타내려고합니다. 우리의 실린더가 (입방체가 아닌) 실린더처럼 보이도록 하기 위해 우리는 실린더를 많이 분해하고 싶습니다작은 삼각형의. 글쎄, 우리는 얼마나 많은 것을 원합니까? 따라 다릅니다. 장면을 렌더링하는 데 어떤 종류의 하드웨어가 사용됩니까? 빠른 하드웨어는 느린 하드웨어보다 삼각형을 더 빠르게 렌더링하여 더 빠른 프레임 속도를 생성 할 수 있습니다. 장면에 몇 개의 다른 물체가 존재하고 얼마나 복잡한 지 고려해야하는 다른 요소가 있습니까? 게임에서는 일반적으로 주어진 장면에 많은 물체가 있습니다. 더욱이, 객체는 각각 다른 레벨의 시각적 복잡성을 갖는 상이한 장면을 통해 이동할 수있다. 모델을 테셀 레이트 할 때 사용할 세부 수준 을 파악하기는 어렵습니다 .

또 다른 문제는 기하학적 복잡성의 문제입니다. 원통의 곡선 기반 정의는 매우 간단하지만 (반지름과 길이), 테셀 레이트 된 정의는 수백 개의 삼각형을 결합 할 수 있으며, 각 삼각형은 독립적으로 정의해야합니다. 결과적으로 테셀 레이트 된 모델 파일은 훨씬 더 커질 것입니다. 사람과 같이 복잡한 것으로 수학적으로 정의 된 모델이 있다고 가정 해 봅시다. 우리 모델 파일의 크기는 24kb에 불과합니다. 일단 해당 모델이 테셀 레이트되면 결과 파일은 24mb (24,000kb)가 될 수 있습니다. 그것은 상당히 다른 점입니다.

하드웨어 테셀레이션은 형상 쉐이더 를 활용 하여 하드웨어 지원 테셀레이션 을 실시간으로 (또는 거의 실시간으로) 수행합니다. 기본적으로 수학적으로 정의 된 3D 모델을 가져 와서 비디오 카드가 효율적으로 렌더링 할 수있는 모자이크 형식으로 변환하는 메커니즘을 제공합니다. 전통적으로 게임 개발자는 스튜디오에서 테셀레이션을 수행하고 테셀 레이트 된 모델을 게임과 함께 제공했습니다. 하드웨어 테셀레이션을 통해 게임이 실제로 플레이어의 컴퓨터에서 실행될 때까지이 프로세스를 연기 할 수 있습니다. 이것은 몇 가지 심각한 이점이 있습니다.

  1. 게임의 3D 컨텐츠 크기가 크게 줄어 듭니다 (디스크 수가 적거나 다운로드 횟수가 적고 하드 디스크 공간이 적게 필요함).

  2. 실시간으로 세부 수준을 제어 할 수 있습니다 . 우리는 게임 머신의 최첨단 야수를 실행하고 있습니까? 그렇다면 매우 높은 수준의 디테일을 사용하여 테셀 레이트 할 수 있습니다. 통합 그래픽이있는 오래된 랩톱에서 실행 중입니까? 문제 없어; 세부 수준을 간단히 낮추어 성능을 향상시킬 수 있습니다.

이것이 핵심입니다. 3D 프로그래머가 아니기 때문에 100 % 정확하지는 않지만 모든 소란이 무엇인지에 대한 더 나은 아이디어를 제공해야합니다. :).

건배,
마이크


와우 ... 훌륭해! 내가 읽은 가장 긴 '개요': P

6
필요한 테셀레이션 수준을 결정하는 또 다른 사항이 있습니다. 화면의 객체 크기입니다. 런타임 테셀레이션을 사용하면 각 객체의 여러 버전을 만들지 않고도 어디서나 정확한 수준의 세부 정보를 얻을 수 있습니다.
Adam

CPU가 조금 무겁습니까?
jcora

@ 베인, GPU 집약적입니까? CPU는 덜 신경 쓸 수 있습니다.
Nate Zaugg

0

현재 또는 가까운 미래에 대부분의 개발자가 테셀레이션을 사용하는 방식이 아쉽습니다. 그들이 지금 tess를 사용하는 것은 하이트 맵에 따라 대부분 평평한 표면을 바꾸는 것입니다. 그것은 또한 좋은 외모로 이어지지 만 여전히 훨씬 더 유능한 기술을 잘 사용하지 못한다고 생각합니다.


툴과 생산 파이프 라인은 (SamHocevar 대부분의 사람들보다 더 잘 알고 있기 때문에)이 의견은 당신을 겨냥하지 않기 때문에 다시 생각하고 재건해야하며, 새로운 하드웨어는 상당한 비율로 확산되어야합니다.
Rob Craig

@RobCraig 나는 단지 그 주석에서 철자를 고쳤 음을 주목하라; 나는 원저자가 아닙니다.
sam hocevar

@ SamHocevar Yup, 나는 생각했다-명확히 해 주셔서 감사합니다!
Rob Craig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.