Графические технологии в играх: F.E.A.R.


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

Разработчик: Monolith Productio ns, Inc
Издатель: Vivendi Universal Games
Дата выхода: Октябрь 2005 г.
Графический API: Direct3D 9

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

В F.E.A.R. используется игровой движок Jupiter Extended ("Jupiter EX") Technology от Touchdown Entertainment. Изначально Lithtech был разработан собственными силами Monolith Productio ns, а затем команда, работавшая над игровым движком, была выделена из Monolith в отдельную, названную Touchdown Entertainment. Последняя известная версия движка отличается от предыдущих, прежде всего, использованием новейшего Direct3D 9 рендерера и физического движка Havok.

Так как в рамках данного материала нас интересует 3D часть движка, поговорим именно о ней. Jupiter EX использует новый Direct3D 9 рендерер, гибкий и расширяемый, использующий описания материалов для рендеринга всех объектов. Каждый материал связан с HLSL шейдером, с изменяемыми параметрами, включающими несколько констант, значений цвета и текстурных слоев: основная текстура, карта нормалей, specular карта и др. Модель освещения, применяемая в Jupiter EX, использует унифицированный (единый для всех поверхностей) метод попиксельного освещения Блинна-Фонга, при котором каждый источник света дает как диффузную, так и спекулярную составляющие света на всех объектах окружения. Игра отличается большим количеством поверхностей с несколькими текстурными слоями и довольно большим количеством вершинных и пиксельных шейдеров: бампмаппинг/нормалмаппинг на всех поверхностях, простой алгоритм parallax mapping на некоторых из них.

В Jupiter EX используется продвинутая система рендеринга специальных эффектов, таких, как взрывы, огонь, пар, дым, пыль и т.п. Одно из заметных отличий от других игр — применяемая система частиц, которая весьма эффектна, достаточно посмотреть на соответствующие скриншоты из игры, разнообразные искры и взрывы здорово смотрятся даже сейчас, а тем более — во время выхода игры, и особенно — во время появления первых скриншотов. В рендерере используются продвинутые способы постобработки изображения: blur, motion blur, depth of field, heat haze, distortion, lens flare и т.д. И о том, чего не показать на скриншотах, но что тоже относится к теме материала: система анимации в Jupiter EX включает поддержку инверсной кинематики, лицевой анимации, скелетной анимации, скининга, блендинга анимации, уровня детализации (level of detail) и использование физики Havok.

F.E.A.R. содержит закрытые пространства, в большинстве своем, а также редкие открытые пространства малого и среднего размеров. Больших открытых пространств, по сути, нет (то, что на них похоже, на первый взгляд, на поверку оказывается лишь имитацией), в основном, в игре мы видим комнаты и коридоры. Вряд ли это техническое ограничение движка, скорее — выбранная концепция игрового дизайна и, может быть, влияние выбранной системы рендеринга теней. Игрой используются теневые объемы (shadow volumes), хотя движком поддерживаются и карты теней (shadow maps). Конечно, у теневых объемов есть свои недостатки, но для игр, которые проходят в основном в закрытых пространствах, с множеством источников света, от которых нужно рассчитывать тени, использование теневых объемов подходит неплохо, что показывают другие игры, использующие этот вид построения теней: DOOM 3, Far Cry (в помещениях используются shadow volumes, а на открытых пространствах — shadow maps), The Chronicles of Riddick: Escape from Butcher Bay и др. Самое интересное в тенях игры F.E.A.R. — это метод, который применили для смягчения их границ, "мягкое" изображение теней получается смешиванием нескольких обычных. К сожалению, мягкость теней достигается большими потерями в производительности, алгоритм работает достаточно медленно и несовместим с мультисэмплингом.

Объем геометрии, обрабатываемый в одном кадре в типичных условиях и на максимальных настройках, несколько выше среднего уровня большинства игр. Это число изменяется в пределах от 40000 до 300000 полигонов на кадр (местами бывает и больше — до 500000, но это очень редко). В среднем, получается 120000-150000 полигонов в кадре при максимальных настройках, в зависимости от уровня игры.

Почти как и рассмотренная ранее Call of Duty 2, игра требовательна к объему локальной видеопамяти, в разрешении 1024x768 с включенным антиалиасингом уровня 4x и максимально возможными настройками качества в меню игры она использует до 400 мегабайт видеопамяти! Менеджмент памяти своеобразный: по мере прохождения дальше по уровню, все новые ресурсы загружаются туда, а освобождается от лишних ресурсов память только во время сохранения или автосохранения на контрольных точках. Среднее использование видеопамяти в тестовом разрешении 1024x768 с включенным 4x антиалиасингом и максимальными настройками составляет 230-270 Мб. Поэтому, на большом количестве систем с физически меньшим количеством набортной памяти, частично используется и системная память. Хотя, в отличие от того же Call of Duty 2, разница в производительности между видеокартами с 512 Мб и 256 Мб локальной видеопамяти появляется только в очень высоких разрешениях с включенным антиалиасингом, вроде 2048x1536, в котором частота кадров все равно крайне низка.

