Графические технологии в играх: Call of Juarez



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

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

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

Call of Juarez — это игра в жанре "вестерн", с интересным сюжетом и возможностью игры от лица двух персонажей, со всем тем, что отличает этот стиль: большим количеством дуэлей на пистолетах, яркими персонажами, погонями на лошадях и прочими атрибутами жанра, известными нам по кинофильмам 70-х и 80-х годов прошлого века. Игра использует третью версию графического движка Chrome Engine, последнюю на данный момент. Call of Juarez отличают качественные текстуры, рендеринг теней при помощи карт теней очень высокого разрешения, сложные эффекты, создаваемые при помощи систем частиц (дым и огонь), поддержка HDR рендеринга в фреймбуфер 16-битного формата с плавающей запятой. Рассматриваемая игра весьма требовательна к мощности системы, и особенные требования она предъявляет именно к видеокарте.

Уровни в игре выполнены в основном в виде открытых пространств очень большого размера, есть такие карты, что пройти их от края и до края за короткое время не получится. Встречаются в игре и indoor локации: комнаты, коридоры и пещеры, но их не так много. Для рендеринга теней движком используются карты теней (shadow maps), в том числе аппаратно ускоренных текстурных форматов, если таковые поддерживаются видеосистемой. Графическая часть игры также выделяется наложением карт нормалей на большую часть поверхностей, применением техники parallax mapping, алгоритмом качественной фильтрации карт теней и возможностью HDR рендеринга. Используется уже привычная модель попиксельного освещения Блинна-Фонга, каждый рассчитываемый источник света дает диффузную и спекулярную составляющие на всех основных поверхностях. Используется несколько текстурных слоев, в том числе наложение карт нормалей, для рендеринга некоторых материалов применяется простая разновидность parallax mapping. В игре особое внимание уделено фильтрам постобработки, применяется несколько их видов: bloom, blur, преломление (refraction), depth of field и другие.

Релиз игры содержит пиксельные и вершинные шейдеры, написанные на HLSL и ассемблерном языке. Последнее относится только к первым версиям шейдеров, а на языке высокого уровня написаны шейдеры, предназначенные для компиляции в 2.x и 3.0. Шейдеры версий 1.1 и 1.4 используются, но их очень мало, в основном применяются 2.x и 3.0. Самые длинные вершинные шейдеры версий 2.x/3.0 состоят из 100-130 команд, их сложность средняя или даже чуть ниже средней по современным меркам. Сложность пиксельных программ высших версий можно также оценить как среднюю, самые тяжелые программы содержат чуть менее 100 инструкций: до 17 текстурных и 73 математических. Несмотря на то, что для проекта давно декларировалась поддержка Shader Model 3.0, в пиксельных шейдерах не используется ветвление и условные переходы, они вполне укладываются в возможности SM 2.x (что и реализовано в игре, просто в этом режиме отключается HDR рендеринг и instancing). В целом, шейдеры в игре используются для расчета освещения, фильтрации и наложения карт теней, наложения карт нормалей, параллаксмаппинга, используются в алгоритмах постфильтрации.

Графическим движком игры в основном используются шейдерные программы, написанные на HLSL, компилирующиеся по мере необходимости в специальный кэш. В игре дается выбор между использованием шейдеров версий 2.x и 3.0. На тестовой системе с видеокартой GeForce 7800 GTX, поддерживающей Shader Model 3.0, в режиме максимальных настроек применяются вершинные шейдеры версий 1.1, 2.a и 3.0 и пиксельные шейдеры версий 1.1, 1.4, 2.a и 3.0. Во всех пиксельных шейдерах версий 2.x и 3.0 сделаны оптимизации в виде расчетов с пониженной точностью (partial precision), они полезны для всех современных видеокарт NVIDIA, начиная с GeForce FX 5200 и заканчивая GeForce 7950 GX2, а для GeForce 8800 они уже ничего не дают.

Объем геометрии, обрабатываемый движком игры в пределах одного кадра на максимальных настройках с учетом geometry instancing, соответствует среднему уровню для современных 3D игр. Количество полигонов в кадре изменяется от 40000 до 1000000, сложность геометрии на разных уровнях отличается довольно сильно, есть уровни с 100000 средних треугольников на кадр (закрытые пространства), а есть — с 500000 (открытые уровни с большим количеством растительности). Среднее количество обрабатываемых треугольников в кадре на максимальных настройках по всей игре составляет примерно 300000 полигонов. Начиная с этого обзора, в общую статистику мы включаем и среднее количество вызовов отрисовки, так как это значение сильно влияет на производительность в Direct3D. В игре Call of Juarez среднее значение batch count составило 470, а максимальное — 1500, обе цифры достаточно велики, но для современной игры вполне допустимы.

Игра предъявляет большие требования к объему локальной видеопамяти, в разрешении 1024x768 с включенным HDR рендерингом и максимально возможными настройками качества, игра использует 100-350 мегабайт видеопамяти, в зависимости от игрового уровня. Это соответствует современному уровню технологичных 3D игр. Среднее использование видеопамяти в тестовом разрешении 1024x768 составляет 240-250 Мб, что на пределе возможностей обычных видеокарт среднего уровня. Максимальный отмеченный объем занятой видеопамяти составил 400 мегабайт, что по силам лишь видеокартам высокого уровня и некоторым из среднего.

Собранные данные счетчиков производительности NVIDIA по всем уровням игры показывают, что при максимальных настройках и разрешении 1024x768 видеочип GeForce 7800 GTX простаивал по счетчику gpu_idle в среднем около 10% времени, но значение сильно зависит от уровня, есть случаи с 0% простоя, когда производительность ограничена видеочипом, а есть уровни с 40% времени простоя GPU! Сложность пиксельных шейдеров высока, значение pixel_shader_busy составляет в среднем около 40%, есть уровни с 25%, а есть — с 55%. Среднее использование блоков вершинных шейдеров, по счетчику vertex_shader_busy, по сравнению с ранее протестированными нами играми, оказалось очень большим — целых 20%! Разброс по уровням невелик — от 10 до 30%, так что на instancing это полностью не списать. Налицо неплохая балансировка сложности пиксельных и вершинных шейдеров, а также использования возможностей блоков ROP и текстурирования. Средняя доля времени ожидания блоками пиксельных шейдеров выборки данных из текстур, по счетчику shader_waits_for_texture — 15%, доля ожидания окончания операций записи во фреймбуфер (shader_waits_for_rop) — лишь 8-9%, сказывается отключенный мультисэмплинг при HDR рендеринге, не поддерживаемый тестовой видеокартой для FP16 фреймбуфера. Две последние цифры говорят о небольшом упоре в операции с фреймбуфером и скорость текстурной выборки.

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

