Тесселяция: что это такое и как она работает в играх
Рассказываем, за что отвечает тесселяция, как она улучшает детализацию ландшафта и объектов и влияет на частоту кадров.


Иллюстрация: Оля Ежак для Skillbox Media
Во время прохождения игр с реалистичной графикой можно увидеть живописные скалы, осязаемые следы на снегу, объёмные стежки на одежде персонажей и другие выразительные детали. Всё это — результат тесселяции, которая нередко встречается в настройках современных игр.
В этом материале мы объясняем, что такое тесселяция, какова её роль в 3D-графике, какие бывают виды тесселяции и как она применяется в известных играх.
Содержание
- Что такое тесселяция
- Для чего используется тесселяция в компьютерной графике
- Виды тесселяции
- Примеры игр с реалистичной тесселяцией
- Стоит ли использовать тесселяцию: плюсы и минусы
Что такое тесселяция
Тесселяция — одна из ключевых технологий в современной компьютерной графике. Именно тесселяция делает плоские поверхности объёмными и добавляет множество деталей, не задействуя миллионы полигонов.
Тесселяция позволяет разбить четырёхугольник на два треугольника, а затем из этих двух сегментов получить четыре, восемь, 16 треугольников — и так до бесконечности. Таким образом, существующие полигоны разбиваются на дополнительные треугольники (но не полигоны), и тогда низкополигональный объект становится более проработанным и детализированным.

Изображение: Skillbox Media
Впрочем, независимо от того, как представлен полигон объекта — в формате всего лишь двух или двух сотен треугольников, — сама по себе тесселяция не добавляет новых деталей объекту. Выпуклости и вмятины на поверхностях появятся только в случае наличия данных, отображающих положение вершин мелкой сетки. Под ними, как правило, подразумевается рельефное текстурирование с помощью карты параллакса или смещения (Displacement map). Последнее сейчас наиболее актуально, так как карты смещения в сочетании с тесселяцией создают иллюзию видимого объёма даже на плоских участках.
В качестве примера можно привести демонстрацию бенчмарка Heaven от Unigine. И хотя он вышел достаточно давно, в нём наглядно представлена разница итогового изображения с применением данного метода и без него.

Кадр: Nathaniel Joseph Claw / YouTube
Впервые поддержка тесселяции появилась в графической карте ATI Radeon 8500 в 2001 году и была известна как TruForm. Её специфика тогда заключалась в обработке треугольников с регулируемым параметром уровня детализации. Для вершин и нормалей были доступны несколько видов интерполяции: линейная и квадратичная для нормалей и кубическая для вершин.
Несмотря на то, что разработчики могли легко интегрировать технологию в существующий рендеринг, она не прижилась в индустрии из-за различных ограничений. К примеру, в результате интерполяций между полигонами образовывались щели. Также отсутствовала поддержка карт с рельефом, равно как и гибкий подход к изменению геометрии.
Тесселяция стала востребованной с появлением интерфейса DirectX 11 в конце 2000-х годов. О нём — чуть ниже.
Для чего используется тесселяция в компьютерной графике
Главная цель тесселяции — повысить уровень детализации окружения и персонажей без увеличения количества исходных полигонов. Вот несколько основных преимуществ этой технологии.
- Поверхности со сложной структурой (ландшафт, вода, ткани) становятся более реалистичными и объёмными за счёт мелких деталей.
- При применении тесселяции отсутствуют ступенчатые переходы в структурах с изгибами, что порой важно для корректного отображения следов на снегу или песке.
- При применении тесселяции происходит динамическое изменение уровня детализации объектов в зависимости от расстояния внутриигровой камеры.
Виды тесселяции
Методы тесселяции во многом зависят от сферы применения и возможностей разработчика.
Статическая тесселяция
Под ней подразумевается подразделение поверхности на сегменты — после такого подразделения структура модели остаётся неизменной при любых условиях. Под эту категорию подходят модели с применённой функцией Подразделение поверхности (Subdivision Surface), после которой количество полигонов в сетке увеличивается в разы.
Пример статической тесселяции встречается в основном в программах для 3D-моделирования (Blender, Maya, Cinema 4D и так далее), где рендеринг изображений и анимаций, как правило, происходит в офлайн-режиме, а не в реальном времени.
Адаптивная (динамическая) тесселяция
Широко распространена в современных играх. Её суть в том, что количество полигонов у объекта изменяется в реальном времени и в основном зависит от угла обзора или расстояния объекта до внутриигровой камеры. Графический процессор или шейдер анализирует геометрию в кадре и вычисляет, сколько в настоящий момент нужно сгенерировать дополнительных треугольников.
Стоит отметить, что плотность геометрии в этом случае изменяется автоматически — в зависимости от расстояния. При этом подготовка моделей с разным уровнем детализации (LOD) необязательна, если речь не идёт о моделях персонажей, производстве мобильной игры или окружения, требовательного к оптимизации. Динамическая тесселяция поддерживается в движках Unity, Unreal Engine 4 и Unreal Engine 5 (в пятой версии для этого используется технология Nanite), CryEngine, Unigine и других игровых движках, ориентированных на реалистичную 3D-графику.
Аппаратная тесселяция (Hardware Tessellation)
В отличие от динамической, аппаратная тесселяция реализована не через игровой движок, а интегрирована в видеокарты через встроенные графические API — DirectX 11 и DirectX 12, OpenGL 4 и Vulkan. В процессе задействованы специальные программируемые шейдеры. Их названия могут различаться в зависимости от типа API. Например, тесселяция в DirectX 11/12 реализована в три этапа — этап шейдера корпуса (Hull Shader), этап Tessellator и этап шейдера домена Domain Shader. В целом стадии во всех API одинаковы и различаются лишь названиями и синтаксисом кода.
Поддержка аппаратной тесселяции встречается как в играх, созданных на популярных игровых движках, так и в тайтлах, созданных с использованием собственных технологий разработчика — например, The Witcher 3: Wild Hunt, Metro Exodus, Far Cry 4 и так далее. Благодаря программируемым шейдерам подход считается более гибким и универсальным, так как его можно интегрировать в любой движок. Учитывая, что при таком методе задействован только графический процессор, есть риск снижения производительности на менее мощных видеокартах.
Примечание. С 2024 года Epic Games объявила о прекращении поддержки аппаратной тесселяции на Unreal Engine 5 в перспективе. Вместо этого компания решила сосредоточиться на кросс-платформенной поддержке Nanite. Тем не менее, если разработчики захотят внедрить эту технологию самостоятельно, компания готова оказать ограниченную поддержку.
Примеры игр с реалистичной тесселяцией
The Witcher 3: Wild Hunt
Тесселяция в The Witcher 3: Wild Hunt придаёт объектам окружения (дорогам, ландшафту, стенам и так далее) чуть более осязаемый объём на близком расстоянии. Её настройку можно отрегулировать в пункте Качество рельефа. Впрочем, на практике эффект незначительный и более наглядно представлен в модификациях.
Также игра поддерживает специальную технологию NVIDIA Hairworks для тесселяции причёсок, шерсти и меха, отображая их буквально по волоску. Правда, пользователи нередко отмечали баги с некорректным отображением шевелюр персонажей.