Графическим движком игры используются шейдерные программы, написанные на HLSL, и на тестовой системе с видеокартой, поддерживающей Shader Model 3.0, они на лету компилируются в вершинные шейдеры версий 1.1 и 2.0 и пиксельные шейдеры версий 1.1, 1.4 и 2.0, причем большее количество используемых программ именно версии 2.0, более сложных и длинных. С другой стороны, большое количество пиксельных и вершинных шейдеров версии 1.1 говорит о том, что игра на видеокартах без поддержки SM 2.0 потеряет не так много возможностей, хотя и рассчитана она, прежде всего, на DirectX 9 видеочипы. Во всех пиксельных шейдерах версии 2.0 сделаны оптимизации в виде расчетов с пониженной точностью (partial precision), которые должны пойти на пользу всем современным видеокартам NVIDIA, а особенно — серии NVIDIA GeForce FX.

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

По информации некоторых источников, Lithtech engine изначально разрабатывался компанией Monolith для Microsoft, чтобы быть включенным в состав DirectX, но по какой-то причине этого не произошло. В Monolith продолжили разработку для того, чтобы использовать удачный движок в своих проектах и лицензировать его другим компаниям-разработчикам. А после реорганизации команда, работавшая над движком Lithtech, была выделена в компанию под названием Touchdown Entertainment, которая ныне им и занимается. За все время разработки разные версии движка использовались во множестве игр, как собственного производства Monolith, так и сторонних компаний.

Графический движок Lithtech 1.0 во время своего появления не был сравним с более известными движками Quake и Unreal — у него недоставало поддержки некоторых современных на то время графических технологий, которые были поддержаны вышеупомянутыми движками. Зато он был очень легок в использовании, что явилось следствием изначальной разработки для включения в состав DirectX, для упрощения разработки игр сторонними компаниями. Примеры игр на базе этой версии движка: Shogo: Mobile Armor Division и Blood II: The Chosen, обе вышли в 1998 году и были довольно популярными играми того времени. Движок версии 1.5 был значительно улучшен и даже превосходил движок Quake 3 и Unreal Engine в некоторых аспектах, он поддерживал много нового, например, лицевую анимацию и физическую модель для транспортных средств. На Lithtech 1.5 базировались такие известные игры, как No One Lives Forever и KISS: Psycho Circus, вышедшие в 2000 году и Aliens vs Predator 2, появившийся в 2001.

Пожалуй, пика своего развития и известности движок Lithtech достиг к версии 2.0. Эту версию движка назвали Jupiter, и с нее Lithtech стал полностью конкурентоспособен, даже по сравнению с такими грандами, как Unreal Engine и Quake Engine. На базе этой версии были разработаны известные игры: No One Lives Forever 2: A Spy In H.A.R.M.'s Way (вышла в 2002 году, на время выхода была одной из наиболее технологически продвинутых игр), TRON 2.0 (игра вышла в 2003 году, использовала серьезно модифицированную версию движка Jupiter), The Matrix Online (вышла в 2005, одна из последних игр, использующих Jupiter). И, наконец, последняя модификация игрового движка Lithtech — Jupiter EX, была впервые представлена широкой публике в одной из наиболее популярных ПК игр 2005 года — F.E.A.R. Еще одной игрой на основе Jupiter EX стала Condemned: Criminal Origi ns, вышедшая сначала на Xbox 360, а затем и на ПК.

Игра F.E.A.R., публично анонсированная на крупнейшей игровой выставке E3 в 2004 году, сразу поразила качеством графики: мощной системой частиц (снопы искр и клубы дыма, и пыли при попаданиях в предметы и стены), повсеместным применением карт нормалей, интересными по исполнению следами в стенах от попадания пуль, сначала без parallax mapping, а потом и с ним, и некоторыми другими визуальными эффектами.

E3 2004     E3 2004

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

Вышедшая позднее мультиплеерная бета-версия несколько разочаровала низкой производительностью и однообразным дизайном MP карт, но высокую технологичность там уже было видно, к эффектам добавился уместный параллаксмаппинг и постобработка для следов выстрелов в slow-mo режиме:

MP beta     MP beta

Посмотрите на отверстия от выстрелов, они кажутся объемными, если глядеть с разных углов (кроме самых малых, конечно), это и есть наиболее явное применение parallax mapping в игре. На скриншотах видна также отличная работа системы частиц и применение нормалмаппинга на всех поверхностях. Также, в бета-версии разработчики показали нам свое видение мягких теней (soft shadows):

MP beta

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

MP beta     MP beta

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

MP beta     MP beta

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

С технической точки зрения, графика в игре очень хороша, F.E.A.R. удивляет не столько темными indoor пространствами, сколько множеством специальных эффектов, среди которых красивые взрывы, большое количество искр, разнообразные эффекты постобработки и т.п. Как уже упоминалось, вся игра проходит в помещениях и в небольших, искусственно ограниченных, открытых пространствах, которые отличаются сравнительно простой геометрией.

Indoor     Outdoor (fake)

Выход финальной версии игры подтвердил ее высокую технологичность — широко применяются карты нормалей (normal mapping), каждый материал имеет несколько слоев (diffuse, normal, specular), поверхности богаты мелкими деталями, особенно выделяются те, для которых применяется parallax mapping.

Normal mapping     Normal mapping