Счетчик Default SM2.0 SM2.0
MSAA 4x
Bilinear Shadows off Foliage low Trees off Post processing off
FPS 21.6 24.2 22.3 22.4 42.9 24.0 40.1 25.7
gpu_idle, % 0.4 0.6 0.3 0.3 0.4 0.1 0.3 0.3
vertex_shader_busy, % 30.1 36.2 33.1 31.0 34.9 31.9 9.1 34.5
pixel_shader_busy, % 48.6 48.4 47.6 50.3 40.3 43.9 56.0 47.5
triangle count, polys 614126 613353 615532 612317 347895 598456 169037 609544
batch count 476 922 926 475 359 468 353 428
shader_waits_for_texture, % 9.9 7.3 8.8 5.6 16.6 10.2 15.6 7.2
shader_waits_for_rop, % 4.4 3.0 7.6 4.5 6.0 4.9 8.0 1.9
video memory, Mb 221 212 233 222 197 219 209 220

Использовался один из сложнейших уровней, производительность на котором очень низкая. Средняя частота кадров приведена, чтобы было видно, насколько сильно сказывается изменение настроек игры на производительности. Максимальное влияние на скорость рендеринга оказали полное отключение теней и деревьев. Повлияло и использование шейдеров версии 2.x вместо 3.0 с одновременным отключением HDR рендеринга, а также отключение постобработки, но не в такой степени. Производительность игры в режиме HDR без антиалиасинга оказалась примерно равна скорости в режиме SM 2.0 с MSAA 4x и отключенным рендерингом повышенного динамического диапазона.

Средние значения счетчика gpu_idle отличаются незначительно, GPU был всегда загружен работой почти на 100%. Тут все настройки мало влияют, при отключении каких-либо возможностей нагрузка перекладывается на другие блоки, а FPS возрастает, что говорит о хорошей оптимизации движка игры. На значение vertex_shader_busy рассматриваемые настройки оказывают небольшое влияние, кроме специального режима с полностью отключенными деревьями (как раз на тестовом уровне их очень много). В этом режиме нагрузка на вершинные блоки значительно снижается, более чем в 3 раза. В остальных режимах разница была невелика. Значение pixel_shader_busy повышается в том же режиме (как раз то, о чем мы говорили выше — нагрузка на вершинные блоки снижается с одновременным повышением пиксельной) и в режиме билинейной фильтрации. И снижается в режимах с отключенными тенями и меньшим количеством травы — режим foliage low. Пиксельные блоки меньше загружены работой в случае включения антиалиасинга, в этом случае большее время тратится на ожидание окончания операций блендинга и записи во фреймбуфер.

Значения счетчика количества рассчитанных в кадре полигонов отличаются не слишком сильно в большинстве случаев, в небольшой разнице виновата погрешность измерения и подсчета средних значений. Треугольников рассчитывается ощутимо меньше в режимах с отключенными тенями (ведь объекты, состоящие из полигонов, рендерятся в те самые карты теней) и с отключенными деревьями. Посмотрите, насколько сильно сказывается отключение последних, получается, что львиная доля геометрии на таких уровнях игры как раз и содержится в моделях деревьев. И трава тоже свой вклад привносит — смотрите цифры режима foliage low.

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

Значения счетчиков локальной и системной видеопамяти объединены в одно значение. В режиме SM 2.0 отключается HDR рендеринг, и так как формат фреймбуфера меняется с FP16 на обычный 8-битный целочисленный, поэтому использование видеопамяти снижается. А в режиме с мультисэмплингом наоборот растет. Остальные изменение также понятны: отключение теней уменьшает требования к видеопамяти, похожее влияние оказывает и отключение рендеринга деревьев.

В этом обзоре в первый раз мы будем рассматривать и количество вызовов отрисовки, потраченное на рендеринг сцены (batch count). Оно определенным образом соотносится с количеством полигонов, но в режиме SM 2.0 отключается instancing, и вместо примерно 470 вызовов на отрисовку их тратится вдвое больше. Большое влияние на batch count оказывает отключение карт теней и деревьев, и небольшое — отключение постобработки.

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

Игра Call of Juarez создана небольшой польской компанией Techland, которая была основана в 1991 году и изначально занималась локализацией и дистрибуцией программного обеспечения и игр для польского рынка. И только в конце прошлого века Techland начала самостоятельную разработку игр, они выпустили более десятка проектов, основанных на Chrome Engine, также разрабатываются и готовятся к выходу новые игры, среди них — Chrome 2 и Dead Island. Вот список вышедших проектов производства этой компании:

  • Crime Cities (2000)
  • Pet Racer (2001)
  • Pet Soccer (2001)
  • Chrome (2003)
  • Xpand Rally (2004)
  • Chrome: SpecForce (2005)
  • GTI Racing (2006)
  • Call of Juarez (2006)

Все время разработки Call of Juarez компания не баловала нас большим количеством новостей, разработка игры шла сравнительно тихо и спокойно. Лишь в последний год перед релизом периодически появлялись новые скриншоты и новости. Официальный анонс игры состоялся в далеком июне 2004 года, проект тогда еще назывался The Lawman. Уже в то время среди шутеров от первого лица были распространены игры с заезженной тематикой Второй Мировой, борьбы с разного рода терроризмом или инопланетными захватчиками, войны во Вьетнаме и т.п. Польские разработчики из Techland решили отойти от этих вечных тем, и захотели сделать настоящий вестерн.

В их экшне от первого лица игроку дается возможность игры за двух главных персонажей: молодого Billy и опытного Reverend Ray. Это разделение влияет на геймплей, для Billy больше подходит stealth стиль прохождения и лазание по горам, а Reverend Ray отличается точной и быстрой стрельбой с двух рук и наличием бронежилета на теле, который позволяет выдерживать несколько попаданий. Справедливости ради нужно упомянуть вышедшие ранее Dead Man's Hand и Gun схожей тематики, так что поляки все-таки не были первыми.

Первые скриншоты игры по современным меркам смотрятся устаревшими, но по тем временам все было более чем неплохо. Techland, известная, прежде всего, играми Chrome и Xpand Rally, начала разработку проекта на доработанном игровом движке Chrome Engine, который уже на первых скриншотах показывал вполне достойные времен двухгодичной давности открытые пространства, неплохие модели персонажей и довольно сложные объекты уровней.

   

Очень давно, еще в мае 2005 года Techland объявили о том, что в Call of Juarez будут использоваться продвинутые эффекты интерактивного дыма и воды, а также анонсировали использование Shader Model 3.0 в своей игре. Естественно, к этому приложила руку NVIDIA, куда тут без нее. В том же самом мае на выставке E3 игру показали публике на стендах Techland и NVIDIA.

   

