Графические технологии в играх: Need for Speed: Carbon


Введение в обзоры графических технологий в играх
Современная терминология 3D графики
Обзор игры на iXBT.com

Разработчик: EA Black Box
Издатель: Electronic Arts
Дата выхода: ноябрь 2006 г.
Графический API: Direct3D 9

Конфигурация тестовой системы:

  • Процессор: AMD Athlon 64 3200+ Socket 939
  • Системная плата: Foxconn WinFast NF4SK8AA-8KRS (Nvidia nForce4 SLI)
  • Оперативная память: 2048 Мб DDR SDRAM PC3200
  • Видеокарта: Nvidia Geforce 7800 GTX 256MB
  • Жесткий диск: Seagate Barracuda 7200.7 120 Gb SATA
  • Операционная система: Microsoft Windows XP Professional SP2

Техническая характеристика

Need for Speed: Carbon — это последняя игра известной серии, аркадная гоночная игра, разработанная студией EA Black Box и выпущенная компанией Electronic Arts в ноябре 2006 года на всех возможных игровых системах. Carbon использует ту же версию игрового движка, что и предшествующая ей Need for Speed: Most Wanted. В новой игре компания вернулась к ночным гонкам и дрифту (похоже, что у них фанаты этого дела работают, казалось бы — ну сколько уж можно после всех этих Underground?). Причем, гонки только ночные, как в двух играх Underground, хотя выбор автомобилей похож на тот, что мы видели в Most Wanted, но появились и новые машины: американские гиганты и некоторые суперкары. Еще одним нововведением в Carbon стало появление так называемых команд, и другие члены своей команды помогают выигрывать гонщику, от лица которого мы гоняемся.

Визуальную часть игры отличает применение сложных пиксельных шейдеров, примененных в алгоритмах рендеринга поверхностей, наложения карт нормалей, и алгоритмах постфильтрации. Со времен Most Wanted появилось не очень много изменений, используются те же методы постобработки изображения: motion blur (radial blur), distortion, overbright (bloom), и другие. Как и все гоночные игры, NFS: Carbon предлагает большие открытые пространства. Даже очень большие, нам опять доступен большой город, подзагрузка ресурсов в игре осуществляется на лету. Зато, в отличие от Most Wanted, никаких динамических теней в Carbon нет, ночь ведь на дворе.

На тестовой системе с видеокартой, поддерживающей Shader Model 3.0, используются вершинные и пиксельные шейдеры всех базовых версий: 1.1, 2.0 и 3.0. Они написаны на HLSL, кроме самых простых, и заранее скомпилированы. Шейдеры выше средней сложности, чаще всего применяются вершинные программы версии 1.1 и пиксельные версии 2.0. Шейдеры 3.0 используются в основном там, где нужна поддержка циклов и переходов, а вот шейдеры с большим количеством текстурных выборок — версии 2.0. Самые сложные вершинные шейдеры состоят из 140 команд, а самые тяжелые пиксельные программы содержат до 160-170 инструкций: до 16 текстурных и порядка 150 математических операций.

Интересно, что в пиксельных шейдерах версий 2.0 и 3.0 оптимизации в виде расчетов с пониженной точностью (partial precision), которые полезны для некоторых видеокарт Nvidia, начиная с Geforce FX 5200 и заканчивая Geforce 7950 GX2, хотя и используются в большинстве программ, но не во всех. Есть и исключения, где модификатор «_pp» в пиксельных шейдерах версии 2.0 не применяется.

Объем геометрии, обрабатываемый игрой в одном кадре при максимальных настройках, в Carbon ниже среднего уровня для современных 3D игр, количество полигонов в кадре изменяется от 15000 до 300000. Сложность геометрии на разных трассах отличается не сильно, есть примеры с 80000 средних треугольников на кадр, а есть — с 120000. Среднее же количество обрабатываемых треугольников в кадре по всей игре составляет лишь около 100000 полигонов. Это низкая цифра по современным меркам, она соответствует разве что играм годичной и более давности или мультиплатформенным играм, версии которых вышли и на консолях предыдущего поколения. От nextgen проекта хотелось бы заметно большего. А вот среднее количество вызовов отрисовки в игре впечатляет. Только вдумайтесь, среднее число вызовов составило 2400, а максимальное — под 6500!!! Эти цифры очень большие, никакими оптимизациями в игре и не пахнет. Зато понятно, почему игра так нетороплива на любых системах…

Need for Speed: Carbon не очень требовательна к объему локальной видеопамяти, в разрешении 1024x768, с включенным антиалиасингом максимально возможного уровня 4x и максимальными же настройками качества, она использует до 210 Мб видеопамяти, а среднее значение составляет 160 Мб. Это явно ниже современного уровня наиболее технологичных игр, и является приемлемой цифрой даже для большого числа low-end видеокарт, несущих на борту 256 Мб памяти. Этого объема игре вполне достаточно в любых условиях, игра притормаживает только при подгрузке данных с носителя, что не относится к проблеме нехватки видеопамяти.

При игре на двух десятках разных трасс игры в NFS: Carbon были собраны данные счетчиков производительности Nvidia. При максимальных настройках и разрешении 1024x768 с включенным мультисэмплингом, видеочип Geforce 7800 GTX простаивал по счетчику gpu_idle в среднем менее 1% времени! Значение почти не зависит от трассы и условий, максимальное отмеченное значение — 2%, а минимальное — 0%. То есть, производительность всегда ограничена видеочипом, количество вызовов функций отрисовки очень большое, а сложность пиксельных шейдеров выше средней. Среднее значение pixel_shader_busy составляет 43-44%, что соответствует показателям современных технологичных игр. Разброс по разным трассам невелик — от 38% до 45%. Среднее использование блоков вершинных шейдеров по счетчику vertex_shader_busy традиционно низкое — в среднем лишь 4%, разброс по уровням — 3-10%. Налицо явная недостаточная сложность вершинных шейдеров и особенно — низкая геометрическая сложность уровней и моделей. Это беда многих современных игр, сложность пиксельной обработки явно не соответствует геометрической сложности.