Parallax mapping     Parallax mapping

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

F.E.A.R. использует рендеринг теней от всех источников освещения и для всей геометрии (на максимальных настройках), используются теневые объемы, получившие большую популярность в последнее время для indoor шутеров. Мягкие тени в исполнении Monolith достигаются при помощи тех же теневых объемов, просто несколько (вероятно, три или четыре) одинаковых теней смешиваются друг с другом и подвергаются дополнительной постобработке, в результате получается нечто похожее на реалистичные мягкие тени.

Shadows     Shadows

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

Water     Water

К сожалению, в отличие от некоторых других игр (Far Cry, Half-Life 2), разработчикам пришлось пожертвовать одновременным эффектом преломления и отражения воды — есть лишь отражение, а то, что под водой, визуализируется без искажений. Но игре это сильно не мешает, так как больших озер и рек в ней нет, в отличие от двух вышеупомянутых проектов, да и в темноте F.E.A.R. вряд ли разглядишь преломления подводных поверхностей.

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

Particles     Particles

Effects     Effects

Рассмотрим еще один из самых важных моментов в современной 3D графике — эффекты постобработки (postprocessing) изображения. В рассматриваемой игре применяется масса привычных уже фильтров постобработки изображения. Несколько примеров: фильтр blur, размывающий картинку во время потери и появления сознания, фильтр motion blur — в скриптовых роликах и в режимах с замедлением, глубина резкости depth of field, heat haze — эффект искажения воздуха от взрывов и огня, а также некоторые другие постфильтры (distortion, lens flare и т.д.).

Postprocessing (depth of field)     Postprocessing (blur)

Postprocessing (heat haze)     Postprocessing (motion blur & distortion)

К сожалению, игрой и движком не поддерживается HDR рендеринг с использованием форматов повышенной точности, те же расчеты постфильтров в HDR помогли бы в достижении значительно лучшего качества. В целом, 3D графика в игре выполнена на высоком технологическом уровне, больше всего настораживают просчеты в игровом дизайне, слишком однообразны эти многочисленные коридоры и серые здания. Да и все эти коробки и прочие внутренние мелкие предметы быстро надоедают, когда их видишь в сто первый раз подряд. Из других претензий — ранее указанное отсутствие HDR рендеринга и tone mapping (приучили уже другие технологичные игры ко всему этому), недостаточная геометрическая детализация уровней и некоторых объектов, достигаемая не при помощи наложения карт нормалей, а использованием реальной геометрии. И для имитации человеческой кожи давно пора применять более продвинутые модели освещения, сколько уже можно смотреть на пластмассовых болванчиков?

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

Игра F.E.A.R. вошла в список тех, которые используют все мощности современных видеочипов, пусть иногда применяя не самые эффективные методы. Заставить F.E.A.R. работать плавно и быстро на максимальных настройках не так просто. Приведу для примера список видеокарт, которые обеспечивают средний FPS выше 60 кадров в секунду на максимальных настройках, с включенными анизотропной фильтрацией и антиалиасингом, в разрешении всего лишь 1024x768, данные взяты из последних 3DGiТогов на момент написания этой статьи: ATI RADEON X1800 XT, ATI RADEON X1900 XT, ATI RADEON X1900 XTX, NVIDIA GeForce 7800 GTX (256Mb и 512Mb варианты), NVIDIA GeForce 7900 GT, NVIDIA GeForce 7900 GTX. Для разрешения 1600x1200 в этот список попадут лишь те же самые карты, но… только в SLI и CrossFire конфигурациях, то есть, с удвоенной мощью! И это — по внутреннему тесту игры, который не отражает игровой ситуации полностью, в процессе игры возникают куда более тяжелые моменты, в которых производительность просаживается еще ниже. Напоминаю — возраст игры уже более чем полгода… Поэтому, для достижения необходимой частоты кадров, нужно обращать особое внимание на графические настройки игры, которые мы сейчас и рассмотрим.

Как это часто встречается в современных играх, вы можете позволить игре автоматически выбрать оптимальные для вашей системы настройки, используя опцию "Auto Detect", однако, это не даст того эффекта, которого можно добиться, настроив всё необходимое вручную. После тонкой модификации параметров вы, скорее всего, получите более высокую производительность и/или более качественную картинку. В секции производительности ("Perfomance") в меню игры есть две подсекции, нас интересует только вторая — "Advanced Video Card Options", в которую включены настройки, влияющие на производительность и качество рендеринга.

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

Выбор разрешения рендеринга имеет в игре значительное влияние на производительность, игра очень требовательна к эффективной скорости заполнения (филлрейту), то есть, важнейшими параметрами видеокарт для игры являются филлрейт, зависящий от рабочей частоты видеочипа и количества пиксельных конвейеров, и пропускная способность памяти, зависящая от частоты работы и ширины шины памяти. Пример тестовой системы с установленной видеокартой GeForce 7800 GTX 256MB: если возьмем 1024x768 за 100% и посчитаем соотношение средней частоты кадров в других разрешениях: 640x480 — 185%, 800x600 — 145%, 1024x768 — 100%, 1280x960 — 70%, 1600x1200 — 50%. То есть, средняя частота кадров в 1600x1200 будет уже в два раза меньше, чем в 1024x768, а в 640x480 — почти в два раза больше. Игра ограничена поддержкой разрешений с соотношением сторон 4:3 (1600x1200, 1280x960, 1152x864, 1024x768, 800x600, 640x480 и др., в зависимости от способностей конкретной видеокарты), но популярное на LCD мониторах "родное" разрешение 1280x1024 можно выставить при помощи редактирования конфигурационного файла игры (см. ниже по тексту).

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