На скриншотах того времени из нового были видны попиксельное освещение моделей персонажей с применением карт нормалей, излишне яркий постфильтр bloom и имитация эффекта depth of field, сделанная на тот момент, скорее всего, еще в графическом редакторе.

В ноябре 2005 года компания Techland открыла официальный сайт будущей игры, соответственно, появились и новые скриншоты. Появлялись они и под самый конец прошлого года, на праздники.

   

   

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

В середине весны 2006 Ubisoft анонсировала, что издаст Call of Juarez для ПК в Северной Америке и Европе летом 2006 года. Но в июле 2006 года, когда должен был состояться выход игры, Ubisoft объявила о задержке североамериканского релиза. Зато появилась демо-версия Call of Juarez, а выход европейской версии был назначен на сентябрь 2006. В качестве причин откладывания релиза для США было названо желание выпустить игру одновременно на РС и консолях (видимо, нового поколения). Вероятно, одновременно с этим поляки дополнительно оптимизируют работу ПК версии игры, чтобы не расстраивать игроков из самой важной страны на планете.

   

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

Надо полагать, выход игры в США задержался еще и из-за того, что новая версия операционной системы от Microsoft — Windows Vista — выходит в продажу (не считая OEM поставок, которые уже начались) в начале 2007 года. Ведь еще в мае на выставке E3 на пресс-конференции Microsoft было заявлено, что игра входит в число стартовых игровых проектов для этой операционной системы. Call of Juarez попала туда вместе с Alan Wake, Company of Heroes, Crysis, Flight Simulator X, Halo 2, Hellgate: London, Age of Empires III: The WarChiefs, Battlefield 2142, F.E.A.R. Extraction Point, Heroes of Might and Magic V, Neverwinter Nights 2, Titan Quest, некоторые из которых отложены еще дальше, а многие уже вышли в версиях для Windows XP, также как и Call of Juarez (в Европе).

Call of Juarez появилась неожиданно для многих, новости об игре выходили нечасто, особенно до анонса Ubisoft о договоренности об ее издательстве под крылом этой компании. Более того, игра изначально разрабатывалась под другим именем — «The Lawman» (остатки прошлого имени можно наблюдать в некоторых из файлов игры) и немногие за ней следили.

   

Уровень графики на скриншотах 2006 года уже не отличался по технологиям от того, что мы увидели в релизе. Нам показали все основные особенности продвинутого движка игры еще лучше, на них были видны богатство деталей на уровнях, отличное попиксельное освещение, использование карт нормалей и карт высот для parallax mapping, динамические карты теней высокого разрешения для всей геометрии уровня (даже на мелких кустиках, см. левый скриншот), а также несколько ранее не виденных фильтров постобработки, в том числе heat haze, показанный на первой картинке из этой пары. Показали и воду, пока издалека, с отражениями, но без преломлений. В дальнейшем технологический уровень графики уже не изменялся, скриншоты показывали уровень картинки финальной версии.

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

Игра отличается хорошей сюжетной линией, необычным разделением на две части игры за разных персонажей. Но в данном обзоре нас больше интересует техническая сторона, а там есть на что посмотреть. Игровой движок дал возможность реализации отличных визуальных эффектов, все в игре сделано на очень хорошем техническом уровне, недаром NVIDIA помогала в разработке новой модификации Chrome Engine. В игре мы встречаем не только поддержку всех современных эффектов и отличную детализацию игрового мира, но и нечто новое — приближение к физически правильному поведению пыли, дыма и огня в игре. Это, пожалуй, первая игра, где мы видим, как объекты и ветер могут влиять на эти природные эффекты, хотя бы и в такой зачаточной стадии.

Call of Juarez основана на движке Chrome Engine собственного производства компании Techland, впервые использованного в известной игре жанра FPS — Chrome. На его основе создаются и другие проекты компании. Игра использует третью и пока последнюю версию движка Chrome Engine, который использовался при создании игр Chrome, Xpand Rally и GTI Racing. В этих играх мы видели огромные ландшафты с плотной растительностью, а новая версия движка, разработанная в тесном сотрудничестве с NVIDIA, была значительно улучшена и использует шейдеры версии 3.0, а также все современные возможности относительно графической части.

Особенности Chrome Engine 3: полная поддержка возможностей DirectX 9, в том числе Shader Model 3, активное использование пиксельных и вершинных шейдеров, поддержка 64-битных форматов фреймбуфера для реализации High Dynamic Range рендеринга, поддержка многопроходного рендеринга, статическое и динамическое попиксельное освещение методом Блинна-Фонга с использованием spherical harmonic освещения, наложение карт нормалей, а также parallax mapping, называемый авторами virtual displacement mapping, наложение теней при помощи лайтмапов для статики и динамические карты теней с аппаратной поддержкой, качественное предрассчитанное освещение с использованием вторичного освещения, оптимизированные алгоритмы рендеринга ландшафтов с симуляцией анимированной растительности, реализация водных поверхностей с динамическими волнами, отражениями и преломлениями, встроенные постэффекты: depth of field, bloom, refraction, distortion и др., световые спецэффекты, эффекты, основанные на системе частиц, симуляция дыма и пыли с реакцией на движение объектов и воздуха и многое другое.

Spherical harmonic lighting — это техника рендеринга в реальном времени, использующая модель глобального освещения и дающая более реалистичное затенение. Эта техника расчета освещения трехмерных моделей была впервые показана на Siggraph в 2002 году исследователями Sloan, Kautz и Snyder, она включает длительный процесс предварительных расчетов, но рассчитанные однократно данные могут использоваться в дальнейшем для динамического освещения с некоторыми ограничениями. Интенсивность освещения и даже положение источников света при этом могут изменяться в реальном времени. Техника получила применение в современных играх, в том числе в уже рассмотренном нами ранее Serious Sam 2.

В игре используется физический движок Open Dynamics Engine, состоящий из двух основных компонентов: движок симуляции динамики rigid body и движок расчета столкновений объектов. ODE относится к так называемому свободному программному обеспечению, распространяющемуся под лицензиями BSD и LGPL. Его разработка началась в 2001 году, он использовался во множестве игр, например BloodRayne 2. Физический движок поддерживает несколько видов геометрических фигур: box, sphere, capsule, trimesh и cylinder и является альтернативой более известным и дорогим продуктам.

