Графические технологии в играх: Hitman: Blood Money



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

Разработчик: IO Interactive
Издатель: Eidos Interactive
Дата выхода: май 2006 г.
Графический API: Direct3D 9

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

Hitman: Blood Money — это четвертая часть сериала Hitman, которая основана на последней версии собственного игрового движка Glacier Engine, с улучшениями искусственного интеллекта и обновленными графическими возможностями. Уровни в игре представлены как закрытыми, так и открытыми пространствами среднего размера. Для рендеринга динамических теней от моделей людей используются карты теней, все статические тени заранее просчитаны. В отличие от предыдущих частей игры, в этой появилось наложение карт нормалей на большинстве поверхностей, поддержка parallax mapping, новый алгоритм фильтрации карт теней, а также несколько новых эффектов постобработки.

На тестовой системе с видеокартой GeForce 7800 GTX, поддерживающей Shader Model 3.0, игрой используются вершинные и пиксельные шейдеры всех базовых версий: 1.1, 2.0 и 3.0. Почти все они написаны на HLSL, и лишь часть самых простых ps.1.1 — на ассемблере. Шейдеры средней сложности, в основном применяются вершинные программы версии 1.1 и пиксельные версии 2.0, а 3.0 используются в основном там, где не хватает ограниченного количества текстурных выборок. Самые сложные вершинные шейдеры состоят из 130-140 команд, а самые тяжелые пиксельные программы содержат до 120 инструкций: более 20 текстурных и около 100 математических операций. Шейдеры в игре используются для расчета освещения, наложения карт нормалей, параллакс-маппинга, в алгоритме фильтрации карт теней и фильтрах постобработки.

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

Объем геометрии, обрабатываемый игрой в одном кадре при максимальных настройках, оказался значительно ниже среднего уровня для современных 3D игр, количество полигонов в кадре изменяется от 10000 до 500000. Экстремальные случаи очень редки, сложность геометрии на разных уровнях отличается не очень сильно, есть уровни с 50000 средних треугольников на кадр, а есть — с 100000. А среднее количество обрабатываемых треугольников в кадре по всем уровням игры составляет примерно 75000 полигонов. Это очень мало по современным меркам, и соответствует разве что играм годичной и более давности или мультиплатформенным играм, версии которых вышли и на консолях предыдущего поколения. Среднее количество вызовов отрисовки в игре составило 450, а максимальное — чуть более 2000. Цифры стандартные, это не много, но и ни мало.

Игра предъявляет невысокие требования к объему локальной видеопамяти, в разрешении 1024x768 с антиалиасингом уровня 4x и максимально возможными настройками качества, игра использует по максимуму до 200 мегабайт видеопамяти, в зависимости от игрового уровня. Средняя цифра потребляемой памяти ниже современного уровня технологичных игр — около 140-150 Мб, что в современных условиях является приемлемой цифрой даже большого числа low-end видеокарт.

При игре на всех уровнях Hitman: Blood Money были собраны и данные счетчиков производительности NVIDIA. При максимальных настройках и разрешении 1024x768 с включенным мультисэмплингом, видеочип GeForce 7800 GTX простаивал по счетчику gpu_idle в среднем около 20% времени. Значение сильно зависит от уровня, есть образцы с 10% времени простоя, когда производительность близка к ограничению видеочипом, а есть уровни с 35% времени простоя GPU. Сложность пиксельных шейдеров средняя, усредненное значение pixel_shader_busy составляет 35%, что примерно соответствует обычным цифрам современных (но не самых технологичных) игр. Тут разброс по уровням не такой большой — от 25% до 45%. Среднее использование блоков вершинных шейдеров по счетчику vertex_shader_busy весьма невелико — лишь 5%, разброс по уровням — 3-7%. Налицо явно недостаточная сложность вершинных шейдеров, а также очень низкая геометрическая сложность уровней и моделей.

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

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

Счетчик Default MSAA off Anisotropic off Textures low Post processing off Shadows off LOD low
FPS 42.4 44.6 44.3 43.9 51.5 53.1 46.7
gpu_idle, % 11.1 29.6 14.0 19.0 29.2 22.3 12.6
vertex_shader_busy, % 7.6 7.4 7.4 7.2 8.2 5.7 4.7
pixel_shader_busy, % 35.1 31.5 35.7 34.2 24.2 30.0 34.5
triangle count, polys 123877 123830 123381 122804 122274 86170 84234
batch count 656 647 656 636 602 489 531
shader_waits_for_texture, % 12.9 9.1 10.4 8.3 9.6 10.7 12.9
shader_waits_for_rop, % 25.6 7.1 24.7 27.5 16.0 20.0 26.3
video memory, Mb 127 87 126 101 119 124 127

Средняя частота кадров приведена для того, чтобы понять, как сказывается изменение настроек игры на производительности. Максимальное влияние на скорость рендеринга оказало отключение теней и постобработки. Также, заметно повлияло и снижение уровня детализации. Все остальные параметры, в том числе анизотропная фильтрация и антиалиасинг, не слишком сильно сказываются на скорости рендеринга, что указывает на одно из ограничений производительности операций записи в буфер кадра.