Advanced Video Card Options — Effects

  • Effects Detail (Minimum/Medium/Maximum) — настройка уровня детализации спецэффектов, более низкие уровни снижают количество и качество эффектов, таких, как взрывы, искры, heat haze и т.п. Также, настройка влияет на количество рассчитываемых динамических источников света, например, вспышек от выстрелов. Действие настройки на примере взрыва, слева — установка в Minimum, справа — Maximum.

    Effects min     Effects max

    Как видите, при минимальном значении от взрыва остался лишь источник освещения. По встроенному в игру бенчмарку разница в производительности на тестовой системе с максимальными настройками (1024x768, антиалиасинг уровня 4x, анизотропная фильтрация 16x) разница между двумя крайними значениями, Maximum и Minimum, получилась около 20%, среднее количество кадров 54 и 64, соответственно.

  • Water Resolution (Minimum/Medium/Maximum) — значение, изменяющее уровень детализации водных поверхностей. Так как в игре часто используется поверхность воды с изменяемой геометрией, при помощи которой формируются настоящие волны, это количество разбиений сетки серьезно влияет на реалистичность водных поверхностей. Несмотря на то, что во встроенном тесте присутствует подобная поверхность воды, разницы в производительности на тестовой системе с указанными настройками не обнаружено, возможно, она проявится на слабых системах.

  • Reflections and Displays (Minimum/Medium/Maximum) — эта настройка меняет качество изображений на дисплеях в игре, показывающих происходящее в реальном времени (охранные системы). Она также влияет и на отражения водных поверхностей. Снижение этой настройки убирает некоторые дисплеи в игре и отражения на воде, что может дать некоторое повышение производительности на слабых системах из-за снижения требуемого количества проходов рендеринга. На современных видеокартах особого смысла в снижении этой настройки нет, полное отключение отражений на воде дало прирост в пределах погрешности — 2% по среднему количеству кадров в тестовой демке, разница составила 1 FPS.

    Reflections off     Reflections on
  • Volumetric Lights (Off/On) — включение объемных источников света, свет от которых видно в воздухе (хотите пример из реальной жизни? Попробуйте зайти в пыльную кладовку с фонариком :). На старых видеокартах рекомендуется выключить эту настройку, так как подобные источники света встречаются в игре не очень часто, но могут серьезно повлиять на производительность в тех сценах, где они есть. Аналогично предыдущему пункту, на нашей системе отключение объемных источников освещения дало увеличение производительности на 2%, с 54 до 55 FPS, но на более слабых компьютерах могут наблюдаться непонятные притормаживания именно с включенной опцией.

    Volumetric lights
  • Volumetric Light Density (Minimum/Medium/Maximum) — это значение определяет плотность эффекта объемного освещения, работает только в случае включенной предыдущей опции. Если объемные источники света в игре все-таки хочется видеть, то, снизив эту настройку, можно получить компромиссное решение между производительностью и качеством. Никакого влияния на производительность во встроенном тесте не обнаружено.