В Call of Juarez представлены уровни в виде больших открытых пространств, есть и несколько так называемых indoor уровней. Но в основном игра проходит на открытых локациях большого размера, искусственно ограниченных разработчиками по геймплейным соображениям. Одной из важнейших особенностей движка Chrome Engine является возможность отображения больших открытых пространств с густой растительностью, причем каждое дерево отличается от соседнего, их основные характеристики задаются параметрически. Отдельной гордостью разработчиков является то, что в рендеринге и анимации растительности используются возможности вершинных и пиксельных шейдеров версии 3.0, включая geometry instancing, позволяющий снизить количество вызовов функций отрисовки Direct3D. Еще одним важным отличием Chrome Engine является то, что игры, на нем основанные, поставляются с удобными утилитами для модификации и создания контента, не ограниченного созданием карт, возможно и создание полноценных модификаций. Примеры открытых и закрытых пространств игры представлены на скриншотах:

Outdoor     Outdoor

Indoor     Indoor

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

В Call of Juarez применяется мультитекстурирование вплоть до 8-10 текстур на пиксель: основная текстура, карта высот (для parallax), карта нормалей, карты теней, specular карта, лайтмап и другие. Наложение карт нормалей применяется для большого количества поверхностей, разрешение большинства текстур достаточно высоко, но в редких случаях детализации немного не хватает, хотя чаще всего разрешение карт нормалей и остальных текстур достаточно, именно из-за нормалмаппинга модели и уровни насыщены мелкими деталями.

Normal mapping     Normal mapping

Textures     Textures

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

Parallax mapping     Parallax mapping

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

Models     Models

Models     Models

Посмотрите — модели людей очень хорошо выполнены, со среднего расстояния и не сказать, что им где-то недостает деталей, как во многих других играх. Даже вид с близкого расстояния (первый скриншот) не портит игру, карты нормалей хорошо помогают, хотя и видны угловатые края на плечах и головном уборе. Разработчики могли бы сделать более сложные модели, конечно, но они и так неплохи. Детализация уровней традиционно похуже, преобладают плоские и простые объекты. Но все опять спасает природа, на втором скриншоте виден достойный ландшафт с неплохой растительностью. Кстати, для отрисовки многочисленной растительности: деревьев, травы и некоторых других мелких объектов, используется instancing, который снижает количество вызовов отрисовки и, соответственно, лишних затрат времени на работу CPU.

Тени в игре рассчитываются от одного источника освещения — солнца или луны, и только на открытых пространствах. Но для всей геометрии в сцене, тени отбрасывает всё, кроме травы, также нормально реализовано самозатенение. Как уже было написано, движком Chrome Engine 3 используются карты теней, в том числе аппаратные, причем применен гибко настраиваемый алгоритм фильтрации с несколькими уровнями качества. Алгоритмы теней на картах NVIDIA и ATI немного отличаются, используются аппаратные возможности той и другой стороны, специальные текстурные форматы у NVIDIA и возможность одновременной выборки четырех значений у ATI (FETCH4). На NVIDIA используется аппаратная фильтрация карт теней, на ATI — запрограммированная в шейдере, подобно тому, как это реализовали в двух последних 3DMark.

Shadows     Shadows

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

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

Water     Water

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

Particles     Particles

В игре очень много эффектов постобработки, применяются некоторые из распространенных фильтров: bloom — фильтр, увеличивающий яркость светлых участков изображения; depth of field — эффект глубины резкости; heat haze, refraction и distortion — эффекты искажения изображения; blur — полноэкранное размытие картинки; а также некоторые другие постфильтры. Перечисленные постэффекты можно увидеть на скриншотах:

Postprocessing (bloom) Postprocessing (bloom) Postprocessing (bloom) Postprocessing (bloom)
Postprocessing (DOF) Postprocessing (blur) Postprocessing (DOF) Postprocessing (blur)
Postprocessing (flare) Postprocessing (motion blur) Postprocessing (flare) Postprocessing (motion blur)
Postprocessing (refraction) Postprocessing (misc) Postprocessing (refraction) Postprocessing (misc)
Postprocessing (heat haze) Postprocessing (misc) Postprocessing (heat haze) Postprocessing (misc)
Postprocessing (blur) Postprocessing (misc) Postprocessing (blur) Postprocessing (misc)

В игре много открытых пространств с разными условиями освещения, поэтому HDR рендеринг и tone mapping в ней весьма полезны. HDR рендеринг сделали по-настоящему — это полноценный рендеринг в 16-битный формат буфера с плавающей точкой. HDR рендеринг используется для улучшения качества постфильтрации и имитации эффекта адаптации человеческого зрения к изменению условий освещения. Используется 16-битный формат буфера D3DFMT_A16B16G16R16F.

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

Tone mapping     Tone mapping

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

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

Естественно, вся эта красота не далась малой кровью, комфортную игру на максимальных настройках и в высоких разрешениях могут себе позволить разве что счастливые обладатели видеокарт NVIDIA GeForce 8800, так как на всех остальных она тормозит в той или иной степени. Что включает ее в список наиболее требовательных игр, таких как Oblivion и таких, какой была F.E.A.R. во время своего выхода. Игра технологически сложна и использует многие возможности современных видеокарт, плавная работа на максимальных настройках обеспечивается только на видеокартах высокого уровня. Для остальных видеокарт нужно будет искать баланс между частотой смены кадров и качеством картинки, потратив некоторое время на поиск подходящих значений графических настроек. Нужно отметить, что новая версия Chrome Engine хорошо настраивается под возможности игровой системы, в статье мы рассмотрим имеющиеся возможности по настройке игре подробнее.

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

CoJ.exe -record hunt

hunt — это название уровня, который загрузит игра, и после этого начнет запись демки. Список названий уровней можно найти в конце статьи. Записанная демка сохраняется в файл "demo.rec", расположенный в корневом каталоге игры. Чтобы проиграть полученную демку, нужно запустить игру с такой командной строкой:

CoJ.exe -input demo.rec -play

А посмотреть статистику производительности в виде средней частоты кадров можно в конце файла:

\Documents and Settings\имя пользователя\My Documents\call of juarez\Out\logs\crash.log

Time of playing game: 220.045151s
Updated frames: 5497 Rendered frames: 4778
Average FPS: 21.713726

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

В обзоре мы рассмотрим влияние графических настроек игры с двух сторон, принимая за точку отсчета максимальные и минимальные настройки в разрешении 1024x768 и 640x480, соответственно. При минимальных настройках качества мы будем определять отрицательное влияние включенной на максимальное значение настройки, а при максимальных — наоборот, прибавление в кадрах в секунду от каждой установки, выкрученной на минимум. Это позволит более полно оценить влияние каждой настройки на общую производительность, и будет полезно как для пользователей с недостаточно мощными системами, желающими получить хорошее качество, так и для тех, кто хочет узнать, какие настройки имеет смысл снизить в первую очередь.