Средняя доля времени ожидания выборки данных из текстур блоками пиксельных шейдеров по счетчику shader_waits_for_texture составила 16–18%, что многовато даже учитывая используемые анизотропную и трилинейную фильтрации. Доля ожидания окончания операций записи во фреймбуфер (shader_waits_for_rop) — 18-20%, что чуть выше типичных значений для современных игр. Сказываются несколько типов постобработки и включенный мультисэмплинг, производительность в некоторых случаях может быть ограничена скоростью блоков записи данных во фреймбуфер (ROP).

Исследование влияния графических настроек игры на средние показатели счетчиков производительности Nvidia

Счетчик Default MSAA Off Anisotropic Off World Detail Low Shader Detail Low Reflections Off Motion Blur Off Visual Treatment Low
FPS 23.6 23.9 24.4 24.2 33.1 29.2 32.6 23.8
gpu_idle, % 0.7 1.0 0.5 0.5 9.0 0.7 2.3 0.6
vertex_shader_busy, % 3.7 3.8 3.8 3.5 4.9 3.4 4.4 3.6
pixel_shader_busy, % 40.3 39.5 43.0 35.2 28.5 44.8 41.1 38.2
triangle count, polys 96119 95363 97790 67126 95068 83331 65054 96003
batch count 2536 2471 2499 2374 2475 2141 1971 2567
shader_waits_for_texture, % 16.1 15.8 10.4 17.8 19.8 16.7 17.9 13.5
shader_waits_for_rop, % 23.2 18.8 26.2 23.4 36.9 9.4 7.9 24.6
video memory, Mb 176 145 170 159 166 170 164 160


Сразу нужно отметить, что погрешность измерений в случае Need for Speed: Carbon выше, чем обычно, так как игра не позволяет записывать и проигрывать демки или повторы, поэтому приходилось гоняться на одной и той же трассе несколько раз, используя FRAPS, что вносило дополнительную погрешность в наши тесты. По цифрам средней частоты кадров можно видеть, как сказывается изменение настроек игры на её производительности. Самое большое влияние на скорость рендеринга оказало отключение самого сложного эффекта постобработки — motion blur, а также снижение «детализации шейдеров» (Shader Detail). Заметно повлияло и отключение динамических отражений. Остальные параметры, в том числе отключенные анизотропная фильтрация и антиалиасинг, на скорости рендеринга сказываются крайне незначительно. Похоже, что основным ограничением скорости является производительность блоков пиксельных шейдеров.

Значения счетчика gpu_idle значительно выше только в двух режимах, с отключенным motion blur и пониженной детализацией шейдеров. В этих режимах у GPU появляется немного времени простоя, во всех остальных случаях чип почти всегда полностью загружен работой. Это опять наводит на мысли об упоре в производительность исполнения пиксельных шейдеров. На значение vertex_shader_busy все рассматриваемые настройки оказывают минимальное влияние, особенно если учитывать большую погрешность тестирования. Хоть какая-то разница есть все в тех же режимах отключенного MB и сниженной сложности пиксельных шейдеров. Это же видно и по значению pixel_shader_busy, которое сильнее всего снижается в режиме «Shader Detail Low». А вот отключение постфильтрации почти не влияет на значения счетчика. Загрузка блоков пиксельных шейдеров повышается еще и в тех режимах, где снижается использование других блоков.

Цифра счетчика shader_waits_for_texture заметно изменяется в нескольких режимах, в том числе с отключенной анизотропной фильтрацией, что объясняется необходимостью дополнительных текстурных выборок. Есть подобная разница и в случае режима с уменьшением количества эффектов постобработки. Значение shader_waits_for_rop — времени ожидания записи данных во фреймбуфер, сильно растет в режиме сниженной детализации шейдеров, что можно объяснить изменением распределения нагрузки на разные блоки видеочипа. Цифры счетчика, наоборот, немного снижаются в случаях с отключением антиалиасинга, динамических отражений и motion blur, ведь все они требуют более активной работы блоков ROP. Антиалиасинг увеличивает число выборок, а постобработка и отражения используют рендеринг в дополнительные буферы.

Объединенные в одно значение счетчики используемой локальной и системной видеопамяти от режима максимальных настроек отличаются в следующих случаях: с отключенным мультисэмплингом, сниженной детализацией игрового мира, а также с отключенной постобработкой.
Количество рассчитанных полигонов в кадре, если учитывать погрешность измерения, сильно отличается в случаях сниженной детализации сцены и отключенного motion blur. Ну и немного меньше треугольников рассчитывается в режиме без динамических карт отражений. Количество вызовов отрисовки, затраченное на рендеринг сцены, всегда очень велико. Число batch count снижается в режимах отключенных отражений и motion blur. Немного ниже оно и в World Detail Low, в этом случае используются объекты сцены с пониженной геометрической детализацией, но количество вызовов draw call почти не изменяется.

Краткая история появления

История серии Need for Speed насчитывает уже более десяти лет, в линейке игр, учитывая специальные издания и все платформы, уже не один десяток названий. Всё началось с создания игры Need for Speed силами небольшой канадской игровой студии Distinctive Software, разработавшей до этого такие игры, как Stunts и Test Drive 2. В 1991 году Electronic Arts купила студию, получившую в дальнейшем название Electronic Arts Canada, и в 1992 году они занялись разработкой первой игры очень популярной серии Need for Speed.