Значения счетчика gpu_idle сильно отличаются во многих режимах, у GPU всегда есть время «отдохнуть», но наибольшее влияние оказывает отключение антиалиасинга или постобработки, что еще раз говорит об упоре в филлрейт при высоких разрешениях рендеринга. Заметно снижают нагрузку на видеочип отключенные тени и сниженное разрешение текстур. На значение vertex_shader_busy рассматриваемые настройки оказывают минимальное влияние, с учетом погрешности тестирования. Разница есть только в двух последних случаях, с отключенными тенями и сниженной детализацией сцены. Значение pixel_shader_busy сильнее всего снижается в режиме с отключенной постфильтрацией, пиксельные блоки меньше всего загружены работой в таких условиях. Заметно влияют отключенные тени и антиалиасинг.

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

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

Количество рассчитанных полигонов в кадре отличается не слишком сильно (в небольшой разнице, как обычно, виновата погрешность измерения), за исключением двух случаев. Треугольников рассчитывается значительно меньше в режимах со сниженным уровнем детализации (LOD) и отключенными тенями. Количество вызовов отрисовки (batch count), затраченное на рендеринг сцены, соотносится с количеством полигонов и сильно снижается в вышеперечисленных же режимах, а также — при отключенной постобработке, когда количество обрабатываемых треугольников почти не меняется, но в процессе требуются дополнительные вызовы draw call.

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

Первой частью сериала была игра Hitman: Codename 47. Она появилась в 2000 году, получила определенную популярность у игроков и точно была оригинальной. Поэтому была продолжена в дальнейшем играми Hitman 2: Silent Assassin (2002), Hitman: Contracts (2004) и самой свежей Hitman: Blood Money (2006).

Игры сериала рассказывают о нелегкой жизни наемного убийцы. Агент 47, от имени которого мы играем, в отличие от большинства экшнов, не должен убивать всё, что шевелится. Наоборот, он спокойно прохаживается вокруг мест, где находится или будет находиться цель, готовясь к ее уничтожению, разрабатывая соответствующий план. Он тихо и быстро выполняет дело, и столь же незаметно удаляется. По крайней мере, так было задумано, хотя из последних серий игры можно сделать и обычный экшн с массовыми перестрелками, только это вряд ли привлечет кого-нибудь, так как в игре подобные убийства не поощряются, а даже наоборот. А играть в безбашенного маньяка-убийцу, расстреливая толпы врагов, в этой игре совсем неинтересно. В Hitman главным является не сам процесс убийства, а его планирование, подготовка и безупречное исполнение.

В последней части игры, которую мы сегодня рассматриваем, было сделано много нововведений, вернулись и некоторые проверенные решения предыдущих частей. Так, в Blood Money опять появилась система нарушений, когда игрок наказывается за "лишние" действия. Улучшилось поведение персонажей, были изменены алгоритмы искусственного интеллекта. Графический движок игры также получил многочисленные изменения и улучшения со времен первой части. Они заметны в усложненном освещении, наложении теней, текстурировании и постобработке. Но об этом — в следующей части статьи.

Немного истории компании-разработчика. Датская компания IO Interactive (IOI), разработавшая все игры сериала, была основана в сентябре 1998 года, она разрабатывает компьютерные и видеоигры для ПК и консолей, используя собственные технологические решения. Первой игрой компании стал Hitman: Codename 47, стелс-экшн от третьего лица, выпущенный в версии для ПК в ноябре 2000 года, изданный компанией Eidos и завоевавший интерес публики, что выразилось в неплохой цифре продаж — более чем 600000 копий. Цифра для первой игры компании, эксклюзивной для ПК, очень неплохая. Продолжение игры, Hitman 2: Silent Assassin, было выпущено в октябре 2002 уже сразу для трех основных платформ: ПК, PlayStation 2 и Xbox, причем тираж игры составил более 3 миллионов копий. Вот, что значит мультиплатформенность, труды IOI по переносу движка на консоли полностью оправдались.

Следующая игра компании не была продолжением успешного сериала — в октябре 2003 вышел экшн Freedom Fighters, разработанный совместно с другим издателем — Electronic Arts. Эта мультиплатформенная игра продавалась хуже, но тоже неплохо, было продано более 1 млн. копий. Интересно, что и третья часть Hitman под названием Contracts, не повторила успех второй, продавшись хуже — лишь 1.6 млн. копий. На сегодняшний день IOI является частью Eidos, известного издателя и игрового разработчика. Логично, что их игры издаются под этим лейблом. Сейчас они занимаются разработкой игры Kane & Lynch: Dead Men, это тоже будет экшн от третьего лица.