Одной из наиболее раздражающих игроков особенностей игры является долгое время загрузки уровней. Даже очень долгое. Это связано с некоторыми специфическими решениями, во-первых, она не использует динамическую подгрузку, как упомянутый Oblivion, и загружает в память сразу все данные уровня, на что требуется много времени. Во-вторых, при первой загрузке уровней, при смене используемой шейдерной модели из настроек игры и при обновлении видеодрайвера, она заново компилирует используемые на уровне вершинные и пиксельные шейдеры, коих в игре очень много, поэтому и время загрузки растет очень сильно. Этот шейдерный кэш расположен в папке \Documents and Settings\имя пользователя\My Documents\call of juarez\Out\cache\Shaders, в ней расположены подкаталоги, отдельные для каждой установленной видеокарты, использованной версии шейдеров, версии видеодрайвера и т.п.

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

Кэш для шейдеров иногда помогает решить проблемы при помощи его обнуления — удаления всех файлов из вышеуказанной папки. В этом случае игра создаст нужные ей файлы заново. Такие действия иногда помогают решить странности с получаемым FPS и некорректном применении графических настроек игры.

Call of Juarez предлагает достаточно большое количество настроек качества рендеринга, которые нуждаются в подробном описании. Все видеонастройки расположены в меню "Options" игры, мы рассмотрим подробно каждую из них.

Настройки сведены в один экран, присутствуют и предустановленные наборы настроек максимальной производительности (Best Perfomance), сбалансированный (Balanced) и качественный (Best Quality). Последний пункт не обеспечивает максимального качества, а первый вполне соответствует названию. Рассмотрим значения отдельных настроек, которые они принимают при перечисленных режимах:

Настройки Default Performance Balanced Quality
Resolution 1024x768 1024x768 1024x768 1024x768
FSAA 0 0 0 0
TextureQuality Normal Very Low Low Normal
Filtering Anisotropic Bilinear Trilinear Anisotropic
Shadows Normal None Low Normal
Shadow Map Size 1024 1024 1024 1024
Material Quality 0 3 1 0
WaterQuality 0 3 1 0
GrassQuality 0 2 1 0

Логика разных режимов более-менее понятна, есть лишь несколько вопросов и претензий. Во-первых, предустановленные режимы почему-то не изменяют разрешение экрана, которое очень сильно влияет на производительность. Во-вторых, непонятно, почему разрешение карт теней всегда соответствует 1024x1024? Для производительного режима можно было бы сделать и меньшее значение, а для качественного возможно лучше подошло бы большее (2048x2048). А в остальном, все неплохо продумано. Посмотрим, как эти режимы отличаются друг от друга визуально:

Best performance settings     Balanced settings

Best quality settings     Maximum settings

Как видите, два качественных режима отличаются от остальных наличием эффектов постобработки, продвинутым рендерингом воды, с отражениями и преломлениями, более качественными тенями, анизотропной текстурной фильтрацией, а также качеством текстур и материалов. Сбалансированный режим лучше производительного наличием динамических теней, качеством текстур и материалов. Если принять производительность в режиме Balanced за 100%, то скорость Best Performance соответствует 195%, Best Quality — 82%, а производительность на максимальных настройках равна 61%. Таким образом, оптимальным для тестовой системы является режим Best Quality, так как максимальные настройки слишком сильно снижают производительность, а разница в скорости между Balanced и Quality не так велика, как разница в качестве.