В течение многих лет выходили продолжения игры, сначала под номерами, а затем просто под обобщающим названием Need for Speed. Их разработкой в разные времена занимались компании: Electronic Arts Canada, Electronic Arts Seattle и канадская же игровая компания Black Box Software, в 2002 году продолжившая серию игрой Need for Speed: Hot Pursuit 2. Эта студия также была куплена и вошла в состав EA под названием Electronic Arts Black Box. Hot Pursuit 2 была традиционной для серии игрой, с дорогими суперкарами и дневными загородными трассами, но затем появились ночные «стритрейсерские» Need for Speed: Underground и Need for Speed: Underground 2, в 2003 и 2004 годах, соответственно.

Осенью 2005 году серия продолжилась еще одной более привычной для марки игрой Need for Speed: Most Wanted. Эта игра стала одной из первых, специально предназначенных для первой консоли текущего поколения — Microsoft Xbox 360. Также вышли версии для ПК, Sony PlayStation 2, Nintendo GameCube и Microsoft Xbox. В той части Need For Speed вернулся к истокам, Most Wanted был ближе всего к играм серии под названием Hot Pursuit, предлагая дорогие спортивные автомобили без доминирования японских производителей, и дневные гонки с участием полиции. Игра взяла кое-что и от серии Underground, например, режим свободной езды по городским территориям. К счастью, в тот раз ночные заезды убрали, но через год они вернулись к нам обратно…

Где-то в середине июня 2006 года в июльском номере журнала Game Informer были опубликованы первые подробности о новой серии автомобильной аркады Need for Speed: Carbon. Как и в случае с Most Wanted, сроки выхода были объявлены сразу — релиз был запланирован на ноябрь прошлого года. В статье особо отметили, что игра не является продолжением предыдущих серий, что это самостоятельный проект.

В новой части разработчики из EA пообещали нам несколько нововведений. Так, в Carbon впервые должны были появиться команды, каждый из членов которой обладает определенными умениями. В Carbon игроку доступны на выбор более полусотни машин трех классов: американские muscle cars, экзотические и так называемый тюнинг-класс. Было заявлено о еще большей свободе при настройке автомобилей и возможности его сборки из разных деталей.

Было решено, что все гонки в Carbon будут проводиться в ночное время суток, а из основных достопримечательностей можно отметить извилистые дороги в каньонах, скопированные с реальных калифорнийских. На этих трассах игрок должен встретиться с боссами команд в гонке преследования. Новым решением стало и завоевание районов города в гонках на автомобилях. Обещалось, что все это будет приправлено сюжетом со скриптовыми роликами и участием неких известных актеров.

Вместе с новой информацией появились первые скриншоты и официальный ролик игры. Как обычно, EA особо не старалась сразу же показывать реальную игровую графику, и кормила сначала подретушированными картинками (слева игровой скриншот, а справа — явно слегка отредактированный):

  

Первые скриншоты игры показали геометрически довольно сложные модели автомобилей, привычные по Most Wanted эффекты постобработки motion blur и bloom (overbright) и… отсутствие реалистичных теней, которые оказались теперь ненужными. Также по изображениям явно было видно применение карт нормалей для некоторых поверхностей и реалистичные отражения на автомобилях, которые были и в предыдущей игре. В целом, общий технологический уровень остался прежним, сравнимым с NFS: Most Wanted, чего и следовало ожидать.

23 июня Electronic Arts официально представила игру, уточнив, что проект разрабатывается канадской EA Black Box. Появилась информация о том, что игра должна выйти на всех существующих платформах, включая карманные консоли и даже мобильные телефоны. В этот же день был запущен и сайт игры, куда выложили подборку скриншотов и уже известный ролик.

  

И опять… EA не была бы EA, если бы не выкладывала специально подготовленные скриншоты. Обратите внимание, как отличаются эти два скриншота. Один из них — настоящий игровой, а второй… назовем его «рекламным». Нет, никакого криминала тут нет, доработки очень небольшие, но важные: получше дорожная поверхность, чуть лучше постобработка (ручная всегда более эффектна), реалистичный motion blur… Разница невелика, но она есть. Но что видно на обеих картинках — так это модели очень хорошего качества, но небогатые деталями уровни.

В июле компании Electronic Arts и «Софт Клаб» объявили о завершении работ по локализации FIFA 07, уточнив, что работают и над другими проектами, которые должны были выйти на русском языке одновременно со всем миром. Одной из таких игр и оказалась локализованная версия автомобильной аркады Need for Speed: Carbon, которая действительно вышла в одно время с мировой премьерой.

В остальном, ничего особо нового тогда не сообщили, кроме очередного упоминания сроков релиза и всех платформ, на которых игра выйдет. А вот новые скриншоты игры периодически появлялись все лето, вот лишь некоторые из них:

  

  

В октябре Electronic Arts выпустила демонстрационную версию игры для Xbox 360, а 27 октября игровые сайты выложили в свободное скачивание и демо-версию игры Carbon для ПК, в которой игрокам дали возможность погоняться на трех трассах, используя машины разных классов. По демо-версии стало уже точно понятно, что графически игра не ушла далеко от Most Wanted. Разве что стало темно и местами сильно похоже на серию Underground.

  

Ну и, в конце-концов, полная версия игры Need for Speed: Carbon была выпущена в начале ноября прошедшего года, в версиях для ПК, Xbox 360, Xbox, PlayStation 2, GameCube и карманных консолей. Версии для остальных консолей следующего поколения, Nintendo Wii и Sony PlayStation 3, были перенесены на даты запуска соответствующих игровых платформ.