Metro Exodus
В сочетании с трассировкой лучей тесселяция в Metro Exodus заметно преображает локации, добавляя стенам, объектам и ландшафту больше рельефа. Благодаря этому усиливается ощущение реалистичного окружения, особенно если учесть, что это шутер от первого лица и игрок постоянно рассматривает объекты с близкого расстояния.
Журналисты Digital Foundry отмечали, что в этом плане ПК-версия игры смотрелась гораздо выигрышнее, чем, к примеру, на Xbox One X, где эффект объёмных поверхностей отсутствовал.

Battlefield 5
Тесселяция в Battlefield 5 помогает визуализировать не только правдоподобный рельеф статичных поверхностей, но и следы персонажей, а также отпечатки шин и гусениц на ландшафте, которые изменяются в динамике. Также технология задействована при отображении воронок от взрывов. Как и в The Witcher, эффект объёмного ландшафта настраивается в пункте Качество рельефа.

Crysis 3
Помимо тесселяции растительности, в игре активно использовались специальные карты смещения на уровне пикселей (Per-Pixel Displacement Mapping). За счёт этого стволы деревьев приобретали визуальный объём даже без применения метода тесселяции. В видео ниже наглядно представлено, как этот подход выглядит в игре.
Far Cry 4
Действие игры происходит в Гималаях, с очень живописными видами, поэтому тесселяция в Far Cry 4 направлена на улучшение окружающей природы — ландшафта, гор, стволов деревьев и даже меха животных (на основе ранее упомянутой NVIDIA Hairworks).

Стоит ли использовать тесселяцию: плюсы и минусы
Наличие тесселяции значительно повышает качество графики в играх, тем не менее оно требует взвешенного подхода.
Преимущества тесселяции
Заметное улучшение качества изображения в играх. За счёт увеличения количества треугольников в сочетании с картой смещения игровое окружение становится более реалистичным. И, несмотря на то, что это всего лишь имитация, на таких поверхностях лучше отображаются падающие тени, в отличие от обычных объектов с картой рельефа или картой нормалей (Bump map / Normal Map), где поверхность фактически остаётся плоской.

Скриншот: игра Far Cry 4 / Ubisoft
Поддержка современных инструментов разработки. Тесселяцию поддерживают популярные игровые движки и современные графические API (аппаратный метод). В совокупности это позволяет разработчику внедрить технологию в игру без лишних затрат.
Недостатки тесселяции
Некорректное отображение эффекта. В обсуждениях различных игр нередко встречаются жалобы на баги, возникающие после подключения тесселяции. В отдельных случаях она и вовсе негативно сказывается на игровом опыте.

Снижение производительности. Чем выше детализация, тем сильнее нагрузка на графический процессор. Следовательно, на слабых видеокартах может отмечаться падение частоты кадров в секунду. Впрочем, многое зависит и от того, насколько оптимизирована игра под ту или иную линейку видеокарт. Например, Shadow of the Tomb Raider адаптирована под карты NVIDIA, поэтому подключение тесселяции влияет на производительность совсем незначительно.

Изображение: NVIDIA
Итог
Тесселяция — это мощный инструмент в 3D-графике, который делает плоские модели визуально объёмнее благодаря использованию специальных карт смещения. Она активно используется в крупнобюджетных играх для улучшения детализации окружения, ландшафта и персонажей.
Несмотря на все преимущества, технология требует продуманной интеграции и оптимизации — особенно в отношении систем со слабой конфигурацией. В некоторых случаях разработчику придётся вводить несколько уровней в настройках, чтобы как можно больше игроков смогли оценить детализацию игрового мира.
Также важно не перестараться с тесселяцией, настраивая её интенсивность. Возможно, мостовая, выстланная огромными камнями, смотрится эффектно в рамках бенчмарка, но в игре невозможно представить персонажа, который мог бы по ней комфортно ходить. Поэтому при внедрении технологии разработчику необходимо найти компромисс между реализмом, производительностью и здравым смыслом.