Advanced Video Card Options — Graphics

  • Light Detail (Minimum/Medium/Maximum) — настройка для изменения качества освещения сцены. Значение влияет на количество источников света в игре, освещение поверхностей от которых будет рассчитывать движок. Чем выше установлено значение, тем большее количество источников света влияет на освещенность сцены. Посмотрите на приложенные скриншоты, видно, что некоторые дальние фрагменты, освещенные при установке значения в Maximum, теряются при установке Light Detail в Minimum.

    Light Detail max     Light Detail min

    Так как игра и так достаточно темная, и большая часть атмосферы зависит в ней от освещения, перед снижением этой настройки лучше попробовать понизить другие. Хотя, прежде всего, выключаются второстепенные и удаленные источники, и пользователям с недостаточно производительными видеокартами всё равно можно установить настройку в меньшее значение. Опыты показывают, что значения Medium и Maximum для данной настройки идентичны, по встроенному бенчмарку разницы между ними нет (визуальной — тоже), в обоих случаях получается по 54 средних FPS, в то время как при Minimum получилось уже 67, а это почти четверть добавки в производительности. На слабых видеокартах разница может быть даже большей, необходимо искать баланс для конкретной системы.

  • Enable Shadows (Off/On) — значение, контролирующее рендеринг теней, если выставлено в On, то тени есть, если Off — нет. Это еще одна настройка, которую можно отключить на самых слабых конфигурациях, хотя она очень сильно влияет на реалистичность отрендеренной сцены, не менее сильно она снижает и производительность, требуя большого филлрейта, прежде всего. Исследования подтверждают это — отключение теней в тестовой демке дает огромный эффект, средний FPS вырастает на 60%, от 54 FPS до 86 FPS.

  • Shadow Detail (Minimum/Medium/Maximum) — эта настройка может использоваться для нахождения золотой середины между производительностью и качеством наложения теней. Она работает, если предыдущая настройка выставлена в On и определяет типы объектов, которые отбрасывают тени. Чем выше значение, тем больше теней будет рендериться движком игры. Ценой является большое влияние на производительность в случаях с большим количеством источников света и объектов. Посмотрите на скриншоты, между Maximum и Medium опять не видно никакой разницы, возможно, она появится в случае значительно большего количества источников света или при появлении динамических источников, а разница между Medium и Minimum четко видна сразу — при последней установке тени от персонажей полностью отсутствуют, однако, они остаются для статической геометрии и для мелких деталей на полу. Эта настройка умеренно влияет на производительность игры, установка на Maximum и Medium дает 54 FPS, а Minimum уже 61 FPS, то есть 13% разницы, что уже является неплохим компромиссом для тех, кому не хватает пары-тройки дополнительных кадров в секунду.

    Shadows off     Shadows min


    Shadows mid     Shadows max
  • Soft Shadows (Off/On) — настройка, управляющая включением и выключением алгоритма для смягчения границ теней. Мягкие тени выглядят значительно реалистичнее, даже если они не используют реальные оптические расчеты, а мягкость их краев эмулируется простым алгоритмом, как и сделано в случае F.E.A.R. Сравните скриншоты с обычными тенями и с мягкими, положительные отличия налицо.

    Softshadows off     Softshadows on

    К сожалению, метод, используемый игрой, во-первых, значительно снижает производительность (больше, чем включение мультисэмплинга уровня 4x!), а во-вторых, алгоритм несовместим с антиалиасингом. По словам разработчиков, мультисэмплинг не может применяться одновременно с алгоритмом мягких теней, на практике такую комбинацию включить удается, но мягкие тени при этом выглядят некорректно, а также появляются неприятные артефакты изображения, не связанные с тенями напрямую. Поэтому одновременное использование антиалиасинга и мягких теней бессмысленно, хотя их и можно включить совместно. В целом, несмотря на то, что мягкие тени повышают реалистичность картинки, в случае игры F.E.A.R. настройку крайне рекомендуется отключить всем пользователям. На слабых системах это поможет сэкономить более важные кадры в секунду, а на мощных — позволит включить антиалиасинг, который окажет большее положительное влияние на качество.

    На тестовой системе без включения антиалиасинга разница в частоте кадров при разных значениях настройки получилась весьма большой — 44 FPS против 70 FPS, то есть 60% (включение FSAA 4x в тех же условиях вызывает лишь 30% падение скорости). При включении soft shadows в том же режиме с мультисэмплингом, когда картинка рендерится не совсем корректно, разница сохраняется той же, около 60%.

  • Texture Filtering (Bilinear/Trilinear/Anisotropic 2x-16x) — настройка, позволяющая выбрать метод фильтрации текстур в игре. Доступно использование трилинейной и анизотропной фильтрации всех уровней. Как и в любой современной игре, рекомендуется использовать наибольший возможный уровень анизотропной фильтрации, тем более, что на тестовой системе разница между минимальной настройкой (Bilinear) и максимальной (Anisotropic 16x) составила лишь чуть больше 10%. Остается добавить, что рекомендуется использовать включение анизотропной фильтрации из настроек игры, а не из настроек драйвера видеокарты, этот универсальный совет для большинства современных игр подходит и для F.E.A.R.: для того, чтобы антиалиасинг и анизотропная фильтрация работали в игре так, как задумано ее разработчиками, нужно выставить в настройках видеокарты Application Controlled/Application Preference для этих двух параметров. А уже в игре выставить необходимый уровень для анизотропной фильтрации и антиалиасинга. Особенно этот совет касается анизотропной фильтрации, разработчик игры лучше знает, какие текстуры нужно качественно фильтровать, а какие — нет, драйверу это определить значительно сложнее.

  • Texture Resolution (Minimum/Medium/Maximum) — настройка для выставления используемого игрой разрешения текстур. Чем выше разрешение (и значение данной настройки), тем выше качество рендеринга всей сцены, но тем ниже производительность и выше требования к объему свободной видеопамяти. Для систем с объемом видеопамяти, равном 128 мегабайт, рекомендуется установка значения в Medium, а для маломощных видеокарт, оснащенных таким объемом памяти, может быть полезной даже ее выставление в Minimum. Получаемую визуальную разницу можно легко оценить по приложенным скриншотам (Minimum, Medium и Maximum соответственно):

    Texture Resolution Min Texture Resolution Mid Texture Resolution Max

    Разница в картинке между тремя возможными значениями весьма велика. Еще раз укажу, что выставленное значение имеет большое влияние на производительность, особенно на системах низкого уровня, если объем видеопамяти недостаточен, и значение Maximum рекомендуется выставлять только для high-end и некоторых mid-end видеокарт с объемом видеопамяти не менее 256 Мб. Разрешение текстур не сильно влияет на производительность в тестовой демке на нашей тестовой системе, при минимальном разрешении текстур производительность оказалось выше всего лишь на 2-3 дополнительных средних FPS. То есть, на тестовой системе оптимальными настройками размера текстур оказывается максимальное значение настройки, так как с ним обеспечивается приемлемое обновление частоты кадров, а снижение настройки не обеспечивает никакого улучшения производительности. Но если вы поставите значение Maximum на видеокарте среднего уровня с 128 Мб видеопамяти, да еще включив антиалиасинг, то для части ресурсов будет использоваться системная память, что может вызвать проседания минимального FPS во время игры.

    Приведу пример использования видеопамяти на основе демонстрационного уровня игры, по демке в котором измеряется производительность. При разрешении 1024x768, без использования антиалиасинга, но остальных максимальных настройках, игрой используется до 200 мегабайт видеопамяти, если значение Texture Resolution установлено в Maximum. При среднем (Medium) разрешении текстур используется уже всего 110 Мб видеопамяти, при Minimum — примерно 64 Мб. Если включить антиалиасинг с числом сэмплов 4, то получается около 220, 130 и 80 мегабайт, соответственно.

  • Pixel Doubling (Off/On) — настройка, которая может помочь владельцам самых слабых видеосистем. При рендеринге с включенным Pixel Doubling каждый пиксель изображения становится в четыре раза больше, а реальное разрешение снижается в столько же раз. Это имеет смысл только в том случае, если даже все минимальные настройки и разрешение 640x480 не дают требуемого уровня производительности. Тогда можно включить этот пункт и рендеринг, вместо 640x480, будет производиться с разрешением 320x240, а получаемое изображение растянется на весь экран.

    Pixel doubling off Pixel doubling on

    Повторюсь — включать настройку нужно только в самом крайнем случае, потому что выглядит это ужасно! Так как настройка не работает с включенным антиалиасингом, то мы проверили ее воздействие в обычном режиме, положительный эффект на среднее значение FPS составил около 50%, так что как самое последнее средство для увеличения производительности оно вполне годится.

  • DX8 Shaders (Off/On) — настройка, форсирующая использование шейдеров версии 1.1 на всех видеокартах. Может помочь на современных low-end видеокартах, которые, хотя и поддерживают возможности DirectX 9.0, но делают это крайне неторопливо. Особенно сильно настройка должна влиять на линейку GeForce FX, которая прославилась своей невысокой скоростью при использовании пиксельных шейдеров 2.0. Выставление опции DX8 Shaders в значение "On" снижает качество рендеринга и убирает некоторые эффекты, но повышает производительность на таких картах. Разницу в качестве изображения при использовании шейдеров уровня DX9 и DX8 (слева и справа, соответственно) в игре вы можете оценить по приложенным трем парам скриншотов:

    Shaders DX9     Shaders DX8


    Shaders DX9     Shaders DX8


    Shaders DX9     Shaders DX8

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

    Важное замечание по производительности! Настройка может увеличить скорость на старых и медленных DX9 видеокартах, но на многих современных платах это даст лишь отрицательный эффект! Например, на тестовой видеокарте ATI RADEON X1800 XL производительность при наших обычных настройках (1024x768, включены антиалиасинг и анизотропная фильтрация) снижается примерно на 8-10%. Думаю, что для видеокарт, начиная с NVIDIA GeForce 6*** и ATI RADEON X***, предпочтительнее будет использовать обычный (DirectX 9) режим, кроме самого low-end (GeForce 6100 и RADEON X300), разве что.

  • Shaders (Minimum/Medium/Maximum) — настройка изменения уровня детализации для эффектов, выполняемых при помощи шейдеров. Как обычно, чем выше значение, тем медленнее рендеринг, но тем большее качество специальных эффектов будет видно в игре. Вероятно, речь идет про эффекты, вроде heat haze, отражений и прочих подобных, так как никакой иной разницы я не обнаружил. По тестовой демке никаких отличий в производительности также нет.

