понедельник, 2 апреля 2012 г.

Спец-статья. Графические технологии на консолях


Автор: Белозеров Дмитрий
Корректор: Яковлев Иван
Дата написания: 27.02 - 18.03.2012
Дата последней правки: 02.04.2012
Возрастное ограничение: 12+
[Версия для Игр@mail.ru]

Как вам уже, должно быть, известно, мы живем в эпоху заката консолей седьмого поколения. На горизонте маячат Wii U, Xbox 720 и PS4. Разработчики выжимают последние соки из текущих приставок, прибегая для этого к совсем не популярным на ПК методам. О них мы сегодня и поговорим.


HD или не HD, вот в чем вопрос


Помните обещания Microsoft в середине 2000-ых, когда нас уверяли в том, что launch-проекты для Xbox 360 будут выдавать честное 720р? На деле оказалось не совсем так. Perfect Dark: Zero, Call of Duty 3, Project Gotham Racing 3 – родное разрешение этих тайтлов оказалось ниже обещанного HD. Давайте разберемся в деталях. Область в памяти, предназначенную  для хранения отрендеренных  кадров, называют «framebuffer». 3D-сцена рисуется в реальном времени в определенном разрешении, которое может не совпадать с разрешением вывода на экран. Именно этим и воспользовались разработчики вышеуказанных игр. В начинке Xbox 360 имеется очень хитрая вещь, именуемая апскейлером (appscale — увеличивать). С его помощью разрешение кадров из фрейм-буфера преобразуется в выходной сигнал, заданный в настройках консоли (720р, 1080i, 1080р). Таким образом, создается ложное HD-изображение.

Как же дело обстоит с качеством, спросите вы. Оно зависит от многих факторов. В первую очередь от апскейлера. В Xbox 360 он аппаратный, что увеличивает качество выводимой картинки, не допуская видимых глазом артефактов. На PS3 же ситуация несколько иная. Апскейл производится с меньшей точностью, что может давать различные искажения изображения. Самым ярким примером является Red Dead Redemption, рендерящийся на японской консоли в разрешении 640р. До последнего патча изображение отличалось сильной пикселизацией, что вкупе с лесенками (алиасинг) давало достаточно «вырвиглазный» эффект на Full-HD телевизорах. Однако, есть куда более удачные примеры апскейлинга (например, The Darkness). Благодаря грамотному применению пост-эффектов пикселизация изображения не так заметна для глаза. Но зачастую подобные меры вызывают «замыливание» картинки. Остается еще проблема алиасинга, который особенно заметен при апскейле.

Примечание:
Не стоит путать процесс апскейла с простым «растягиванием» низкого разрешения до более высокого. Это достаточно сложное преобразование.

Для смягчения лесенок используются различные технологии сглаживания. В видеочипе Xbox 360 присутствуют специальные аппаратные блоки для обработки антиалиасинга (AA), в результате его применение практически не влияет на быстродействие. Понижение разрешения рендера высвобождает небольшой объем оперативной памяти (напомню, в консолях оперативная память используется и под нужды видеоадаптера). В итоге связка sub-HD + сглаживание по производительности оказывается гораздо выгоднее, чем честное 720р с применением АА или же без него. К слову, серия Halo на Xbox 360 использует именно первый вариант. Подобный шаг (по словам разработчиков) объясняется тем, что игры требуют достаточно большой вычислительной мощности для обработки ИИ. Alan Wake использует разрешение 960х540 с применением мультисэмплинга (MSAA) с выборкой 4. Судя по всему, освободившиеся ресурсы используются для дальности прорисовки в 2 км. При этом отличить картинку от родных 720р без специальной аппаратуры практически невозможно. Единственное, что выдает sub-HD сущность проекта, – легкая размытость и зерно.