Особенности графики в игре

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

Графический движок игры применялся и в Most Wanted, он вообще используется всеми играми серии, начиная с Need for Speed: Hot Pursuit 2. Естественно, он подвергается постоянным модификациям и поддерживается на приличном технологическом уровне, пусть и не самом передовом. Этот кроссплатформенный движок — внутренняя разработка компании Electronic Arts, используемая во множестве мультиплатформенных игр компании, таких, как серии FIFA и NHL. Высокоуровневый движок получил название EA Graphics Library (EAGL), игрой Need for Speed: Carbon используется его четвертая версия — EAGL4.

Этот графический движок для рендеринга в реальном времени основан на портируемом API и runtime коде, написанном для следующих платформ: Sony PlayStation Portable, Sony PlayStation 2, Sony PlayStation 3, Nintendo GameCube, Nintendo Wii, Microsoft Xbox, Microsoft Xbox 360 и персональных компьютеров с видеокартами, поддерживающими DirectX 9. Runtime код для каждой отдельной платформы разработан с учетом использования их аппаратных особенностей и возможностей применяемых графических API.

Изначально EAGL разрабатывался для PlayStation 2, но затем был портирован на другие системы. Для каждой платформы написали свой runtime код и набор шейдерных программ, написанных на специализированном языке. Получившийся гибкий движок, по мнению специалистов компании, является почти таким же быстрым, что и движки, написанные для отдельных игр и платформ. Это привело к широкому применению EAGL в играх производства компании EA самых разных жанров.

Переходим к описанию графической части игры. Интересно, что под NVPerfHUD игра работает (видимо, разработчики просто забыли убрать соответствующий код), но полноценного анализа не получается, игра просто вылетает. Поэтому ничего не оставалось, кроме как проводить анализ в PIX for Windows. Самое первое, что обращает на себя внимание — очень большое количество вызовов функций отрисовки. Как мы уже отмечали, среднее количество по всей игре достигло примерно 2400 штук, и это далеко не предел. Максимальное отмеченное значение было равно ~6500 вызовов, что является, по сути, просто неподъемным значением для большинства систем, будь они хоть четырехядерными, значение FPS при этом все равно падает слишком сильно. Объяснить такую ситуацию можно только отсутствием специальных оптимизаций, предназначенных для снижения количества вызовов draw calls, и сцены в игре рисуются по мелким кусочкам, небольшими объектами, каждый кустик и мелкий фрагмент отдельно друг от друга.

Как и во всех гоночных играх, все игровые пространства в ней открытые, в игре смоделирован целый город, есть как городские кварталы, так и загородные участки трасс и индустриальные районы. Для объектов используется изменение уровня детализации в зависимости от расстояния до камеры, но не слишком активное, LOD тут не такой агрессивный и почти незаметный. Несколько примеров outdoor сцен из игры представлены на скриншотах:

Outdoor   Outdoor

Outdoor   Outdoor

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

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

Карты нормалей применяются в основном на поверхностях окружения: асфальте, скалах, земле, зданиях. На моделях автомобилей и людей их нет, за исключением мелких деталей на машинах, таких как надписи и т.п. Формат карт нормалей — сжатый DXT1, разрешение вплоть до 1024x1024 и 512x2048 пикселей.

Normal mapping   Normal mapping

Normal mapping   Normal mapping

Как уже отмечалось, и как вы видите по скриншотам сами, многие текстуры окружения в Need for Speed: Carbon не отличаются высокой детализацией, в некоторых случаях им явно не хватает разрешения. В игре используются базовые текстуры в основном сжатых форматов DXT5 и DXT3 (с альфа-каналом), есть и несколько 32-битных текстур, но их совсем немного. Текстуры сами по себе высокого разрешения, как и карты нормалей, но при близких планах камеры им не хватает деталей.

Textures   Textures

Textures   Textures

При обычных видах со средней дистанции текстуры выглядят прилично, а уж если размазаны постобработкой, то и вообще очень хорошо всё :). Но при близких планах пикселизация слишком бросается в глаза, чему сильно помогает и некачественное текстурное сжатие, артефакты которого видны на первом скриншоте сверху. А вот на втором и третьем скриншоте видны отличные текстуры на модели автомобиля (кроме так называемых винилов), особенно отличаются текстуры передних и задних фонарей, номера и табличек с названиями.

Геометрическая детализация моделей и уровней в Carbon опять неоднозначна. Все модели автомобилей сделаны очень хорошо, недостаток детализации виден только при близких планах (см. ниже второй скриншот). Но это незаметно в самой игре, только в скриптовых роликах. Зато про всю остальную геометрию такого не скажешь, всему городу, по дорогам которого мы гоняемся, явно не помешала бы большая геометрическая сложность. Единственное смягчающее обстоятельство — динамика игры, в гонках обычно некогда рассматривать окрестности.

Models   Models

Models   Models

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

Вторая пара скриншотов показывает отдельно модель автомобиля со средней дистанции и модель персонажа, одну из немногих в игре. Про автомобили уже все написано, они в игре отличные, а что касается людей, то для гоночной игры их также можно признать очень неплохими. Это касается как ближних планов, так и средних. Хотя карты нормалей на них тоже не применяются, всё, что мы видим — это геометрическая детализация.

Так как в Carbon разработчики решили опять вернуться к ночным гонкам, они заодно смогли отказаться и от динамических карт теней. Если в Most Wanted тени от одного источника были «настоящими», для построения теней там использовались динамические карты теней, то теперь такого нет — под каждой машиной рисуется простое черное пятно. Как в старые добрые времена 90-х годов. Это относится к теням от людей и от автомобилей, что смотрится иногда просто ужасно:

Shadows   Shadows

Вот посмотрите на первый скриншот — ну откуда ночью взялись такие черные и с четкими краями тени? Ладно бы яркое солнце днем светило… Но эта дисгармония явно видна только в случае отрыва машин от поверхности, в обычных ситуациях такие «тени» смотрятся сносно (см. второй скриншот).

Реализация отражений на машинах не отличается от той, что мы видели в Most Wanted — используется динамическая карта отражений (шесть граней куба, каждая разрешением 256x256 пикселей), обновляемая, в зависимости от настроек, хоть каждый кадр. В нее рисуется только статическая геометрия, автомобили в кубическую текстуру не рисуются. Карта среды всего одна, общая для всех моделей машин. Так что иногда видно, что отражения в других автомобилях являются копиями отражений на вашей, впрочем, в обычной динамике игры этого не рассмотреть. На мой взгляд, можно было бы сделать не только полное отключение карт отражений в настройках игры, но и статическую карту отражений. Все равно игра очень темная и довольно динамичная, рассматривать реалистичные отражения там некогда.

Reflections   Reflections

Отдельно в особенностях графики современной игры нужно отметить различные специальные эффекты: имитация дождя, выхлопа, дыма из-под колес, дыма от факелов, тумана, искр и т.п. Таких эффектов в игре предостаточно, хотя они и не всегда заметны на первый взгляд. Вот примеры эффектов в NFS: Carbon, создаваемых при помощи систем частиц, которые можно отключить в меню игры:

FX   FX

FX   FX

В предыдущих играх серии Need for Speed постепенно появлялись всё новые и новые эффекты постобработки, они являются особенностью серии. В каждой из игр добавлялось по одному-двум новым эффектам, а также проводились улучшения старых. Так, в Most Wanted уже было большинство эффектов, которые мы увидели и в Carbon: bloom (называемый в NFS — «overbright») — фильтр, увеличивающий яркость светлых участков изображения, motion blur — размытие картинки в движении, distortion — искажения/преломления от капель дождя на ветровом стекле, noise — эффект зернистости изображения, цветовая коррекция (visual treatment) и некоторые другие. А в Carbon к этому списку добавился новый для серии эффект depth of field — эффект глубины резкости. Он реализован достаточно грамотно, размывается как задний, так и передний фон, в зависимости от потребностей режиссера. Почему режиссера? Потому что DOF в игре есть только в скриптовых роликах, и это правильно. Нельзя его применять в игре постоянно, кроме как в особых случаях (см. обзор Call of Juarez).

Postprocessing (bloom) Postprocessing (bloom) Postprocessing (bloom) Postprocessing (bloom)
Postprocessing (blur) Postprocessing (blur) Postprocessing (blur) Postprocessing (blur)
Postprocessing (motion blur) Postprocessing (motion blur) Postprocessing (motion blur) Postprocessing (motion blur)
Postprocessing (DOF) Postprocessing (DOF) Postprocessing (DOF) Postprocessing (DOF)
Postprocessing (misc) Postprocessing (misc) Postprocessing (misc) Postprocessing (misc)

Эффект motion blur в игре — это всё тот же radial blur, знакомый нам по Most Wanted. В размазанной им картинке моделей автомобилей нет, туда они не рендерятся, видимо, по той причине, чтобы машины соперников было четко видно всегда. Да и едут они обычно в ту же сторону, что и игрок, и почти с той же скоростью. Но не всегда так получается, иногда четкие модели машин на фоне размазанного фона выглядят просто нелепо, что особенно касается едущих навстречу машин трафика.

К сожалению, графическим движком игры так и не поддерживается HDR рендеринг с использованием буферов в форматах повышенной точности, почти все внеэкранные буферы — в 32-битном формате. Единственный 64-битный буфер формата A16B16G16R16F используется, похоже, для реализации эффекта depth of field, туда записываются данные о глубине пикселей сцены. Плохо, что рендеринга в широком динамическом диапазоне нет, расчеты постфильтров в таком случае всегда выигрывают в качестве, а выбор режима можно было бы дать в руки самим пользователям. В общем же, все постэффекты применены к месту, motion blur работает на высоких скоростях, depth of field — в кинематографических игровых роликах, и т.д.

Рассмотрим построение кадра в игре Need for Speed: Carbon на примере. Сначала в буфер отрисовывается только геометрия уровня, без моделей автомобилей и прочего.

Далее, уменьшенный промежуточный результат рендеринга копируется в другой буфер, который, в зависимости от скорости движения, подвергается двукратному проходу фильтра radial blur, для создания эффекта смазывания в движении.

На следующем этапе эти два буфера смешиваются по определенному, но весьма простому алгоритму — центральная часть картинки содержит неразмытое изображение, а по краям оно смешивается с размытым. Получается относительно недорого, но реалистично.

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

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

Предпоследним этапом идет рендеринг всяких мелочей, вроде эффекта flare от фонарей, эффектов систем частиц (дым, пыль и т.п.), имитации рассечения воздуха машиной игрока и некоторых других.

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

Графика в игре находится на хорошем технологическом уровне, но есть к ней и небольшие претензии. В Carbon используются некоторые современные графические технологии, такие как попиксельное освещение, наложение карт нормалей, активная постобработка, имитация реалистичных отражений и т.п. А вот самые большие недостатки: недостаточная геометрическая и текстурная детализация большинства поверхностей игрового мира, в том числе тех, что видимы чаще и ближе всего — дорог. Очень было бы хорошо, если в следующих играх мы наконец-то получили не только красивые модели автомобилей, но и хорошо переработанный город, а не такой, как сейчас…