Относительно производительности остается добавить, что на тестовой системе все максимальные настройки (кроме мягких теней, полезность которых спорна) играбельны в режиме с включенным антиалиасингом уровня 4x и анизотропной фильтрацией 16x в разрешении 1024x768, среднее количество кадров в секунду при этом около 50-60, а минимальное не опускается ниже 25-30. Для больших разрешений и уровней антиалиасинга нужны еще более производительные видеокарты, вроде ATI RADEON X1900 XTX и NVIDIA GeForce 7900 GTX, а еще лучше — системы CrossFire или SLI. На системах среднего уровня с видеокартами типа NVIDIA GeForce 7600 GS и ATI RADEON X1600 PRO/XT придется снизить некоторые настройки и/или вовсе отключить антиалиасинг.

Пара слов о конфигурационных файлах F.E.A.R. Игра использует несколько таких текстовых файлов: Default.archcfg и autoexec.cfg в корневом каталоге игры и settings.cfg, размещаемый в каталоге "\Documents and Settings\All Users\Documents\Monolith Productions\FEAR\". Наиболее полезным является последний, для того, чтобы использовать нестандартное разрешение в игре, нужно изменить в нем соответствующие строки, например, так:

"ScreenWidth" "1280"
"ScreenHeight" "1024"

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