К сожалению, на японской консоли со сглаживанием дела обстоят гораздо хуже. Единственный встроенный метод, практически не влияющий на производительность, – Quincux (или blur filter). Он использовался еще в nVidia Geforce 3, но позже был упразднен из-за низкой эффективности. В его основе лежит своеобразный блюр, который просто размывает лесенки, делая их менее заметными. Но в отличие от более прогрессивных технологий сглаживания этот эффект распространяется не только на края объектов (как в краевом сглаживании), а на все изображение целиком. По вполне понятным причинам, будучи даже запущенной в 720р, игра выглядит смазано и размыто. Так как архитектура PS3 достаточно сложна для освоения, первые два года разработчики пользовались Quincux. Именно из-за этого в интернете распространилось мнение о «мыле» на японской приставке. Но гораздо хуже ситуация, когда данный метод сглаживания используется вкупе с sub-HD разрешением. Результат можно увидеть в Grand Theft Auto 4.

Слева фрагмент скриншота из GRAW2 на Xbox 360 со сглаживанием MSAA 2x, справа — на PS3 с применением Quincux. Обратите внимание на тонкие металлические конструкции и мелкие детали

Позже появилась технология FXAA (Deus Ex:Human Revolution, TES V: Skyrim (PC, PS3)), которая тоже, по сути, является сглаживанием посредством пост-обработки, но размытие картинки не такое существенное, как в Quincux. В отличие от «тяжелого» мультисэмплинга падение производительности находится в районе 10-15%.

В таких проектах как Halo Reach и Crysis используются методы custom AA. Их суть заключается в накладке кадров друг на друга, что дает приемлемое сглаживание лесенок. Но перманентное использование данной технологии не рекомендуется. Например, в публичной бета-версии Halo Reach постоянное применение давало заметное двоение изображения при быстрых движениях. Поэтому custom AA отключается в динамичных сценах – глаз игрока не замечает кратковременно появившийся алиасинг.

Побочный эффект Custom AA в бета-версии Halo Reach (слева)

Не стоит забывать тот факт, что в эксклюзивах PS3 практически всегда используется «родное» 720р с мультисэмплингом 2х. В отличие от сторонних разработчиков, внутренние студии Sony уже научились оптимально использовать архитектуру консоли. Особенно выделяется Gran Turismo 5. В зависимости от настроек видеовывода PS3 великий автосимулятор может работать в двух режимах. Первый из них – 720р MSAA 4х, второй, предназначенный для full-HD панелей, — 1280х1080 MSAA 2х. Последнее разрешение подразумевает апскейл до 1920 пикселей по горизонтали. Отличить подобный финт ушами от честного 1080р на глаз невозможно. Это решение принято неспроста – Gran Turismo 5 нацелена на 60 кадров/с, которые, вероятно, не достигались при 1920х1080.

Фоторежим GT5 не дает представления об истиной графике игры. Фото рендерятся в честном 1080p и на повышенных настройках

Горизонтальный апскейл – далеко не самый редкий способ высвободить оперативную память без заметного ухудшения четкости картинки. Он популярен на обоих консолях.  Например, его используют игры на движке CryEngine 3.

На заметку:
На ПК тоже можно поэкспериментировать с апскейлом и сглаживанием. Для опыта нам понадобится игра на движке Serious Engine 3 (подойдут HD-версии первого и второго пришествия и третья часть Serious Sam). В опциях присутствует два вида разрешения. То, которое находится в настройках изображения – это разрешение вывода. В графе производительности вы увидите разрешение рендеринга. Если первое должно в идеале совпадать с вашим монитором, то второе уже можно регулировать в зависимости от быстродействия вашего ПК. Например, у автора этих строк Serious Sam 3 рендерится в 720р MSAA 2х, а выводится на экран в 1600х900. Лесенки исключаются применением  мультисэмплинга, но самое изображение становится более размытым. Зато можно включить красивые отражения воды, которые тормозили при «родных» 1600х900.

Если же ваш ПК наоборот позволяет рендерить изображение в большем разрешении, чем у монитора, можете поставить второе значение выше первого. Это даст дополнительное сглаживание (фактически суперсемплинг).


Синхронизировали, да не высинхронизировали


Если выбор разрешения и сглаживания определяет глобальную производительность проекта, то такая вещь как вертикальная синхронизация позволяет наиболее аккуратно и тонко регулировать быстродействие. Давайте сначала рассмотрим, для чего же она нужна.

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