Подробные настройки качества рендеринга расположены слева от предустановок, именно их и нужно настраивать для получения оптимального сочетания качества и производительности так, чтобы получить среднюю частоту кадров хотя бы больше 35-40 FPS. Основные параметры игры, на которые следует обратить внимание: «Resolution», «Shader Model», «Antialiasing», «Texture Filtering», «Material Quality» и особенно «Shadows». Рассмотрим все имеющиеся настройки.

  • Resolution (640x400, 640x480, 720x480, 720x576, 800x600, 848x480, 960x600, 1024x768, 1088x612, 1152x864, 1280x720, 1280x768, 1280x800, 1280x960, 1280x1024, 1360x768, 1600x900, 1600x1024, 1600x1200, 1920x1080, 1920x1200, 1920x1440, 2048x1536) — эта опция управляет разрешением рендеринга, то есть количеством пикселей по горизонтали и вертикали, которые игра будет отображать. Список разрешений в игре довольно широк, все реально нужные разрешения в нем есть, присутствует и самое востребованное из-за широкого распространения LCD мониторов разрешение 1280x1024. Если нужного разрешения нет в меню, можно попробовать пользовательскую установку, о которой написано в последней части статьи.

    Выбор разрешения очень сильно влияет на производительность, разница между разрешениями 640x480 и 1024x768 на тестовой системе с установленной видеокартой GeForce 7800 GTX составила 43% для максимальных настроек и 20% — для минимальных, а между 1024x768 и 1600x1200 — 72% на максимуме и 54% на минимальных настройках. Даже при низких настройках скорость в 1600x1200 заметно ниже, чем в 1024x768 и 640x480, поэтому на этот параметр нужно обращать особое внимание, игра крайне требовательна к эффективной скорости заполнения (филлрейту), зависящей от рабочей частоты видеочипа и количества блоков ROP, а также пропускной способности памяти, в свою очередь зависящей от частоты и ширины шины.

  • Max refresh rate (зависит от системы, на тестовой для разрешения 1024x768 доступны значения от 60 до 120 Hz) — параметр, управляющий значением частоты обновления экрана, используемый игрой. Обычно это значение ограничено возможностями используемого устройства вывода, но иногда его драйверы сообщают системе неправильные данные. Для LCD мониторов этот параметр менее значим, чем для мониторов с электронно-лучевой трубкой, для них можно установить значение 60 Hz, все равно частота кадров в игре нечасто поднимается выше этого уровня на большинстве систем. А для ЭЛТ-мониторов лучше будет выставить максимально возможное значение, чтобы избежать мерцания.

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

  • Full screen (Off/On) — эта настройка определяет, будет ли использоваться полноэкранный вывод изображения или нет. Обычно, что соответствует настройке по умолчанию, нужно использовать полноэкранный режим, но в некоторых редких случаях может возникнуть необходимость использования оконного. Естественно, разрешение, установленное в настройках игры в этом случае не должно превышать разрешения рабочего стола.

  • Shader model (2.0/3.0) — это одна из важнейших настроек, она определяет использование версии шейдерной модели вместе с использованием HDR рендеринга. Возможен выбор из двух значений, но только на видеокартах с поддержкой шейдеров версии 3.0. При использовании современных видеокарт с поддержкой SM 3.0, таких как NVIDIA GeForce серий 6, 7 и 8, и ATI RADEON серии X1000, лучшее качество картинки при приемлемой производительности обеспечивается на максимальном значении настройки. В случае более старых видеокарт, без поддержки шейдеров версии 3.0, выбор ограничивается значением SM 2.0. Но и для самых слабых видеокарт с поддержкой SM 3.0 есть смысл в установке настройки в значение 2.0 для увеличения производительности, так как в этом режиме не используется HDR рендеринг и некоторые из эффектов постобработки. Визуальную разницу между режимами можно оценить по следующим двум парам скриншотов, слева — режим SM 2.0, справа — 3.0 с HDR:

    SM 2.0 mode     SM 3.0 mode

    SM 2.0 mode     SM 3.0 mode

    Самую большую разницу привносит bloom, работающий в игре только одновременно с HDR. Как было указано выше, выбор режима SM 3.0 означает автоматическое использование HDR рендеринга, а также tone mapping с эффектом адаптации человеческого зрения к изменяющимся условиям освещения и соответствующих эффектов постфильтрации, таких, как depth of field и bloom, расчета преломлений для прозрачных поверхностей (вода, окна, бутылки). Только при включении SM 3.0 используется и instancing, позволяющий одним вызовом отрисовки (DrawPrimitive) посылать на обработку сразу несколько объектов, таких, как трава, кусты, камни и т.п.

    Соответственно, режим SM 3.0 в Call of Juarez приносит как увеличение производительности из-за instancing, так и его снижение от использования FP16 буферов для рендеринга и применения дополнительных постэффектов. В игре вполне могут быть сцены, где SM 3.0 быстрее, но в основном скорость больше теряется, чем добавляется, и поэтому режим SM 3.0 менее производителен по сравнению с SM 2.0, особенно на таких слабых видеокартах, как GeForce 6200. Влияние Shader Model на производительность тестовой системы оказалось не так велико, разница в производительности составила около 10-11% и на максимальных настройках качества, и на минимальных.

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

  • Antialiasing (Off/2x/4x) — обычная для современных игр настройка, управляющая режимом мультисэмплинга. Доступна только при установке предыдущей опции в значение "Shader Model 2.0", но на видеокартах серий ATI RADEON X1000 и NVIDIA GeForce 8000 антиалиасинг в игре можно форсировать из настроек видеодрайвера. В первом случае для этого может понадобиться установка специального драйвера, называемого "Chuck Patch". Во всех остальных случаях традиционно рекомендуется установка уровней мультисэмплинга и анизотропной фильтрации из настроек игры, а не драйвера.

    На производительность в игре на GeForce 7800 GTX мультисэмплинг уровня 4x влияет примерно как HDR рендеринг, разница на максимальных настройках составила 9%, а на минимальных — 6%. Но это в случае тестового уровня с большим количеством деревьев, травы и прочих объектов, где основное ограничение производительности не накладывается пропускной способностью памяти и филлрейтом, на других уровнях разница вполне может быть большей.

  • Texture filtering (Bilinear, Trilinear, Anisotropic) — установка типа текстурной фильтрации, используемого рендером игры. Доступны три привычные значения: Bilinear, Trilinear и Anisotropic, но конкретный уровень анизотропной фильтрации выбрать невозможно. Вероятно, игрой выбирается одно из максимальных значений: 16x или 8x. Для форсирования иного уровня анизотропной фильтрации, отличного от максимального, придется форсировать его при помощи настроек драйвера видеокарты, а в меню игры выставить значение Trilinear. Есть возможность улучшения качества картинки при помощи одновременного форсирования анизотропной и трилинейной текстурных фильтраций, по сравнению с тем, что предлагают внутриигровые настройки — для этого нужно изменить конфигурационные файлы так, как написано в последней части статьи.

    Bilinear filtering     Anisotropic filtering

    Разница в качестве картинки очевидна, поверхности игры с качественными текстурами сильно страдают от отсутствия анизотропной и трилинейной фильтраций. Разница в производительности между режимами Bilinear и Trilinear на тестовой системе при максимальных настройках составила 2%, между Trilinear и Anisotropic — те же 2%, а одновременное их включение снижает производительность еще на пару-тройку процентов дополнительно. Влияние анизотропной фильтрации при минимальных настройках оказалось еще выше — 8%.

  • Brightness ("ползунок" из 10 возможных значений) — настройка, управляющая яркостью изображения. Она не влияет на производительность, только на само изображение. Тут нужно лишь отметить, что из-за отсутствия вида постфильтрации bloom в режиме "Shader Model 2.0" картинка получается заметно менее яркой, и настройку нужно будет исправлять при переходе от SM 3.0 к SM 2.0 и обратно. И в режиме SM 2.0 игре явно не хватает яркости и контрастности, игра явно предпочитает режим шейдерной модели 3.0.

  • Shadows (Off/Low/Medium/High) — одна из самых важных настроек в игре, управляющая сложностью алгоритма фильтрации и наложения теней. Установленное в ней значение очень сильно влияет на итоговую производительность. На выбор пользователя предлагается четыре значения, от полностью отключенных динамических карт теней (предрассчитанные тени в лайтмапах остаются всегда), до самого тяжелого варианта с многочисленными текстурными выборками из карт теней с последующей фильтрацией.

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

    Shadows None     Shadows Low

    Shadows Medium     Shadows High

    На максимальном значении тени действительно качественные и мягкие, в двух других уже видны «лесенки», хотя издалека разница не так и велика. Большее количество сэмплов сильно снижает производительность, а значения «Low» и «Medium» равны по качеству картинки и производительности.

    Тени в игре весьма продвинутые и отбрасываются от всех объектов, кроме травы (мелкие кустики и камни тоже отбрасывают тени). А накладываются тени на все поверхности вообще, в том числе на траву, и самозатенение в игре есть. Влияние от включения теней на производительность игры весьма велико, это самая важная настройка в игре по этому параметру, поэтому на нее нужно обратить особое внимание. Так, на тестовой системе отключение теней дает двукратный прирост производительности по сравнению с максимальным режимом! При минимальных настройках включение режима High для теней дает 85% падение производительности. Режим Low отличается от High на 24% при максимуме качества, и на 16% — при минимальных установках и его применение тоже имеет смысл.

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

  • Shadow map size (1024/2048) — это значение изменяет разрешение карт теней, используемых игрой. Возможные значения означают использование карт теней с разрешением 1024x1024 и 2048x2048 пикселей соответственно. Разница между значениями в качестве картинки хорошо заметна только при внимательном рассмотрении с близкого расстояния. Более высокое разрешение карт теней дает большую резкость на их краях, что особенно важно для границ теней при самозатенении, что показано на сравнительных картинках.

    Shadow Map Size 1024     Shadow Map Size 2048

    Естественно, разрешение 2048x2048 требует больше видеопамяти и снижает производительность, поэтому оптимальным значением можно считать установку разрешения карт теней в 1024x1024. Так получаются более мягкие тени, пусть и не такие детальные. Зато производительность больше. Влияние разрешения карт теней на скорость игры получилось не большим, но и не маленьким, включение режима 1024 дало 10% прирост производительности при максимальных настройках.

  • Depth of field (Off/On) — эта настройка управляет эффектом постобработки depth of field, то есть размытия объектов в зависимости от их положения относительно фокуса камеры. Эффект работает только в режиме "Shader Model 3.0", при соответствующей аппаратной поддержке. Данный постфильтр используется при симуляции прицеливания и в так называемом "режиме концентрации", разница в качестве картинки показана на скриншотах:

    DOF off     DOF on

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

  • Quick body disappear (Off/On) — параметр включает специальный режим, в котором мертвые тела врагов исчезают из сцены быстрее, чем обычно. Это помогает добиться более высокой производительности в сценах с большим количеством персонажей. В отключенном режиме трупы также исчезают, но по происшествию большего времени. На производительности это может сказываться, так как чем больше моделей персонажей выводится на экране, тем ниже скорость рендеринга.

  • Material quality (Very Low/Low/Medium/High) — этот параметр управляет качеством материалов для большинства поверхностей в игре. Так, настройка управляет использованием карт нормалей, включением техники parallax mapping, эффектами преломления и отражения. Доступны четыре значения, каждое из которых отличается используемыми эффектами и качеством материалов для моделей людей и остальных объектов в сцене. Разница в качестве между режимами существенна:

    Material quality Very Low     Material quality Low

    Material quality Medium     Material quality High

    Material quality Very Low     Material quality Low

    Material quality Medium     Material quality High

    Как видите, разница заметна как на моделях людей, так и на других поверхностях: стенах и окнах дома и т.п. При значении «Very Low» абсолютно все эффекты отключаются, и поверхности становятся плоскими. В режиме «Low» добавляется нормалмаппинг на моделях, изменяется эффект прозрачности. «Medium» включает более качественный расчет освещения — карты нормалей на всех поверхностях, добавляет блики, отражения и преломления. А «High» отличается использованием техники parallax mapping на некоторых поверхностях.

    Настройка может сильно повлиять на производительность разве что на слабых системах, на тестовой я не нашел никакой разницы в скорости для режима максимальных настроек, а при минимальных разница была равна лишь 5-7%.

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

    Texture quality Low     Texture quality Medium

    Texture quality High

    Значение "Low" обеспечивает весьма низкую детализацию поверхностей, но вместе с тем самую высокую производительность и требует меньшего количества видеопамяти. Но для современных видеокарт с 256 Мб памяти и более единственно правильным режимом будет "High", так как разница в производительности совсем невелика, на тестовой системе она составила менее 2% в обоих используемых режимах.

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

    Foliage quality Low     Foliage quality Medium

    Foliage quality High

    Видно, что каждый режим включает разное количество мелкой растительности в сцене. А на количество и детализацию деревьев и больших кустов настройка влияния не оказывает. Но, так как для отрисовки травы требуется большое количество вызовов отрисовки, сцена в таком случае содержит большее количество полигонов, да еще и используются текстуры с каналом прозрачности, настройка может оказывать заметное влияние на скорость игры. Так, включение режима «Low» дало прирост производительности в 13% по сравнению с «High» на максимальных настройках, и 6% — при минимальных. Так что это еще один параметр, который необходимо снижать в случае нехватки производительности.