Также расстраивает отсутствие действительно новых технологических решений, таких, как возможность HDR рендеринга, ведь это одна из тех технологий, которые все разработчики сейчас стараются использовать. Но в целом, игра выглядит неплохо, но оптимизаций под особенности ПК ей явно не хватает. Среднее количество вызовов функций отрисовки слишком велико, а частота кадров очень низка, и это — при ничем не примечательной итоговой картинке. Можно сказать, что графический движок игры по своим возможностям не так впечатляет, как это было в позапрошлом году, во время выхода NFS: Most Wanted.

Настройки качества графики

Новая часть Need for Speed еще более требовательна к производительности игровой системы, по сравнению с Most Wanted. Даже на топовых системах производительность может проседать, а иногда наблюдаются неприятные рывки. В разрешении 1024x768 с максимальными настройками и включенными анизотропной фильтрацией и антиалиасингом, 60 средних FPS обеспечивают только топовые видеокарты, начиная с RADEON X1900 XTX и Geforce 8800 GTS (в играх серии традиционно лучше показывают себя видеокарты под торговой маркой ATI). Если снизить планку производительности до 30 кадров в секунду, то в таких условиях с игрой справляются видеоплаты, начиная с ATI RADEON X1800 XT и Nvidia Geforce 7950 GT. Все остальные видеокарты, находящиеся ниже в линейке, не обеспечивают комфортной частоты кадров при максимальных настройках, и их приходится подбирать под каждый конкретный случай. И этот материал может помочь в достижении приемлемого соотношения производительности и качества.

Сначала нужно проверить получаемую частоту кадров при текущих настройках, которые выставила игра или вы сами. Это можно сделать, например, при помощи сервера статистики RivaTuner или утилит, подобных FRAPS. Для комфортной игры нужно изменять игровые настройки так, чтобы достичь средней частоты кадров хотя бы выше 30-35 FPS (это минимум!). Если она ниже, то надо снизить значения некоторых настроек, и наоборот, если средний FPS больше 50-60, можно попробовать улучшить качество картинки, изменив настройки в большую сторону. Повторяя эксперименты, нужно постараться получить приемлемый для вас вариант. Основные параметры, на которые следует обратить внимание: разрешение рендеринга, уровень антиалиасинга, общая настройка «Level of Detail», а также отдельные «Shader Detail», «Car Reflection Update Rate» и «Motion Blur».

К сожалению, в игре опять отсутствует возможность как встроенного тестирования производительности, так и записи и воспроизведения повторов гонок. Поэтому тестирование производительности доступно только примерное, с использованием утилит, измеряющих среднюю частоту кадров. Тесты проводятся так: запускается утилита (например, FRAPS) и игра, измерение среднего FPS делается во время прохождения одной и той же гонки, выбираемой в меню Quick Race, с одинаковой конфигурацией всех параметров. Но стартовое расположение машин, погодные условия гонки и сама по себе гонка всегда разные, поэтому погрешность будет очень высокой (до 5-7%), поэтому подобные измерения для серьезных тестов не годятся.

Для того, чтобы изменить настройки качества рендеринга, нужно выбрать раздел «Options» в главном меню игры, а затем выбрать «Video». Появится основное меню настроек, в котором доступны лишь три параметра: изменение игрового разрешения «Resolution», общая настройка «Level of Detail» и настройка яркости «Brightness». Выбор доступных разрешений на тестовой системе не очень широк, мягко говоря: 640x480, 800x600, 1024x768, 1280x960, 1280x1024, 1600x1200. Специально учтены разве что пользователи большинства LCD мониторов с соотношением сторон 5:4, а широкоэкранные 16:9, вероятно, появляются только на соответствующих мониторах с таким соотношением сторон.

Весьма важна общая настройка «Level of Detail», которая изменяет большинство отдельных графических параметров, рассмотренные в статье ниже, кроме разрешения рендеринга. Возможные значения настройки: Low/Medium/High/Maximum/Custom. Она пригодится, прежде всего, неважно разбирающимся в 3D технологиях пользователям, или тем, кто не хочет тратить время на подробную настройку, остальным крайне рекомендуется ручное изменение остальной конфигурации под свою систему. Рассмотрим таблицу зависимости отдельных настроек игры, в зависимости от значения параметра «Level of Detail»:



Level of Detail Low Medium High Maximum
Texture Filtering Bilinear Bilinear Trilinear Anisotropic
Shader Detail Low Medium Medium High
World Detail Low Medium High Maximum
Road Reflection Detail Off Low Low High
Car Detail Low High High High
Car Reflection Update Rate Low Medium High High
Rain Off On On On
Visual Treatment High High High High
Motion Blur Off Off On On
Particle System On On On On

Естественно, что при таких больших отличиях, настройка сильно влияет на производительность и качество рендеринга. Если принять за 100% частоту кадров на тестовой системе в разрешении 1024x768 и режиме «Maximum», то в «High» получается 130%, в «Medium» — 233%, а в «Low» — 285% кадров в секунду. Разница в скорости доходит почти до трех раз, поэтому важно найти наиболее влияющие на скорость параметры настройки. В качестве картинки отличия также весьма велики:

Level of Detail Low   Level of Detail Medium

Level of Detail High   Level of Detail Maximum

Как видите, все предустановки «Level of Detail» соответствуют своим названиям и сделаны грамотно, но без изменения отдельных настроек добиться оптимального результата не получится. А подробные графические настройки находятся в отдельном меню «Video Advanced», вызываемом нажатием клавиши «2» или левой кнопкой мыши на надписи «Advanced». Рассмотрим подробно каждую из списка имеющихся настроек.