Итак, 4 ноября 2004 года Eidos анонсировала продолжение сериала Hitman — Blood Money, четвертую игру серии. В новой части сериала 47-й узнает, что члены агентства ICA были устранены. Он пытается выяснить, кто стоит за убийствами и едет в Америку. Там он продолжает работу, состоящую в зарабатывании грязных денег наиболее привычным для него методом. Blood Money научила номер 47 новым способам отвлечения охранников, теперь он умеет перелезать через препятствия, прятаться, использовать тела врагов для прикрытия и др. Изменилась система управления, поумнели враги, которые реагируют на подозрительное поведение и беспокоятся при виде странных предметов.

   

   

На первых же скриншотах сразу были видны некоторые отличительные моменты новой игры: мягкие shadow map тени, попиксельное освещение с наложением карт нормалей. К сожалению, также видны и модельки не очень хорошего качества, небогатые деталями уровни и текстуры недостаточно высокого разрешения.

Изначально выпуск Hitman: Blood Money был запланирован на весну 2005 в версиях для PC, PlayStation 2 и Xbox. Но в марте 2005 года были обнародованы итоги работы компании Eidos за второе полугодие 2004 года. По результатам деятельности, убытки компании составили 29.2 млн. фунтов, и на счету издательства осталось мало денежных средств. Компания Eidos была близка к банкротству, но ей удалось заручиться поддержкой Королевского Банка Шотландии, выдавшего кредит на определенных условиях. Финансовое положение отразилось и на проектах компании, выпуск сразу нескольких игр (Hitman: Blood Money, Tomb Raider: Legend, 25 to Life и Just Cause) был перенесен на следующий финансовый год.

Предложение о покупке Eidos поступило от компании SCi, сделка была завершена к маю того же года. Новые владельцы сменили менеджмент и продолжили работу. Еще позже, в июле 2005 года два потенциальных хита Eidos: Tomb Raider: Legend и Hitman: Blood Money были отложены еще раз, теперь — на начало 2006 г. Видимо, появилась необходимость дополнительной работы над проектами, SCi хотела выпустить игры в лучшем виде, и задержала выпуск обеих. Впрочем, задержкой это назвать нельзя, так как проекты, по сути, не имели конкретных дат выпуска.

В мае 2005 компания Eidos обнародовала некоторые подробности о новом творении студии IO Interactive. Как и в успешной первой части, агент 47 в Blood Money получает дополнительное вознаграждение за "чистые" убийства, а полученные деньги можно тратить на покупку модификаций для оружия, дополнительного оборудования, а также интересующей его информации о целях. Можно даже платить за снижение интереса правоохранительных органов к собственной персоне.

   

   

Новые скриншоты удивили тогда картами нормалей явно высокого разрешения и очень мягкими границами теней. К сожалению, и то и другое в релизе игры претерпело определенные изменения в худшую сторону. И карты нормалей в релизе явно не такие детализированные, да и границы теней не такие сглаженные (см. первый скриншот из четырех приведенных). Зато мы увидели неплохую реализацию водных поверхностей, которые отражают и преломляют, обновленные постфильтры glow/bloom, noise, а также огромное количество моделей людей в кадре, хотя и малополигональных.

Официальный сайт стелс-экшна Hitman: Blood Money был запущен в марте 2006 года, на его страницах страждущие поклонники нашли новые скриншоты, ролики, обои для рабочего стола и свежую информацию об игре. В том же месяце издательство "Новый Диск" объявило о грядущем выпуске локализованной версии игры на территории России, стран СНГ и Балтии.

В апреле 2006 компания Eidos объявила официальную дату выпуска Hitman: Blood Money — 30 мая 2006 года. Игру запланировали к выпуску в версиях для ПК, Xbox 360, Xbox и PlayStation 2. Таким образом, к первоначальным планам добавилась и версия для консоли Xbox 360, графические возможности которой близки к возможностям ПК, поэтому перенос вряд ли был слишком сложным.

   

   

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

18 мая было объявлено о долгожданном окончании процесса разработки, и Hitman: Blood Money отправили в печать, обещав поступление игры в магазины уже 30 числа того же месяца. Еще через четыре дня для ПК игроков была выпущена демонстрационная версия игры, включившая в себя первый уровень финальной. Демка позволила оценить то, что мы затем увидели в релизе, в том числе и ее графику.

   

Наконец, 26 и 30 мая 2006 года компания Eidos выпустила Blood Money в продажу в Европе и США, соответственно. Уровень графики на последних скриншотах не отличался от того, что мы увидели в демо- и полной версиях игры. По сравнению с предыдущими частями, основными отличиями стали косметические улучшения и слегка похорошевшие модели и текстуры. Улучшенный движок отличился попиксельным расчетом освещения, наложением карт нормалей, параллакс-маппингом, мягкими динамическими картами теней для моделей людей, и несколькими новыми эффектами постфильтрации, один из которых (depth of field) показан на скриншоте.

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

Hitman: Codename 47 был технологически интересен тем, что это была одна из первых игр с физикой тел ragdoll. Но не только этим, но и мягкими shadow map тенями от нескольких источников света, хотя и только от моделей персонажей. Тогда это было свежо. Движок был подвержен многочисленным модификациям со времен Codename 47, улучшили освещение, добавили normal и parallax mapping, а также несколько видов постобработки. К четвертой части в IO сделали достаточно много изменений, также улучшились алгоритмы наложения теней, статические тени предрассчитываются для геометрии уровня, причем эти тени похожи на динамические и не слишком от них отличаются по виду. А для динамических сделали самозатенение и улучшили фильтрацию.