В секции производительности остается отметить, что на тестовой системе в разрешении 1024x768 с включенным HDR рендерингом, отключенным антиалиасингом, который не поддерживается видеокартой для FP16 фреймбуфера, анизотропной фильтрацией 16x, а также остальными максимальными настройками качества, среднее количество кадров в секунду было равно всего лишь 40-45 FPS, а минимальное значение иногда опускалось ниже 20 FPS. Более высокая средняя и минимальная частота кадров при максимальных настройках обеспечивается только видеокартами самого высокого уровня, начиная с ATI RADEON X1900 XT и NVIDIA GeForce 7900 GTX. Без учета антиалиасинга. С MSAA уровня 4x даже ATI RADEON X1950 XTX не дает 30 средних FPS, в этом сможет помочь только GeForce 8800…

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

Call of Juarez использует несколько конфигурационных файлов, которые могут быть исправлены пользователем для еще более тонкой настройки игры. Файлы обычно располагаются по адресу \Documents and Settings\имя пользователя\My Documents\call of juarez\Out\Settings и имеют расширение *.scr. Это обычные текстовые файлы, которые можно отредактировать любым доступным способом, начиная с встроенного в систему Notepad. Как обычно, перед изменением файлов очень желательно создать их резервные копии — на всякий случай.

Подобных файлов у игры несколько, используемые в них опции легко понятны из названий: Audio.scr, Controller.scr, Game.scr и Video.scr. Нас больше всего интересует последний, но и в Game.scr есть кое-что любопытное. Каждый из файлов содержит список настроек, начинающихся с символа "!", они служат для описания возможных настроек и их не следует изменять. Помимо параметров, которые соответствуют настройкам из меню игры, доступны еще несколько полезных команд. Рассмотрим самые интересные…

