11 лет назад 10 сентября 2007 в 0:00 59

Tiling2,3

Текстуры много не бывает

авторр: Владимир Красильников

После Всемирной конференции разработчиков (WWDC) Apple, прошедшей 11-15 июня в Сан-Франциско, по блогам и форумам поползли слухи, подчас сумасбродные. Правда ли, что Кармаку удалось запихать 20 Гб текстур в видеопамять?

Да и зачем ему столько, если демо-ролик был средней паршивости? Неужели теперь все последующие игры будут выходить на Blu-ray или HD-DVD из-за объема текстур? Разобраться в хаосе мнений, PR-мифов и фактов, сдобренных полуправдой, как обычно, помогли поисковики и голова на плечах, а результат может быть интересен всем, кто еще не понял, что это за зверь такой — технология MegaTexture.

Немного о тайлинге

<Tiling2,3 и 4>

С самого зарождения трехмерной графики некоторые геометрические объекты были слишком велики, чтобы наложить на них одну большую текстуру. По правде говоря, из-за того что аппаратная поддержка 3D практически отсутствовала, да и оперативной памяти было кот наплакал, тайлинг использовался повсеместно. Тайлинг (от англ. tile — черепица, плитка) — это когда для крупной модели берут одну маленькую текстурку, размноженную много раз.

Усилиями прогресса со временем производительность железа выросла, а гейм-дизайнеры подметили, что на настоящей поляне трава и цветочки растут неравномерно и на обои совсем не похожи. Тогда-то стали с тайлингом мудрить: стыки между тайлами подлатают, чтобы незаметно было; наложат вместе с другой маленькой текстурой через маску (blending — смешивание). Разработчики добились больших успехов на поприще текстурирования — и все малой кровью, видеопамять-то не резиновая.

Тем временем аппаратный ресурс продолжал расти, и одному небезызвестному гуру по имени Джон Кармак пришла в голову идея: а что если забыть про тайлинг и вернуться к одной большой картинке для всего объекта? Проварив ее в голове три года, Джон вместе с командой Splash Damage придумали технологию MegaTexture, которая вошла в следующее, пятое по счету, поколение движка id Tech. Результат ее работы можно было видеть на упомянутой выставке: в демонстрации гоночной аркады трасса была покрыта текстурами общим объемом 20 Гб, что намного больше, чем позволяет видеопамять современных ПК.

Здесь следует чуть-чуть отступить назад и оговориться. Шоу на WWDC 2007 — не первая демонстрация MegaTexture. Сразу после выхода Doom 3 его графический движок, позже переименованный в id Tech 4, подвергся нападкам – дескать, слишком плохо работает визуализация открытых пространств. Тогда Джон вместе с id Software поднатужились и выдали MegaTexture Mod для Doom 3/Quake 4/Prey, который обрабатывает текстуры размером 2kx2k. Правда, рядом с цифрами, заявленными для id Tech 5 — изображения размером 32kx32k и объемом в среднем по 6 Гб, — этот старый мод меркнет. Сам собой напрашивается следующий интересный вопрос.

Как это работает?

<NormalTex и MegaTex>

Разумеется, ответить подробно могут только Кармак сотоварищи. В прошлогоднем интервью для сайта GamerWithin.com автор MegaTexture признался, что в технологии нет ничего сногсшибательного, он ожидал ее реализации еще три-четыре года назад, однако пойти непроторенным путем никто не решился, кроме id и Splash Damage. Более того, MegaTexture совершенно равнодушна к железу, ее вполне можно использовать даже на первых 3Dfx-ускорителях, если верить Джону. Учитывая все это, можно с уверенностью сказать, что речь идет о методе сжатия, альтернативном тайлингу (который, к слову, тоже можно рассматривать всего лишь как один из методов компрессии крупных изображений). Только MegaTexture сразу берет в расчет все геометрическое построение, а тайлинг сперва разрезает модель на небольшие фрагменты, а затем накладывает текстуры на каждый по очереди.

Впрочем, нас, потребителей, больше интересует, что нового привносит MegaTexture в игры. Разработчики получают довольно простой и универсальный инструментарий для создания открытых пространств без долгой возни над кодом и сложных программных построений. Грубо говоря, с MegaTexture дизайнеры уровней сосредоточатся на реализации своих художественных замыслов и будут меньше переживать за их успешное воплощение. Каждый тексел (точка текстуры) становится уникальным, что означает больше, чем просто неповторимый ландшафт. К отдельным зонам локации можно привязать разные значения трения или звуки. Грязь станет отличаться от травы не только с виду, но по скорости передвижения и на слух. Пока что очень немногие игры могут похвастаться качественной озвучкой шагов, а MegaTexture просто включает эти параметры в генерируемую текстуру.

Разумеется, от того, что создание уровней станет ближе к искусству, выиграют и простые игроки. Правда, пока демонстрация на конференции Apple больше удивила разработчиков, чем геймеров. Да ведь и сам Кармак не устает повторять, что MegaTexture не несет в себе ничего революционного; просто технология станет более простым средством достижения реалистичности, чем нынешние программные наработки. Вдобавок не стоит забывать про ограничения: пока что очень большие текстуры появятся только на деформированных плоскостях — архитектура и другая сложная геометрия не в счет.

Судя по всему, MegaTexture действительно может стать стандартом в играх следующего поколения. По крайней мере, издалека красивые компьютерные ландшафты смотрятся очень заманчиво. Возможно, мы увидим их уже этой осенью.

P. S.

Пока что единственная заявленная игра на id Tech 5 — это Enemy Territory: Quake Wars, которая к выходу этого номера тоже уже должна выйти. Сомневаюсь, что она займет более одного DVD, ведь разумнее сразу хранить мегатекстуры в сжатом виде. Не знаю как вы, а я вздохнул с облегчением, узнав, что тотальная Blu-ray/HD-DVD-конверсия откладывается.

Еще о MegaTexture

www.worthdownloading.com/game.php?gid=2678 — пресловутый ролик с WWDC 2007.

www.gamerwithin.com/?view=article&article=1319&cat=2 — интервью с Джоном Кармаком о MegaTexture от 1 мая 2006 года.

www.gamedev.no/megatexture_valley/valley.html — блог разработчиков о ранних версиях MegaTexture.

doom3.filefront.com/file/Megatexture_Technology_Mod;80169 — мод для Doom 3/Quake 4/Prey, который дает попробовать раннюю версию MegaTexture в действии.