Графически, между Hitman: Blood Money и предыдущими играми серии Hitman, достаточно много отличий, хотя и не сразу заметных. Blood Money — это первая игра, основанная на последней версии движка собственного изготовления IO Interactive — Glacier Engine 3.0. Он предлагает новый рендерер с поддержкой шейдерных моделей вплоть до 3.0, поддерживает такие эффекты, как отражения и преломления в реальном времени. А мягкие тени являются его давней визитной карточкой. Динамические тени со смягченными краями и самозатенением есть в версиях игры для ПК и Xbox, в них же поддерживаются новые материалы, использующие карты нормалей и эмулирующие подповерхностное рассеивание света и rim lighting (эффект ореола, подсветка сзади для выделения контуров объекта, используется в фотографии и кино). А физика и ragdoll, к сожалению, остались на прежнем уровне. Тела слишком легкие и нереально гибкие, как резиновые куклы.

Glacier Engine — мультиплатформенный игровой движок, написанный на C/C++, разработанный самой компанией IO Interactive специально для использования в собственных играх, но, по словам создателей, имеющий "коммерческое качество", то есть, ничем не уступающий движкам, изначально разрабатываемым для продажи на сторону. Разные версии Glacier использовались в играх компании: во всех играх сериала Hitman, а также Freedom Fighters.

Glacier постоянно развивался со времени его первой версии в далеком 1994 году. Чтобы не начинать разработку отдельных движков для каждой игры, было решено сделать универсальный, сразу для нескольких платформ. Это является основной особенностью Glacier Engine, снижающей стоимость разработки и сокращающей ее продолжительность. Движок состоит из модулей, каждый из которых, в свою очередь, является набором утилит: virtual scene player (плеер сцен), virtual scene composer/editor (редактор сцен), плагины для 3DS MAX, Photoshop и ProTools, модуль локализации.

Первые версии Glacier поддерживали два разных графических API — DirectX и OpenGL, но в дальнейшем от последнего было решено отказаться, согласно тенденциям последнего времени. Зато поздние версии, помимо ПК, предназначены и для консолей разных поколений, начиная от PlayStation 2 и заканчивая Xbox 360. Вероятно, его перенесут и на PlayStation 3. Кстати, декларируется, что разные версии используют некоторые специфические особенности каждой из игровых систем.

Основные возможности движка, относящиеся к общим: объектная ориентированность, математическая библиотека с поддержкой быстрых векторных вычислений при помощи SSE/3DNow, библиотека функций по работе с геометрией, возможность хранения ресурсов в сжатых ZIP файлах и их быстрая распаковка, низкая требовательность к объемам памяти, что важно для консолей предыдущего поколения, удобные средства отладки (утилиты для профилирования и др.), скриптовый язык для алгоритмов искусственного интеллекта, встроенные 2D, 3D и звуковой редакторы, с плагинами для 3DS MAX, Photoshop и др.

Возможности Glacier, относящиеся к 3D графике: поддержка вершинного и пиксельного освещения, объемного освещения, предрассчитанных лайтмапов; поддержка разных алгоритмов рендеринга динамических теней, при помощи теневых объемов и карт теней, в том числе мягких и с самозатенением; мультитекстурирование, наложение карт нормалей и parallax mapping; поддержка сплайнов и патчей, оптимизированного рендеринга ландшафтов (CLOD), качественные алгоритмы динамического управления уровнем детализации (LOD — level of detail), поддержка алгоритмов отбрасывания невидимых граней; несколько типов анимации: блендинг, скелетная, по ключевым кадрам, инверсная кинематика; мощный физический движок с просчетом столкновений с точностью до полигонов, физика гибких тел, тканей, растений и волос; большой список разнообразных спецэффектов: наложение карт среды, системы частиц, многочисленные типы постфильтрации: glow, depth of field, motion blur, преломление и другие.

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

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

Outdoor     Outdoor

Indoor     Indoor

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

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

Normal mapping     Normal mapping

Разработчиками отдельно выделяется поддержка rim lighting — эффект ореола, подсветка сзади для выделения контуров объекта. Шейдер человеческой кожи, помимо этого, имитирует еще и подповерхностное рассеивание. Для некоторых из поверхностей на уровнях используется техника параллакс-маппинга, использующая карты высот для имитации мелких геометрических деталей. К сожалению, число таких поверхностей невелико, техника применяется только в наиболее удобных случаях, там, где это хорошо заметно. То есть, на каменных и некоторых других стенах:

Parallax mapping     Parallax mapping

Текстуры в игре не отличаются очень высокой детализацией, в некоторых случаях им явно не хватает разрешения. В игре используются как сжатые текстуры форматов DXT1 и DXT3, так и 32-битные RGBA, причем, при максимальных настройках несжатых довольно много. Видимо, этим объясняется заметный недостаток детализации при достаточно большом объеме занятой видеопамяти.