Не могу не отметить один забавный факт, позволяющий, между тем, получить ускорение на видеокартах ATI при условии использования определенных версий драйверов Catalyst. Похоже, что в некоторых версиях драйверов прошлого года (когда и вышла игра, собственно), команда драйверописателей ATI сделала неточность в описании игры для функции Catalyst AI, которая призвана для повышения производительности в отдельных приложениях при помощи специфических оптимизаций для них. Эта функция в то время прекрасно работала для демонстрационной версии игры, но снижала (или не повышала, кому, как нравится) производительность релиза. Проблему обнаружили энтузиасты 3D графики и решение было найдено в простом переименовании исполняемого файла игры "FEAR.exe" в какое-либо другое. После этой манипуляции игра не теряла в качестве изображения, но производительность при этом серьезно улучшалась. В последующих версиях драйверов ATI исправили ошибку, и этот забавный метод увеличения производительности перестал работать. Тем более странно, что в свежем драйвере Catalyst 6.4 при настройках по умолчанию производительность всех карт ATI опять упала, по сравнению с предыдущей версией 6.3! Неужели старая ошибка тогда обнаружилась? При этом уже в версии 6.5 ее исправили, и скорость опять вернулась на свое место.




23 июня 2006 Г.

: F.E.A.R.

: F.E.A.R.



3D

: Monolith Productio ns, Inc
: Vivendi Universal Games
: 2005 .
API: Direct3D 9

F.E.A.R. Jupiter Extended ("Jupiter EX") Technology Touchdown Entertainment. Lithtech Monolith Productio ns, , , Monolith , Touchdown Entertainment. , , Direct3D 9 Havok.

3D , . Jupiter EX Direct3D 9 , , . HLSL , , , : , , specular . , Jupiter EX, ( ) -, , . : / , parallax mapping .

Jupiter EX , , , , , , .. — , , , , — , — . : blur, motion blur, depth of field, heat haze, distortion, lens flare .. , , : Jupiter EX , , , , , (level of detail) Havok.

F.E.A.R. , , . , , (, , , ), , . , — , , . (shadow volumes), (shadow maps). , , , , , , , , : DOOM 3, Far Cry ( shadow volumes, — shadow maps), The Chronicles of Riddick: Escape from Butcher Bay . F.E.A.R. — , , "" . , , .

, , . 40000 300000 ( — 500000, ). , 120000-150000 , .

Call of Duty 2, , 1024x768 4x 400 ! : , , . 1024x768 4x 230-270 . , , . , Call of Duty 2, 512 256 , 2048x1536, .

, HLSL, , Shader Model 3.0, 1.1 2.0 1.1, 1.4 2.0, 2.0, . , 1.1 , SM 2.0 , , , DirectX 9 . 2.0 (partial precision), NVIDIA, — NVIDIA GeForce FX.

, Lithtech engine Monolith Microsoft, DirectX, - . Monolith , -. , Lithtech, Touchdown Entertainment, . , Monolith, .

Lithtech 1.0 Quake Unreal — , . , DirectX, . : Shogo: Mobile Armor Division Blood II: The Chosen, 1998 . 1.5 Quake 3 Unreal Engine , , , . Lithtech 1.5 , No One Lives Forever KISS: Psycho Circus, 2000 Aliens vs Predator 2, 2001.

, Lithtech 2.0. Jupiter, Lithtech , , Unreal Engine Quake Engine. : No One Lives Forever 2: A Spy In H.A.R.M.'s Way ( 2002 , ), TRON 2.0 ( 2003 , Jupiter), The Matrix Online ( 2005, , Jupiter). , , Lithtech — Jupiter EX, 2005 — F.E.A.R. Jupiter EX Condemned: Criminal Origi ns, Xbox 360, .

F.E.A.R., E3 2004 , : ( , ), , , parallax mapping, , .

E3 2004     E3 2004

, , , , .

- MP , , slow-mo :

MP beta     MP beta

, , ( , ), parallax mapping . . , - (soft shadows):

MP beta

, slow-mo :

MP beta     MP beta

, - , . - , , , ..

MP beta     MP beta

, , F.E.A.R. indoor , , , , .. , , , , .

Indoor     Outdoor (fake)

— (normal mapping), (diffuse, normal, specular), , , parallax mapping.

Normal mapping     Normal mapping

Parallax mapping     Parallax mapping

parallax mapping . , , ( ) , . .

F.E.A.R. ( ), , indoor . Monolith , (, ) , .

Shadows     Shadows

— , . , ( , , — ), — . , , .

Water     Water

, (Far Cry, Half-Life 2), — , , , . , , , F.E.A.R. .

. , -. — .

Particles     Particles

Effects     Effects

3D — (postprocessing) . . : blur, , motion blur — , depth of field, heat haze — , (distortion, lens flare ..).

Postprocessing (depth of field)     Postprocessing (blur)

Postprocessing (heat haze)     Postprocessing (motion blur & distortion)

, HDR , HDR . , 3D , , . , . — HDR tone mapping ( ), , , . , ?

F.E.A.R. , , . F.E.A.R. . , FPS 60 , , 1024x768, 3DGi : ATI RADEON X1800 XT, ATI RADEON X1900 XT, ATI RADEON X1900 XTX, NVIDIA GeForce 7800 GTX (256Mb 512Mb ), NVIDIA GeForce 7900 GT, NVIDIA GeForce 7900 GTX. 1600x1200 , … SLI CrossFire , , ! — , , , . — … , , , .