Сначала обратим внимание на файл Game.scr, в нем есть всего три настройки:

  • ViewDistance(i) (вероятно, возможны значения от 1 до 8) — к сожалению, никакие значения не изменяли ни производительность, ни качество графики, хотя по названию можно предположить, что в других играх на движке Chrome Engine опция используется для установки глубины прорисовки.


  • DepthOfField(i) (0 или 1) и QuickBodyDisappear(i) (0 или 1) — оба параметра полностью соответствуют тем, что есть в настройках, доступных из меню игры.

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

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

  • FSAA(i) (значение количества сэмплов) — настройка мультисэмплинга, полностью соответствующая игровой настройке. Значение 0 определяет отсутствие антиалиасинга, а остальные значения соответствуют количеству MSAA сэмплов.

  • TextureQuality(s) (VeryLow/Low/Normal/High) — настройка, ответственная за разрешение текстур. Также существует в меню игры, но ее значения по каким-то причинам не соответствуют внутриигровым. Так, значение параметра в "Video.scr" равное "Normal" соответствует "High" из игры, а "VeryLow" равно просто "Low". Установка параметра в текстовом файле в "High" ничего не меняет в качестве картинки и сбрасывается в значение "Normal".

  • Filtering(s) (Bilinear/Trilinear/Anisotropic/AnisotropicTrilinear) — это опция настройки текстурной фильтрации, присутствующая в меню графических настроек игры. Ее единственным отличием от того, что мы видим в игре, является возможность установки значения "AnisotropicTrilinear". По идее, это значение должно включать трилинейную и анизотропную фильтрации одновременно, но разница в качестве картинки весьма невелика. Измерения производительности показывают, что "AnisotropicTrilinear" немного медленней обычного "Anisotropic", примерно на 3-4%, так что похоже, что какие-то изменения происходят.

  • Shadows(s) (None/Low/Normal/High/VeryHigh) — настройка, которая есть и в меню игры, она управляет качеством фильтрации и наложения теней. В отличие от внутриигровых, среднее значение называется "Normal", а не "Medium", также есть и значение "VeryHigh", установка которого не имеет никакого эффекта.

  • ShadowMapSize(i) (1024/2048) — значение полностью соответствует игровой настройке, определяющей разрешение карт теней. Установка значений, кроме 1024 и 2048 также возможна, но проверялись только более низкие цифры. Так, при значении 256 игра будет использовать карты теней разрешением 256x256, что может быть полезно для некоторых систем.

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

  • MaterialQuality(i) (0/1/2/3) — опция полностью соответствует одноименной в 3D настройках игры. Она регулирует качество рендеринга материалов, включая и отключая такие эффекты, как нормалмаппинг, параллаксмаппинг, преломления и отражения. Но настройка "Material quality" из игры регулирует не только упомянутую, но и еще одну — следующую.

  • WaterQuality(i) (0/1/2/3/4) — настройка управляет качеством рендеринга водных поверхностей игры. При ее помощи можно снизить качество водных поверхностей, независимо от качества остальных материалов. Для некоторых локаций и слабых систем снижение качества воды имеет определенный смысл, производительность может вырасти. Значение "4" полностью отключает рендеринг воды, а все остальные по какой-то причине не приносят ожидаемого эффекта.

  • GrassQuality(i) (0/1/2) — настройка, аналогичная "Foliage quality" из игры. Чем ниже значение, тем большее количество пучков травы будет размещаться на ландшафте уровня. Значения 2, 1 и 0 соответствуют настройкам Low, Medium и High, а большие значения, недоступные для настройки из меню игры, могут использоваться на самых слабых системах для повышения скорости.

  • FXQuality(i) (0/1/2/3/4) — эта опция недоступна из меню и не имеет никакого эффекта. Хотя хотелось бы, чтобы она управляла, например, плотностью частиц в соответствующих эффектах.

  • EnvQuality(s) (FullDynamic/RareDynamic/Static) — судя по названию, эта настройка должна отвечать за качество environment maps — карт среды. Эти специальные текстуры используются при создании эффектов отражения и преломления и др. Текстовые названия значений говорят о том, что движок игры предусматривает возможность использования статических карт среды и динамических с двумя уровнями частоты обновления их содержимого. Но в данной игре возможность не реализована, значение настройки никак не влияет на производительность и качество эффектов отражения и преломления.

  • ShaderPath(i) (0/1/2/3) — настройка, соответствующая "Shader Model" из игровых настроек. При установке значения "3" используются пиксельные и вершинные шейдеры версии 3.0, значение "2" соответствует "Shader Model 2.0". Движком также поддерживаются еще два возможных значения: "0" для Shader Model 1.1 и "1" — для Shader Model 1.4, но практического значения в Call of Juarez они не имеют, так как с ними игра чаще всего не загружается.

  • PostProcess(s) (None/Simple/Normal) — эта настройка недоступна из игры, но позволяет более гибко управлять наложением эффектов постобработки в игре, такими, как bloom, depth of field, преломления, а также, по какой-то странной причине влияет на рендеринг огня и дыма. Эта настройка удобна тем, что можно отключить постобработку (и HDR рендеринг) при дальнейшем использовании шейдеров версии Shader Model 3.0 и instancing для улучшения производительности. Разница в производительности между режимами None и Normal для Shader model 3.0 и остальных максимальных настройках составила 18%. Для минимальных — 12%.

    Postprocessing None     Postprocessing Normal

    Обычное значение настройки — «Normal», оно обеспечивает все поддерживаемые постэффекты. Значение «None» отключает все постфильтры (убираются вспышки выстрелов, дым, пыль и огонь), а «Simple» отключает лишь некоторые из них, причем их список зависит от установки Shader Model. Для SM2 отключаются преломления прозрачных поверхностей и heat haze от огня, но сам огонь и дым остаются на месте, а для SM3 отключается HDR рендеринг, постэффекты bloom, DOF, refraction, также не рендерится дым и огонь. Надо отметить, что отключение преломлений выражается в том, что все прозрачные поверхности становятся черными, это относится к воде, окнам и т.п.

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

Для отключения вводных видеороликов нужно отредактировать файл DebugConf.scr в текстовом редакторе, добавив к нему две строки:

!NoLogos()
NoLogos()

После этого игра будет запускаться, и сразу входить в меню, без показа всех вступительных роликов.

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

!UseDeveloperKeys(i)
UseDeveloperKeys(1)



Параметры командной строки для CoJ.exe

Самым интересным командным ключом игры с точки зрения повышения производительности является ключ "-notrees", отключающий рендеринг всех деревьев. Если запустить игру таким образом:

CoJ.exe -notrees

то ни одно дерево в игре не будет отрисовываться, что вызывает огромный прирост производительности, сравнимый с прибавкой скорости, получаемой в результате отключения теней (на нашей системе в тестовой демке на outdoor уровне разница получилась около 85-90%!!!). Естественно, на вид игра становится весьма странной (см. скриншоты), но в качестве самого последнего средства повышения производительности для владельцев слабых систем это решение вполне подойдет.

Trees off     Trees on

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

CoJ.exe -safemode

Еще одна команда указывает игре сразу загрузить определенный уровень:

CoJ.exe -level название_уровня

Названия уровней в игре:
home (состоящий из подуровней home1, home2, home3 и home4)
murder (murder1)
saloon (saloon1 и saloon2)
scarp (scarp1, scarp2, scarp3 и scarp4)
mine (mine2, mine3 и mine4)
train (train1 и train2)
ranch (ranch1, ranch2 и ranch3)
hijack (hijack1, hijack2, hijack3 и hijack4)
hunt (hunt1)
ride (ride1)
cemetery (cemetery1 и cemetery2)
dungeons (dungeons1 и dungeons2)
final (final1 и final2)





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

iXBT BRAND 2016

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

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

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

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