Textures     Textures

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

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

Models     Models

Models     Models

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

Кстати о тенях. Тени рассчитываются от нескольких источников освещения внутри помещений и от одного — снаружи. Тени от персонажей рендерятся при помощи карт теней float формата 32-бит на пиксель (R32F) с разрешением 512х512 (можно изменить в конфигурационном файле). Для всей остальной геометрии используются только предрассчитанные тени. Для смягчения границ динамических теней используется специальная фильтрация на базе восьми текстурных выборок, запрограммированная в пиксельном шейдере. Поддерживается самозатенение, тени отбрасываются на все статические поверхности в сцене.

Shadows     Shadows

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

Уже упомянутые выше по тексту водные поверхности в игре получили большое распространение, тут есть как большие водоемы, так и бассейны. Разновидностей воды тут много, даже по технологиям поверхности отличаются друг от друга очень сильно! Все водные поверхности в игре сделаны технологично, с динамическими отражениями и/или преломлениями, и часть из них выглядит достаточно реалистично.

Water     Water

Water     Water

Первый скриншот показывает чисто пиксельный эффект, без геометрических волн. Динамические отражения присутствуют. Второй скриншот — почти то же самое, волны на уровне пикселей, но вместо реалистичных отражений сделали преломления. Третий скриншот — совершенно другой алгоритм! Волны геометрические, как в F.E.A.R., и они откликаются на воздействие со стороны игрока. Есть реалистичные отражения, в том числе динамических объектов, но преломлений нет, хотя вода прозрачна. На четвертом скриншоте показана наиболее эффектная и технологичная реализация. Волны геометрические, динамические. Рассчитываются отражения и преломления, применяется дополнительная постобработка. Выглядит такая вода очень хорошо, только излишне прозрачной. Еще один имитируемый эффект — каустика. Это световые эффекты в виде бликов, возникающих из-за преломления света при прохождении через прозрачную среду, они хорошо видны на дне и стенках бассейна.

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

FX     FX

FX     FX

Эффекты постобработки всегда были одной из отличительных черт игры. В Hitman: Blood Money применяются наиболее распространенные фильтры: glow — фильтр, увеличивающий яркость светлых участков изображения, blur — размытие картинки, depth of field — "кинематографический" эффект глубины резкости, distortion — искажение, подобное преломлению, и noise — эффект зернистости изображения, применяется для фото- и кинореалистичности.

Postprocessing (glow) Postprocessing (glow) Postprocessing (glow) Postprocessing (glow)
Postprocessing (blur) Postprocessing (blur) Postprocessing (blur) Postprocessing (blur)
Postprocessing (distortion) Postprocessing (distortion) Postprocessing (distortion) Postprocessing (distortion)
Postprocessing (DOF) Postprocessing (DOF) Postprocessing (DOF) Postprocessing (DOF)
Postprocessing (noise) Postprocessing (noise) Postprocessing (noise) Postprocessing (noise)

Эффекты применены неплохо, вполне к месту. Так, blur замыливает изображение во время выбора предметов в инвентаре, а DOF используется во время прицеливания через оптический прицел. К сожалению, на мой взгляд, игре не хватает HDR рендеринга, что видно по предпоследнему скриншоту — явно видна нехватка динамического диапазона.

На одном примере рассмотрим, как по шагам делается постобработка в игре. Начальная картинка содержит изображение без преломлений, мягкого освещения и эффекта glow. Далее рендерится поверхность воды с преломлением, затем накладывается эффект объемного света и снега, и в конце выполняется основной этап постобработки — эффекты glow/bloom, DOF и noise. В результате мы получаем итоговое изображение, в котором, на мой субъективный взгляд, некоторые цветовые детали безнадежно испорчены постобработкой.

Postprocessing     Postprocessing

Postprocessing     Postprocessing

В отличие от ранее рассмотренного FlatOut 2, здесь постфильтрация не насыщает краски, а даже наоборот, что показывает нам разные подходы к постобработке. К сожалению, все применяемые форматы буферов рендеринга 32-битные, возможности рендеринга в широком динамическом диапазоне нет. А ведь в игре HDR рендеринг и tone mapping был бы весьма полезен и для улучшения качества эффектов постфильтрации и для эффекта адаптации человеческого зрения к разным условиям освещения.

По 3D технологиям в Hitman: Blood Money, можно сказать следующее: эта игра использует некоторые современные графические технологии, такие как попиксельное освещение, наложение карт нормалей, параллакс-маппинг, фильтрацию карт теней в шейдере. Игра выглядит неплохо, а оптимизации под ПК явно не хватает, частота кадров невелика при такой средненькой картинке. По своим возможностям графический движок немного устарел, хотя в игре есть вершинные и пиксельные шейдеры версии 3.0, их немного, они не очень сложны, да и применяются недостаточно активно.

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

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