, , "Auto Detect", , , , . , , / . ("Perfomance") , — "Advanced Video Card Options", , .

, , , , 25 FPS. (, ), 35-40 FPS, — 20 FPS, . , FPS 50-60, , 25 FPS , , , . , , — 50 FPS FPS 25 . , , , , .

, (), , , , , . GeForce 7800 GTX 256MB: 1024x768 100% : 640x480 — 185%, 800x600 — 145%, 1024x768 — 100%, 1280x960 — 70%, 1600x1200 — 50%. , 1600x1200 , 1024x768, 640x480 — . 4:3 (1600x1200, 1280x960, 1152x864, 1024x768, 800x600, 640x480 ., ), LCD "" 1280x1024 (. ).

, , — , , , , .. , .

Advanced Video Card Options — Effects

  • Effects Detail (Minimum/Medium/Maximum) — , , , , , heat haze .. , , , . , — Minimum, — Maximum.

    Effects min     Effects max

    , . (1024x768, 4x, 16x) , Maximum Minimum, 20%, 54 64, .

  • Water Resolution (Minimum/Medium/Maximum) — , . , , . , , , , .

  • Reflections and Displays (Minimum/Medium/Maximum) — , ( ). . , - . , — 2% , 1 FPS.

    Reflections off     Reflections on

  • Volumetric Lights (Off/On) — , ( ? :). , , , . , 2%, 54 55 FPS, .

    Volumetric lights

  • Volumetric Light Density (Minimum/Medium/Maximum) — , . - , , , . .

Advanced Video Card Options — Graphics

  • Light Detail (Minimum/Medium/Maximum) — . , . , . , , , Maximum, Light Detail Minimum.

    Light Detail max     Light Detail min

    , , . , , , . , Medium Maximum , ( — ), 54 FPS, Minimum 67, . , .

  • Enable Shadows (Off/On) — , , On, , Off — . , , , , , . — , FPS 60%, 54 FPS 86 FPS.

  • Shadow Detail (Minimum/Medium/Maximum) — . , On , . , . . , Maximum Medium , , , Medium Minimum — , , . , Maximum Medium 54 FPS, Minimum 61 FPS, 13% , , - .

    Shadows off     Shadows min


    Shadows mid     Shadows max
  • Soft Shadows (Off/On) — , . , , , F.E.A.R. , .

    Softshadows off     Softshadows on

    , , , -, (, 4x!), -, . , , , , , . , . , , , F.E.A.R. . , — , .

    — 44 FPS 70 FPS, 60% ( FSAA 4x 30% ). soft shadows , , , 60%.

  • Texture Filtering (Bilinear/Trilinear/Anisotropic 2x-16x) — , . . , , , (Bilinear) (Anisotropic 16x) 10%. , , , F.E.A.R.: , , , Application Controlled/Application Preference . . , , , — , .

  • Texture Resolution (Minimum/Medium/Maximum) — . ( ), , . , 128 , Medium, , , Minimum. (Minimum, Medium Maximum ):

    Texture Resolution Min Texture Resolution Mid Texture Resolution Max

    . , , , , Maximum high-end mid-end 256 . , 2-3 FPS. , , , . Maximum 128 , , , FPS .

    , . 1024x768, , , 200 , Texture Resolution Maximum. (Medium) 110 , Minimum — 64 . 4, 220, 130 80 , .

  • Pixel Doubling (Off/On) — , . Pixel Doubling , . , 640x480 . , 640x480, 320x240, .

    Pixel doubling off Pixel doubling on

    — , ! , , FPS 50%, .

  • DX8 Shaders (Off/On) — , 1.1 . low-end , , DirectX 9.0, . GeForce FX, 2.0. DX8 Shaders "On" , . DX9 DX8 ( , ) :

    Shaders DX9     Shaders DX8


    Shaders DX9     Shaders DX8


    Shaders DX9     Shaders DX8

    , : , , parallax mapping. , 1.1 ( ).

    ! DX9 , ! , ATI RADEON X1800 XL (1024x768, ) 8-10%. , , NVIDIA GeForce 6*** ATI RADEON X***, (DirectX 9) , low-end (GeForce 6100 RADEON X300), .

  • Shaders (Minimum/Medium/Maximum) — , . , , , . , , heat haze, , . .

, ( , ) 4x 16x 1024x768, 50-60, 25-30. , ATI RADEON X1900 XTX NVIDIA GeForce 7900 GTX, — CrossFire SLI. NVIDIA GeForce 7600 GS ATI RADEON X1600 PRO/XT / .

F.E.A.R. : Default.archcfg autoexec.cfg settings.cfg, "\Documents and Settings\All Users\Documents\Monolith Productions\FEAR\". , , , , , :

"ScreenWidth" "1280"
"ScreenHeight" "1024"

, , . , , .

, , , ATI Catalyst. , ( , ), ATI Catalyst AI, . , ( , , ) . 3D "FEAR.exe" - . , . ATI , . , Catalyst 6.4 ATI , 6.3! ? 6.5 , .