В большинстве случаев игры на Xbox 360 используют именно двойной буфер для вертикальной синхронизации. Посмотрите на кат-сцены первой части Gears of War или Halo Anniversary, и вы поймете, почему данная технология является далеко не самой оптимальной. Да, разрывы экрана действительно исчезают, но взамен мы получаем дергающуюся камеру при круговых облетах и падение быстродействия до значения около 20 кадров/с. Но если в игровых роликах это еще не так заметно, то геймплей, в особенности, если это геймплей экшена,  может пострадать из-за снижения отзывчивости управления и затрудненного прицеливания.
Поэтому в современных играх используется опция Smart. Ее эффект заключается в том, что при падении производительности синхронизация с частотой монитора просто отключается. Конечно же, появляются горизонтальные разрывы, но это происходит только при стрессовых нагрузках движка. Куда более важен тот факт, что частота кадров остается на том же уровне, а, следовательно, удается избежать «тормозов».

На заметку:
В недавнем Alan Wake's American Nightmare разработчики предоставили игрокам самим выставить режим вертикальной синхронизации. По умолчанию предусмотрительно выбран Smart, но вы можете попробовать и постоянный. Эффект последнего особенно заметен в экшен-сценах с большим количеством врагов и при применении световых гранат. Управление перестает быть комфортным, а камера неприятно дергается.

На PS3 ситуация несколько проще, так как японская консоль поддерживает вертикальную синхронизацию с тройным буфером. В результате обработка изображения происходит быстрее, что положительно сказывается на производительности игры. Если падение количества кадров и происходит, то в разумном пределе.

Это познавательно:
Тройную буферизацию можно включить в драйверах вашего ПК и в настройках проектов на движке Source.


Высоко сижу, далеко гляжу


В играх с открытым миром всегда остро стоял вопрос дальности прорисовки. С материализующимися из воздуха предметами и туманом знакомы многие обладатели консолей предыдущих поколений. Сейчас же ситуация изменилась мало – только способы стали менее топорными.

Самая распространенная технология LOD (level of detail). По мере удаления объекта от наблюдателя, он постепенно теряет в детализации. Касается это не только текстур, но и геометрии. Самый дешевый способ разгрузить железо консоли, но требующий аккуратного подхода к реализации. Резко меняющиеся уровни детализации зачастую вызывают раздражение и эффект искусственности игрового мира. Чтобы избежать подобного, разработчики используют технологии, ограничивающие дальность прорисовки. Глубина резкости (Depth of Field) уже достаточно давно используется в видеоиграх. Задний план картинки размывается, имитируя эффект фокусировки человеческого взгляда. Действенно, но его наличие вне кат-сцен вызывает много вопросов. Более изящные методы строятся на использовании Bloom и HDR. Благодаря им в последнее время все чаще применяется эффект засветки. Его можно увидеть в недавнем Syndicate, правда, Starbreeze все же переборщили. Наиболее грамотно засветка реализована в Crysis для консолей. Впрочем, в нем присутствуют практически все существующие хитрости, описанные в данной статье.

Rockstar же пошли по другому пути, применяя в своих играх некое подобие Blur filter с примесью Depth of Field.

Эффект отсутствует в ПК-версии по умолчанию (слева), но никто не мешает его включить и получить консольную картинку (справа)

А в PS3-версии Red Dead Redemption sub-HD разрешение в плане дальности прорисовки оказывается даже приятнее четкой Xbox-картинки. Хотя, это скорее дело вкуса.

Xbox 360: 720р MSAA (слева), PS3: 640р Quincux (справа)


Жесткий или оптический диск?


Данная глава больше всего актуальна для консоли PS3. Как вы уже знаете, внушительное число проектов, как мультиплатформенных, так и эксклюзивов, буквально заставляют частично устанавливать себя на жесткий диск приставки. Особенно неприятно это было в 2007-2008 годах, когда «стоковые» винчестеры обладали смешным объемом (от 20 до 80 Гб). Зачем же это нужно? Кроется причина в приводе японской консоли. BD-дисковод способен считывать Blu-Ray на скорости 2х. Если full-HD фильмам этого вполне хватает, то для стримминга игровых данных требуется более быстрое чтение, которое как раз обеспечивает жесткий диск. Некоторые разработчики все же сумели грамотно реализовать загрузку с Blu-Ray (Uncharted 2, God of War 3), некоторые выбрали путь динамических загрузок (Killzone 2). В любом из этих случаев нам приходится довольно продолжительное время смотреть на экран с надписью «Loading». Иногда это бывает в два раза дольше, чем на Xbox 360 (The Darkness).