Хотя игра технологически ничем особенно не выделяется, она ухитряется тормозить в некоторых случаях даже на мощных системах. Поэтому необходимо рассмотреть влияние отдельных 3D настроек на производительность игры. Более-менее комфортно играть в игру на максимальных настройках и с включенными анизотропной фильтрацией и антиалиасингом уровня 4x в разрешении 1024x768 и 1280x1024 смогут лишь владельцы верхнего mid-end, вроде GeForce 7900 GS и RADEON X1950 PRO. Такие видеокарты, как GeForce 7600 GT и RADEON X1600 XT уже не обеспечивают необходимой частоты кадров в таких условиях. Поэтому пользователям старых и/или медленных видеосистем это описание может помочь в достижении приемлемого соотношения производительности и качества.

Если при игре на максимальных настройках не достигается нужная частота кадров, которую можно оценить визуально, нужно проверить среднюю частоту кадров при помощи сервера статистики RivaTuner или приложения FRAPS. Чтобы устранить низкий уровень производительности, нужно изменять игровые настройки так, чтобы достичь средней частоты кадров хотя бы выше 30-40 FPS. Основные параметры, на которые следует обратить внимание в игре: общая настройка "Render Quality" и отдельные "Screen Resolution", "Drop Shadows" и "Post Filters Level Of Detail".

К сожалению, игра не позволяет тестировать производительность встроенными средствами и не имеет возможности записи демок, что усложняет задачу корректного тестирования производительности. Поэтому измерение производительности доступно только примерное, с использованием утилит, подсчитывающих средний FPS, подобных FRAPS. Тесты проводятся следующим образом: запускается FRAPS и игра, делается измерение среднего FPS во время прохождения одной и той же части выбранного уровня. Расположение и поведение всех персонажей в Hitman: Blood Money отличается раз от раза, поэтому разброс результатов может быть весьма велик и подобные измерения не годятся для серьезных тестов.

Для комфортной игры средняя частота кадров должна быть равна минимум 40 FPS, а еще лучше — 50-60 FPS. Если она ниже, то лучше будет понизить некоторые настройки. И наоборот, если средний FPS больше 50-60 и плавности вам хватает, можно попробовать улучшить качество картинки, изменив настройки в большую сторону. Повторяя эксперименты, нужно постараться получить приемлемый вариант, не забывая, что уровни в играх зачастую отличаются с точки зрения нагрузки на видеокарту.

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

  • Show Blood (Off/On) — влияние настройки понятно из ее названия. Она включает и отключает рендеринг крови в игре при попаданиях в тела людей. На производительность влияет, но незначительно, игра ведь не о мяснике, поэтому, чем меньше крови — тем лучше.

  • Subtitles (Off/On) — настройка управляет включением субтитров. Влияния на скорость нет.

  • PIP Cam (Off/On) — этот параметр — единственный из трех, который реально может снизить производительность игры. Она включает так называемую камеру "картинка в картинке". Проще всего это показать на скриншоте:

    PIP Cam
    То есть, при включенной настройке вам иногда будут показывать некие события, на которые стоит обратить внимание, не прерывая вашей игры. С точки зрения производительности, это чревато тем, что нагрузка на систему увеличивается при одновременном рендеринге двух разных сцен. Поэтому при появлении проблем с плавностью именно в такие моменты, эту настройку можно отключить.

Подробные графические настройки находятся во вложенном меню, вызываемом нажатием "Render Options". Рассмотрим подробно каждую из списка имеющихся настроек, ведь именно их нужно изменять для получения оптимального сочетания качества и производительности.

Наиболее важна общая настройка — Render Quality. Ее возможные значения: Low/Medium/High/Ultra High/Custom. Это общая настройка, которая воздействует на большинство остальных параметров, на которые мы обратим внимание далее. Она пригодится, прежде всего, неважно разбирающимся в 3D технологиях пользователям, или тем, кто не хочет тратить время на ее настройку. Всем остальным рекомендуется выставление значения "Custom" при ручном изменении остальных. Для наглядности приведем таблицу зависимости настроек игры от значения "Render Quality":

Render quality Low Medium High Ultra High
Drop Shadows None Hero All Chars All Chars
Self-shadowing N/A Off Off On
Shadow Quality N/A Hard Hard Soft
Post Filters LOD Disabled Low Low High
LOD Low Medium Medium High
Anisotropic Filtering Disabled x4 x8 x16
Texture Resolution Low Medium High Max
Antialiasing Disabled x2 x2 x4