Настройки меню Video Advanced

  • Resolution (список разрешений для тестовой системы приведен выше) — этот параметр задает разрешение рендеринга и полностью соответствует выбору разрешения в основном меню. Выбранное разрешение сильно влияет на производительность тестовой системы, разница между разрешениями 640x480 и 1024x768 на максимальных настройках составила 1.6 раза, а между 1024x768 и 1600x1200 — 2 раза. Это достаточно много, и значительно больше, чем в Need for Speed: Most Wanted. При минимальных настройках качества разница снижается. Похоже, что NFS: Carbon ограничена именно производительностью блоков выполнения пиксельных шейдеров в первую очередь, то есть видеокартой, а не скоростью CPU.

  • Anti-Aliasing (Off/2X/4X) — обычная для современных игр возможность выставления уровня мультисэмплинга. Значение «Off» соответствует отключенному антиалиасингу, а «2X» и «4X» — включенному, с соответствующим количеством сэмплов. Производительность при разных значениях настройки сильно отличается на разных системах, но на тестовой видеокарте Geforce 7800 GTX при максимальных настройках разницы в производительности между всеми возможными значениями в разрешении 1024х768 практически не было, отличия между крайними значениями были менее 5%, что даже меньше погрешности наших примерных измерений среднего FPS. Поэтому, на достаточно мощных системах советую протестировать, не является ли включение антиалиасинга почти «бесплатным» в используемом разрешении, ну а на слабых компьютерах лучше будет отключить мультисэмплинг вообще.

  • Texture Filtering (Bilinear/Trilinear/Anisotropic) — настройка, определяющая метод текстурной фильтрации, используемый в игре. На выбор пользователю даются билинейная, трилинейная и анизотропная фильтрации. Влияние разных методов фильтрации на производительность при достаточно быстрых современных видеокартах невелико, но включение анизотропной фильтрации может вызвать проблемы с частотой кадров в секунду на старых и медленных видеокартах. На нашей же тестовой системе разница между «Bilinear» и «Anisotropic» составила те же 4-5%, что и в случае антиалиасинга. Разницу можно оценить по следующим скриншотам:
Texture Filtering Bilinear   Texture Filtering Anisotropic

Владельцам слабых систем рекомендуется включить «Trilinear», так как игра достаточно темная, и текстуры на высоких скоростях рассмотреть не успеешь. И уж тем более, если используются такие постэффекты, как «depth of field» и «motion blur», тогда в анизотропке уж точно никакого смысла нет. Интересно, что пользователю не дается выбор уровня анизотропии, есть единственное значение, непонятно какому уровню соответствующее (скорее всего — максимальному). Поэтому, если хочется выставить определенный уровень анизотропной фильтрации, можно воспользоваться форсированием из настроек видеодрайвера.

  • Shader Detail (Low/Medium/High) — одна из важнейших графических настроек игры, которая изменяет сложность используемой пиксельной обработки всех поверхностей в игре, включая расчет попиксельного освещения от разного количества источников света, расчет бликовой составляющей на разных поверхностях, и т.д. Посмотрите на скриншоты, хорошо видно, что на первом сложность пиксельных шейдеров сильно снижена:
Shader Detail Low   Shader Detail Medium

Shader Detail High

Между «Medium» и «High» разницы почти нет, она явно видна лишь на некоторых поверхностях (задние фонари, например). Влияние значений настройки на скорость рендеринга велико, разница между значениями «Low» и «High» составила 38%, а это очень много для единственного параметра настройки. Владельцам слабых видеокарт можно порекомендовать «Low», но картинка получается при этом значении слишком темной, что придется компенсировать повышенной яркостью.

  • V-Sync (Off/On) — параметр регулировки вертикальной синхронизации. При его включении максимальная частота кадров ограничивается частотой обновления экрана. Так, при частоте обновления 60 Гц (распространенная величина для LCD мониторов) и включенной настройке V-Sync максимально возможное количество кадров в секунду будет равно 60. В некоторых случаях включение синхронизации помогает избавиться от артефактов разрывающейся на части картинки (так называемый «tearing»), и для максимального качества она полезна, но если такие проблемы вас не беспокоят, то рекомендуется ее отключать, так как она может ограничивать производительность.

  • World Detail (Low/Medium/High/Maximum) — настройка для задания уровня детализации игрового мира (дорог, зданий, деревьев и т.п.). На больших уровнях детализации игрового мира появляется больше мелких объектов, и для всех объектов используется максимально возможная геометрическая детализация. Влияние настройки на производительность бывает велико разве что в некоторых отдельных сценах с большим количеством объектов, но чаще всего разница между значениями получается небольшой. Как и визуальная, впрочем:
World Detail Low   World Detail Maximum

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

  • Road Reflection Detail (Off/Low/High) — настройка изменяет качество отражения света на дорожном покрытии, больше всего заметное при дожде. Похоже, что это значение меняет количество specular бликов на асфальте от источников света. Разница в качестве картинки при разных настройках «Road Reflection Detail» небольшая, а разницы в производительности на тестовой системе и вовсе не было обнаружено. Отличия при крайних положениях настройки можно оценить по скриншотам, разница действительно очень небольшая. Вот попробуйте найти три отличия:
Road Reflection Off   Road Reflection High
  • Car Detail (Low/High) — настройка, служащая для изменения геометрической детализации (количества полигонов, иными словами) моделей автомобилей в игре. Судя по настройке, есть два уровня детализации, при установке в нижнее значение «Low» должны использоваться менее качественные модели, а при значении «High» модели автомобилей должны быть максимально детализированными. Но, как и в случае с NFS: Most Wanted, я не нашел никакой разницы в моделях автомобилей при разных значениях. Соответственно, и влияния настройки «Car Detail» на скорость рендеринга обнаружено не было.

  • Car Reflection Update Rate (Off/Low/Medium/High) — настройка для изменения качества отражений на моделях автомобилей. В отличие от Most Wanted, есть только возможность изменения частоты обновления динамических карт окружения и полное отключение отражений. Верхние значения включают отражения максимального качества, когда все окружающие объекты, кроме автомобилей соперников, отражаются на поверхности кузова. Значение рассматриваемой настройки выше «Off» показывают, насколько часто будет обновляться содержимое динамических карт отражения.
Car Reflection Update Rate Off   Car Reflection Update Rate High

Настройка оказывает очень большое влияние на производительность, являясь одной из самых требовательных на нашей тестовой системе. При максимальных настройках в разрешении 1024x768 разница между «Off» и «High» составила 25%. Эта настройка является одной из тех, на которые стоит в первую очередь обратить своё внимание в случае нехватки производительности. Привносимая динамическими отражениями разница в качестве не настолько велика, чтобы не обращать внимания на четверть возможного прироста скорости.

  • Rain (Off/On) — настройка включает известный по предыдущей игре серии эффект капель дождя на лобовом стекле (или на объективе внешней камеры, что будет точнее). Значение настройки влияет только на эффект постобработки, имитирующий преломления от капель дождя. Данный вид постобработки не влияет на итоговую производительность большинства игровых систем, поэтому его можно отключить разве что на самых медленных компьютерах, если наблюдается снижение производительности именно во время дождя.
Rain Off   Rain On
  • Visual Treatment (Low/High) — настройка, включающая фильтр постобработки, который изменяет цветовую гамму и придает картинке более реалистичный вид, по мнению разработчиков. При значении «Low» все цвета в игре обычные, а при «High» включается эффект цветокоррекции, изменяющий цвета. Части игроков эффект нравится, части — нет, поэтому разработчики и дали возможность его отключения. Влияние эффекта на общую производительность на слабых видеокартах может быть заметным, но на нашей тестовой системе никакой разницы не было обнаружено, так что ее включение или выключение — дело вкуса.
Visual Treatment Low   Visual Treatment High
  • Motion Blur (Off/On) — этот параметр управляет еще одним эффектом постобработки, он включает и выключает motion blur, который не только сильно влияет на производительность, но и может не понравиться части игроков. Очень хорошо, что в Carbon его сделали отключаемым отдельно, сделав урок из ситуации с Most Wanted, которую мы описывали год назад. Разница в картинке особенно заметна на больших скоростях:
Motion Blur Off   Motion Blur On

Влияние от включенного эффекта на тестовой системе получилось большим — при активной и быстрой езде теряется более 30% производительности! Поэтому, учитывая не самую лучшую реализацию эффекта, рекомендуется отключение параметра «Motion Blur», так как это уменьшает количество рывков, и становится лучше видно ситуацию на трассе.

  • Particle System (Off/On) — настройка, определяющая, будут ли использоваться игрой эффекты на основе систем частиц, такие как дым из-под колес, водопады, пыль и некоторые другие. К этим эффектам относятся и капли дождя, кстати. Разница в картинке хоть и небольшая, но во многих случаях эти эффекты придают большую реалистичность происходящему.
Particle System Off   Particle System On

Разница в производительности при отключенных и включенных частицах зависит от погодных условий в гонке и от мощности используемой игровой системы. В обычных условиях в разрешении 1024x768 на тестовом ПК существенной разницы обнаружено не было — максимум 5%.

На тестовой системе режим в разрешении 1024x768 с максимальными настройками, в том числе антиалиасингом уровня 4x и анизотропной фильтрацией 16x, играбельным назвать нельзя. Среднее количество кадров в секунду по всей игре при этом было около 25 FPS, а минимальное опускалось до 15 FPS. Игра процессорозависима, хотя это влияет разве что на общий комфорт, при более мощном процессоре рывков становится меньше, но среднее значение FPS вырастает незначительно. Получается, что основное влияние оказывает все-таки видеокарта, и добиться приемлемой частоты кадров на максимальных настройках не получится даже на недавних топовых платах, таких как Nvidia Geforce 7800 и 7900 GTX. На системах среднего уровня абсолютно точно придется снижать некоторые из настроек, а возможно и понизить разрешение и уровень антиалиасинга. Еще раз подчеркну, что видеокарты ATI в этой игре показывают лучшую производительность по сравнению с соответствующими им видеокартам Nvidia, поэтому их надо рассматривать отдельно.

Дополнительные возможности по настройке

Игра хранит все графические настройки в реестре Windows. Ключи, используемые в Need for Speed: Carbon, располагаются в системном реестре по адресу:
HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Need for Speed Carbon

Все параметры настройки повторяют меню игры и не дают никаких дополнительных возможностей. Из названий ключей понятно их предназначение: g_WorldLodLevel, g_CarLodLevel, g_PerformanceLevel, g_VisualTreatment, g_ShaderDetailLevel и др.

Все эти пункты полностью соответствуют игровым и изменением их значений не добиться ничего нового. Есть и другие ключи, известные по предыдущей игре серии, вроде g_ShadowDetail, но их изменение не дает никакого эффекта. В правке реестра нет смысла, так как произошло еще одно изменение со времен Most Wanted — теперь раздельные настройки Motion Blur и Visual Treatment есть и в самой игре.





Дополнительно

iXBT Brand 2018

"iXBT Brand 2018" - Выбор читателей в номинации "Процессоры (CPU)":
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.