Это познавательно:
Подтверждение вышеизложенному тексту искать долго не придется. Для эксперимента понадобится PS3 и игра Bayonetta. Напомню, это что один из самых неудачных мультиплатформенных релизов. Версия для Xbox 360 была перенесена на японскую консоль незадолго до релиза совершенно неизвестной командой, нанятой Sega. В результате PS3-версия страдала от низкокачественных текстур и чудовищно долгих загрузок. Но позже сотрудники Sony (!) выпустили патч, позволяющий установить часть данных на жесткий диск. И, о чудо, Bayonetta защеголяла терпимыми загрузками и более четкими текстурами (!!). Оказывается, последние просто не успевали полностью подгружаться с диска.

Торопливый порт при незнании архитектуры консоли дает совершенно удручающий результат. Текстура не успевает толком считаться с оптического диска (слева)

Совсем немногие игры позволяют пользователю выбрать – играть ли ему с диска, или установить на винчестер. Помимо вышеописанной Bayonetta хочется отметить Gran Turismo 5. «Вес» данных этого проекта составляет около 10 Гб, не считая патчей. При запуске нам рекомендуют произвести начальную установку общим объемом чуть более 6 Гб. Все остальные данные будут сбрасываться на жесткий диск небольшими порциями прямо во время игры (автомобили, трассы). До патча 2.0 решение было критичным. При отключении установки GT5 загружала трассы очень долго, модели автомобилей в гараже и автосалоне появлялись с ощутимой задержкой, что, конечно, портило впечатление об этом, без преувеличения, шедевральном автосимуляторе, если учесть, что и с установленными данными проект был не очень-то расторопен.

Установка данных на жесткий диск стала обыденностью для обладателей японской консоли. И только в Heavy Rain этот процесс скрашен инструкцией по сборке фигурки оригами

Что же касается Xbox 360, то ее DVD-привод позволяет без проблем считывать данные с оптического диска. Установка на винчестер предусмотрена скорее для продления срока службы носителя (в отличие от Blu-Ray DVD можно поцарапать салфеткой из микрофибры) и уменьшения времени загрузок, которое и так достаточно коротко.


Cheating


Если же общая производительность проекта близка к идеальной (на консолях это 30 кадров/с), но иногда все же падает в разумных пределах, разработчики используют хитрые способы для маскировки подтормаживаний. В первую очередь это акселерация и сглаживание осей обзора. Данный метод действительно помогает избавиться от ощущения нехватки кадров, но ценой «вязкости» камеры. Но при быстрых поворотах на угол более 45 градусов может возникать характерное подергивание. Для маскировки этого эффекта используется motion blur. Его грамотное применение положительно влияет на восприятие игры.

На заметку:
Обе версии The Darkness заметно подтормаживают в определенных местах. Но версия для Xbox 360 играется куда комфортнее благодаря ненавязчивому блюру.

В последнее время разработчики придумывают совершенно нестандартные способы удерживать производительность игр на приемлемом уровне. Одним из них является динамическая смена разрешения. Вместо того чтобы портить всю игру, блокируя ее на каком-нибудь 640р, можно в нужный момент просто сбросить HD до sub-HD и с тем же успехом вернуть обратно. Впервые такая фича была применена в Xbox-версии Rage, чтобы постоянно поддерживать 60 кадров/с. Также она замечена в Syndicate на японской консоли.

***

Можно долго и упорно рассуждать о различных графических технологиях. Самое главное – увидеть сквозь них действительно стоящие игры. Данный текст носит чисто информативный характер и призван объединить огромное количество иностранных технических статей во что-то более приземленное и понятное неискушенному читателю. Здесь вы найдете ответ на вопрос, каким образом давно устаревшая начинка консолей нынешнего поколения все еще тянет современные проекты. И, пускай, разработчики часто жульничают, главное — это результат, верно?

Комментариев нет:

Отправить комментарий