Естественно, что при таких отличиях данная настройка сильно влияет на производительность. Если принять за 100% частоту кадров на тестовой системе в разрешении 1024x768 и режиме "Ultra High", то в "High" получается 116%, в "Medium" — 128%, а в "Low" — 163%. Разница не очень большая, похоже, что производительность упирается в нечто другое, что не регулируется настройками игры. И хотя все предустановки вполне соответствуют своим названиям, и сделаны с умом, без изменения отдельных настроек добиться оптимального результата не получится. Поэтому всё же рекомендуется вручную настроить все те настройки, которые мы сейчас рассмотрим по отдельности.

  • Drop Shadows (None/Hero/All Characters) — этот параметр управляет количеством (но не качеством) динамических и статических теней. Возможна установка трех различных значений, при «None» движок не рендерит никаких теней, даже статические отключаются. Значение «Hero», как ни странно, включает не только динамические тени от главного героя игры, но и все статические тени. Максимальной установкой является «All Characters», при этом значении тени отбрасывает и главный герой, и все остальные персонажи игры. Все это наглядно показано на приведенных далее скриншотах:

    Drop Shadows None     Drop Shadows Hero

    Drop Shadows All Characters

    Воздействие настройки на производительность оказалось довольно большим, разница между «All Characters» и «None» в разрешении 1024x768 при максимальных настройках составила около 20%. Поэтому владельцам слабых систем можно посоветовать сначала попробовать режим «Hero», а на самых слабых компьютерах даже «None». На производительных системах разница не настолько велика, чтобы отключать тени — одну из важнейших составляющих 3D графики.

  • Self Shadowing (Off/On) — еще одна настройка, относящаяся к теням, но на этот раз — к их качеству. Значение «On» включает режим самозатенения, когда персонаж отбрасывает тень на самого себя. То есть тень от руки на тело, от головы — на плечи, и т.п. Разница не так ярко выражена, но она есть:

    Self Shadowing Off     Self Shadowing On

    Обратите внимание на левое плечо Агента 47, при включении данной настройки на нем появляется тень от головы. Можно сказать, что в целом разница не так уж велика, чтобы жертвовать производительностью из-за самозатенения. Так что если вам не хватает скорости — отключайте его. На тестовой системе разница между режимами в наших условиях тестов составила 11-12%. Даже на относительно мощной системе получилась существенная разница, а на слабых может быть еще хуже.

  • Drop Shadow Quality (Hard/Soft) — третья и последняя настройка по теням в игре. Она включает алгоритм смягчения границ теней, при котором специальный пиксельный шейдер делает не одну выборку из shadow map, а восемь, смешивая эти сэмплы. В результате получается более темная тень с мягкими краями:

    Drop Shadow Quality Hard     Drop Shadow Quality Soft

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

  • Post Filters Level Of Detail (Disabled/Low/High) — еще одна важнейшая в плане влияния на производительность настройка. Этот параметр регулирует степень постобработки, используемой в игре. При отключенной постобработке производительность становится выше за счет снижения нагрузки на блоки ROP, также снижаются требования к количеству локальной видеопамяти. Параметр сильно влияет и на качество картинки:

    Post Filters LOD Disabled     Post Filters LOD Low

    Post Filters LOD High

    Хорошо видно, что в режиме «Disabled» постфильтрация картинки отключена. Значение «Low» включает часть фильтров: noise, bloom, но не включает остальные. А в «High», в дополнение к тем, что включились ранее, появляется depth of field и цветокоррекция, картинка становится менее насыщенной и слегка замыленной. Приведем еще один пример с эффектом глубины резкости:

    Post Filters LOD Disabled/Low     Post Filters LOD High

    Так отличаются крайние режимы "Post Filters Level Of Detail" при прицеливании через оптику. DOF тут выглядит вполне реалистично, хотя в реальности снайпер обычно не видит ничего, кроме того, что попало в прицел, так что это лишь красивый спецэффект.

    Влияние включения постфильтрации на получаемую частоту кадров в очередной раз оказалось самым большим среди всех имеющихся настроек. В наших условиях, разрешении 1024x768 и максимальных настройках, разница между «Disabled» и «High» составляет около 30%! Так что жалующимся на производительность нужно отключать постобработку в первую очередь. А в режиме «Low» почти нет смысла, производительность в нем мало отличается от «High».

  • Level Of Detail (Low/Medium/High) — эта настройка, судя по всему, регулирует геометрический уровень детализации для некоторых 3D моделей, таких, как модели персонажей. Он не сильно сказывается на производительности, и не так заметно влияет на итоговую картинку. Смотрите сами:

    LOD Low     LOD High

    Видно, что небольшое снижение детализации объектов при значении «Low» (слева) все-таки есть, но оно малозаметное, особенно в динамике. Видимое только на моделях людей и оружия. От такой настройки я лично ожидал большей разницы, в очередной раз приходится сетовать на низкую детализацию части 3D моделей в игре. Настройка может помочь разве что для небольшого ускорения рендеринга на самых слабых конфигурациях, на тестовом ПК значительного влияния настройки на скорость обнаружено не было, максимальная разница — 4-5%.

  • Anisotropic Filtering (Disabled/x2/x4/x8/x16) — внутриигровая установка уровня анизотропной фильтрации, используемой в игре. Доступны все значения, от отключенной анизотропки до максимально возможного уровня. Выглядит картинка при включенной и отключенной анизотропной фильтрации аналогично другим играм:

    Anisotropic Filtering Disabled     Anisotropic Filtering x16

    Анизотропная фильтрация значительно улучшает четкость плоских поверхностей в игре, расположенных под острым углом к направлению взгляда. На производительности ее включение сказывается не очень сильно, в режиме максимальных настроек разница в скорости между минимальным и максимальным значениями настройки составила 7%. Что является очередным подтверждением низкой нагрузки на текстурники в Hitman: Blood Money.

  • Texture Resolution (Low/Medium/High/Max) — этот параметр позволяет установить нужное разрешение текстур. Доступно четыре значения, разница между всеми из них легко заметна и показана на сравнительных картинках:

    Texture Resolution Low     Texture Resolution Medium

    Texture Resolution High     Texture Resolution Max

    Эта настройка больше остальных влияет на качество рендеринга. Ведь изменяется разрешение всех текстур, в том числе текстур персонажей и карт нормалей. А влияния на производительность при максимальных настройках не обнаружено. Впрочем, на системах с объемом видеопамяти 128 Мб разница может проявиться. Во всех остальных случаях не советую ставить значение ниже максимального.

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

  • Antialiasing (Disabled/x2/x4) — уже ставшая привычной для современных игр настройка включения полноэкранного антиалиасинга. В список доступных значений входят все основные режимы мультисэмплинга, в нашем случае — 2x и 4x, а также режим без антиалиасинга. Зависимость производительности от включения мультисэмплинга есть, но его влияние даже меньше чем у анизотропной фильтрации — всего 5%. Вероятно, полного упора в производительность блоков ROP в тестовом разрешении все-таки нет…

  • Screen Resolution (720x576, 800x600, 1024x768, 1280x720, 1280x960, 1280x1024, 1600x900, 1600x1200, 1920x1080, 1920x1200, 1920x1440) — а последняя опция изменяет разрешение рендеринга. Список разрешений в игре не очень широк, но в нем присутствуют все поддерживаемые видеокартой и монитором наиболее популярные разрешения экрана, в том числе самое востребованное из-за широкого распространения LCD мониторов разрешение 1280x1024. Стандартные широкоэкранные разрешения тоже есть, а все режимы ниже 720x576 разработчики решили убрать.

    Изменение разрешения на тестовой системе на производительности сказывается средне, если принять производительность Blood Money в 1024x768 за 100%, то в 1600x1200 мы получаем 56% от эталонной скорости, а в 720x576 — лишь 112%. Вывод из этого делаем такой — в высоких разрешениях производительность ограничена филлрейтом, а в низких — производительностью остальных частей системы, в основном — процессора. Итак, упор в производительность видеокарт класса GeForce 7800 GTX при процессоре Athlon 64 3200+ начинает наблюдаться только в разрешениях выше 1280x1024.

Относительно производительности игры добавлю, что на тестовой системе играбельны все максимальные настройки при включенных анизотропной фильтрации и антиалиасинге в разрешениях 1024x768 и 1280x1024. Средний FPS по всей игре в таких условиях близок к 60 FPS, минимальный FPS почти не опускается ниже 30, за исключением нескольких случаев с понижением до 20 FPS. Хотя, в игре все-таки присутствует несколько уровней с пониженной производительностью, особенно это относится к уровням со снегом.

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

Hitman: Blood Money использует единственный конфигурационный файл, который можно исправить, получив некоторые дополнительные возможности по настройке игры. Файл расположен в каталоге игры и носит название HitmanBloodMoney.ini. Этот файл содержит параметры, повторяющие внутриигровые настройки, но также и пару параметров, не имеющих аналогов в меню. Данный файл имеет текстовый формат и его можно отредактировать любым доступным способом.

Мы не будем рассматривать те настройки, которые есть в меню игры, и которые не дают каких-либо дополнительных возможностей. Среди них можно отметить: SelfShadows, PostFilterLOD, LevelOfDetail, Anisotropy, TextureResolution, BlurShadows, EnableVSync, Antialias. Все они полностью соответствуют игровым и редактированием их значений в HitmanBloodMoney.ini ничего нового не добиться.

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

  • Window (0/1) — параметр, определяющий запуск игры в оконном или полноэкранном режиме. Для его установки нужно выставить значение 0 или 1, соответственно. Возможность бесполезна для повышения производительности, но в ряде случаев бывает нужной.

  • ShadowResolution (разрешение карт теней) — а эта настройка является одной из двух известных мне, которая может повлиять на качество рендеринга и его производительность, и которой нет в меню. Ее значение задает разрешение используемых динамических карт теней. Так, при значении 512 игра будет использовать карты теней разрешением 512x512 пикселей для каждой из моделей людей. И хотя на тестовой системе разницы в производительности между разными значениями не было обнаружено (визуальная разница присутствует), она может быть существенной на менее мощных системах.

  • RenderUsePartialPrecisionShader (0/1) — пожалуй, это самая полезная настройка для владельцев видеокарт NVIDIA. Она включает оптимизации пониженной точности расчетов (partial precision) в пиксельных шейдерах версий 2.0 и 3.0. При выставленном значении "1" компиляция шейдеров производится с учетом такой возможности, которая может быть особенно полезной для low-end видеокарт серии GeForce FX.





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

iXBT BRAND 2016

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

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.