Графические технологии в играх: Serious Sam 2


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

Разработчик: Croteam
Издатель: 2K Games
Дата выхода: Октябрь 2005 г.
Графический API: Direct3D 9 (неофициальная поддержка OpenGL)

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

Serious Sam 2 - это долгожданное полноценное продолжение серии шутеров от первого лица под названием Serious Sam. Первые две игры серии были двумя половинками одной, поэтому именно Serious Sam 2 можно назвать первым полноценным продолжением серии, к тому же, основанном на новой версии игрового движка - Serious Engine 2. Вторая часть игры была разработана хорватской компанией Croteam и выпущена 2K Games в октябре прошлого года в версиях для ПК и Xbox. К сожалению для ПК-игроков, так как игровая консоль Microsoft Xbox является технически отсталой платформой по современным меркам. Версия для ПК, хотя и более продвинутая технологически, да и качество ресурсов игры в "нашей" версии значительно лучше, по своим 3D возможностям все же недалеко ушла от ограничений, накладываемых этой игровой консолью.

Первая версия графического движка Serious Engine использовалась в предыдущих частях игры, а во второй версии за три года разработки было сделано множество улучшений, и для конца 2004 - начала 2005 года он был бы, пожалуй, весьма современным. Но в конце 2005 года от его инновационных технологических особенностей не осталось и следа, вышедшие в то же время игры предлагали уже поддержку шейдерной модели 3.0, несколько новых эффектов на их основе, динамические мягкие тени от всей геометрии и применение карт нормалей на всех поверхностях. А в Serious Sam 2 движок и игра остались с поддержкой первого Xbox и SM 1.x видеокарт. То ли из-за того, что игру сделали позже, чем планировалось изначально, то ли из-за того, что разработчики не захотели потерять часть рынка. Или хотели показать, что можно создать технологичную игру для Xbox и для современных ПК одновременно… Получилось ли у них? На наш взгляд, не очень хорошо. Потому что пути рендеринга для SM 2.0 и SM 1.1 в движке аналогичны по возможностям, за исключением небольшой их части, в игре так и не реализованной.

Но достаточно о негативном, у движка есть и хорошие стороны. Можно ведь сказать, что движок Serious Engine 2 очень гибок, с одной стороны, он поддерживает SM 1.x видеокарты и позволяет сносно играть в игру на них, пусть и не с максимальными настройками, а с другой - использует некоторые возможности более новых видеочипов: HDR рендеринг и пиксельные шейдеры версии 2.0. Также, вторая версия движка, как и первая, специально оптимизирована для рендеринга сложных закрытых и огромных открытых пространств, а также одновременного отображения большого количества динамических объектов.

Вообще, Serious Engine 2 подходит для игр разных жанров с видом от первого или третьего лица и может подстраиваться под специфические особенности конкретной игры. Как и первые версии, движок Serious Engine 2 поддерживает множество возможностей, не используемых в играх самой Croteam. Главной причиной такого решения является то, что движок предназначен для лицензирования другим разработчикам, и он может использоваться для создания игр разных жанров. Движок не был написан под конкретные нужды одной игры, он предлагает больше возможностей, чем может быть реализовано в рамках одного игрового продукта. Например, Serious Engine 2 поддерживает и карты теней и стенсильные тени, и хотя последние не используются в игре Serious Sam 2, но могут быть полезны для некоторых других игр.

Основные особенности движка Serious Engine 2:

  • Мультиплатформенная поддержка (Windows и Linux), на ПК возможно использование двух API: Direct3D и OpenGL, также поддерживается игровая консоль Xbox.
  • Гибкая шейдерная архитектура, в зависимости от возможностей целевой платформы и сложности эффектов, используются шейдеры версий 1.1, 1.4 или 2.0.
  • Большое количество обрабатываемых треугольников на кадр, в разы больше, чем в предыдущих версиях движка.
  • Улучшенная система определения видимости, основанная на поддержке "occlusion query" современным аппаратным обеспечением.
  • Поддержка предрассчитанных теней, сохраненных в лайтмапах (lightmaps) и динамические тени для анимированных объектов. Для предварительно рассчитанных при помощи алгоритмов spherical harmonics lighting карт освещения поддерживается неограниченное количество источников света.
  • Поддержка проигрывания видеороликов формата Ogg Theora, включая их использование в качестве видеотекстур.
  • Продвинутый менеджмент ресурсов с поддержкой кэширования и фоновой загрузки ресурсов с разных устройств хранения: HDD, DVD и т.п.

В основном, в игре применяются пиксельные шейдеры версии 1.1, есть также несколько программ версий 1.4 и 2.0. Шейдеры 2.0 несложные, лишь до 25 инструкций в программе, а в основном - по 15-20 инструкций. Шейдер земной поверхности, состоящий из 25 инструкций, хоть и не самый сложный в мире, но он использует до восьми текстур одновременно и не особенно быстр даже на современных видеочипах. Разработчики даже гордятся тем, что у них нет длинных пиксельных шейдеров в игре, так как они делали динамичную игру, а не технодемку, по их словам. В некоторых интервью разработчики из Croteam упоминали, что их главной задачей являлась оптимизация шейдеров, чтобы даже с множеством врагов на экране, движок Serious Engine 2 мог использовать для их рендеринга такие эффекты, как наложение карт нормалей, parallax mapping, отражения, преломления и т.п.

Пиксельные шейдеры в Serious Sam 2 служат для расчета освещения, наложения карт нормалей PolyBump, parallax mapping (или offset mapping), используются в алгоритмах постфильтрации: фильтры bloom, отражения и преломления, шейдер смешивания Blend Layers, шейдер многослойных земных поверхностей и шейдеры водных поверхностей. Особой гордостью разработчиков является уже упомянутый пиксельный шейдер для визуализации поверхности земли (terrain), использующий до восьми текстур в одном проходе. Это касается шейдера версии 2.0, соответствующие шейдеры младших версий используют большее количество проходов: два в ps_1_4 и три в ps_1_1. Не совсем понятно, чем там можно гордиться, ладно было бы сложное освещение или хитрая фильтрация карт теней, а то - простое мультитекстурирование…

В игре используются шейдерные программы, написанные на ассемблере, и на тестовой системе с видеокартой NVIDIA, поддерживающей Shader Model 3.0, по умолчанию применяются вершинные шейдеры версий 1.1 и пиксельные шейдеры версий 1.1, 1.4 и 2.0. Наблюдается большое количество программ версии 1.1, есть немного 1.4, а часть шейдеров версии 2.0. По сути, используется немного шейдеров версии 2.0, практически все они являются переписанными для улучшения производительности на современных видеокартах (за счет снижения необходимого количества проходов рендеринга) шейдерами версий 1.x. Новых алгоритмов, использующих особенности SM 2.0, почти нет, в основном используются возможности вершинных и пиксельных программ версий 1.x, что может объясняться разработкой игры под общие возможности первого Xbox и ПК того же уровня. Вероятно, шейдерные программы были доработаны и дополнены позднее.

Написание шейдеров на соответствующем ассемблерном языке, а не на HLSL, объясняется разработчиками тем, что одна из целевых платформ движка, а конкретно игровая консоль Xbox, поддерживает только шейдерную модель версии 1.1. Программистам Croteam пришлось сделать в игре два пути рендеринга: SM 1.x и SM 2.0. Некоторые возможности движка, такие как parallax mapping, не могут быть выполнены в шейдерах версий 1.1 и 1.4, поэтому пути рендеринга не равноценны с точки зрения возможностей. Во всех пиксельных шейдерах версии 2.0 сделаны оптимизации в виде расчетов с пониженной точностью (partial precision), которые улучшают производительность на всех видеокартах NVIDIA, начиная с серии NVIDIA GeForce FX.

Объем геометрии, обрабатываемый игрой в среднем кадре, соответствует уровню современных игр, количество полигонов в кадре при максимальных настройках от 20000 до 600000, значительно реже встречается и 700000-800000. Сложность геометрии весьма сильно зависит от выбранного уровня игры, есть уровни со средним количеством около 50000-60000 треугольников в кадре (indoor), а есть значительно более сложные (в основном те, где есть большие открытые пространства с деревьями, травой и домами, а также с большим числом противников), в которых от 50000 до 600000 треугольников и средним количеством, равным 250000-270000. Среднее количество обрабатываемых треугольников в кадре по всей игре около 150000-170000.

По современным меркам, игра не является требовательной к объему видеопамяти, если речь не идет об использовании несжатых 32-битных форматов текстур. В тестовом разрешении 1024x768, с включенным 4x мультисэмплингом и максимальными настройками качества, она использует от 100 до 280 Мб видеопамяти, в зависимости от уровня, среднее значение составляет 180-200 Мб. 128-мегабайтных видеокарт в большинстве уровнях игры на максимальных настройках не хватает, но объем в 256 Мб уже вполне достаточен. Как ни странно, несмотря на использование более 400 Мб видеопамяти в режиме 32-битных текстур, игра на тестовой системе хоть и использует часть системной памяти для видеонужд, при этом почти не тормозит. Ну а на минимально возможных настройках качества игра не использует даже 32 Мб видеопамяти, явно прослеживается влияние особенностей игровой консоли Xbox и желание угодить даже владельцам low-end видеокарт…

При помощи утилиты профилирования PIX, входящей в состав Microsoft DirectX 9 SDK, и плагина из комплекта NVIDIA PerfKit 2, мы собрали интересные цифры. Статистика, собранная на нескольких уровнях игры показывает, что при максимальных настройках (кроме текстурных, которые установлены в optimal) в разрешении 1024x768 видеочип GeForce 7800 GTX простаивает в среднем (по счетчику gpu_idle) около 20-35% времени, в зависимости от уровня. Предполагаем недостаточную сложность пиксельных и вершинных шейдеров, среднее использование блоков пиксельных шейдеров (счетчик pixel_shader_busy) - 20-25%, блоков вершинных шейдеров (счетчик vertex_shader_busy) - 5-20%. Последнее значение очень сильно зависит от уровня игры, есть уровни с 5%, а есть - с 25%. Полигональная сложность многих объектов (архитектуры indoor уровней особенно!) явно недостаточна для игры современного уровня, хотя в целом геометрия неплохо сбалансирована для видеокарт предыдущего поколения (серии ATI RADEON 9x00, GeForce FX).

Средний процент времени ожидания блоками пиксельных шейдеров выборки данных из текстур (счетчик shader_waits_for_texture) - 20-30%, что еще раз показывает основной упор в текстурирование, а не математические команды сложных пиксельных шейдеров. Ожидание окончания операций записи во фреймбуфер (shader_waits_for_rop) - 17-20%, что, в свою очередь, говорит и о большем упоре игры в скорость операций растеризации, нежели в производительность пиксельных шейдеров. Сделаем скидку на то, что игра уже не новая, в современных играх желательно использовать значительно более сложные пиксельные и вершинные программы.

Также, в этот раз мы решили провести исследование влияния некоторых настроек игры на средние показатели счетчиков производительности NVIDIA. Данные нескольких опытов на уровне Siriusopolis приведены в таблице:

СчетчикDefaultAF 16xFSAA 4xHDR on32-bit textures
gpu_idle, %52.540.344.734.547.6
vertex_shader_busy, %16.916.616.816.516.9
pixel_shader_busy, %18.618.420.723.918.4
D3D vidmem/agpmem, Mb134/7133/7160/7141/7249/192
shader_waits_for_texture, %4.616.56.87.85.5
shader_waits_for_rop, %1.31.115.614.71.6

Рассмотрим все счетчики по порядку. gpu_idle не показывает нам ничего неожиданного, загрузка видеочипа невысока в обычном режиме и слегка повышается в режиме с антиалиасингом уровня 4x и режиме с включенной анизотропной фильтрацией. Но больше всего загружен работой видеочип в режиме с включенным HDR рендерингом, тут он простаивает значительно меньшее время. На значение vertex_shader_busy рассматриваемые нами настройки никакого влияния не оказывают, это и понятно - количество и сложность геометрических расчетов не изменялись. А вот с pixel_shader_busy интереснее, можно увидеть, что нагрузка на пиксельные блоки слегка увеличивается в режиме с включенным мультисэмплингом, а еще сильнее - в HDR режиме, когда для расчетов используется 16-битный формат буфера с плавающей точкой. Значения счетчиков используемой видеопамяти "D3D vidmem" и "D3D agpmem" соответствуют ожиданиям, включение антиалиасинга накидывает к значению пару десятков мегабайт, да и включение HDR дает определенный эффект, все-таки 16-битный буфер требует больше памяти, чем 8-битный. Больше всего удивляет значение в режиме без применения текстурного сжатия - все-таки 141 и 441 (локальная и нелокальная видеопамять суммарно) - это очень разное количество используемой видеопамяти. Хорошо, что методы текстурного сжатия DXTC(S3TC) были придуманы компанией S3 в свое время.

Рассмотрим наиболее отличившиеся в наших экспериментах счетчики: shader_waits_for_texture и shader_waits_for_rop. Значение первого сильнее всего изменяется при включении анизотропной фильтрации, что подтверждает законы 3D графики, ведь для анизотропной фильтрации требуются дополнительные выборки текстурных сэмплов, что мы и видим в значениях таблицы. А вот время ожидания записи данных во фреймбуфер, наоборот, отличается для режимов с антиалиасингом и использованием затратного 16-битного формата буфера рендеринга, и отличается сильно. Посмотрите, насколько значительно меняется цифра shader_waits_for_rop в таких режимах! К сожалению, используемая тестовая видеокарта NVIDIA не поддерживает мультисэмплинг для 16-битных форматов, было бы интересно посмотреть, насколько изменится значение с HDR и включенным мультисэмплингом одновременно…

Краткая история

За прошедшие пять лет под общим названием Serious Sam вышло несколько игр жанра FPS. Первая игра серии предназначалась только для ПК, но популярность игры и возможность расширения рынка сбыта привели к портированию игр серии и на другие платформы: Xbox, Nintendo GameCube, Sony PlayStation 2 и др. Родоначальник серии, игра под названием Serious Sam: The First Encounter, вышла в 2001 году, в следующем последовало продолжение Serious Sam: The Second Encounter, в том же году вышла и версия для Xbox, а в 2004-м игра Serious Sam: Next Encounter появилась даже на Nintendo GameCube и Sony PlayStation 2.

Изначально планировалось, что Serious Sam 2 будет игрой "The Final Encounter" на все том же старом движке первой части. Разработка игры началась в середине 2003 года, позднее было принято решение о переходе на новую версию игрового движка, игру планировалось выпустить сначала во втором квартале 2004, а затем - во второй половине того же года. В дальнейшем, публичные отчеты о ходе разработке игры пропали, и только в апреле 2005 года третья игра серии была официально анонсирована. В мае трейлер и раннюю версию игры Serious Sam 2 показали на выставке E3, ее посетители смогли впервые увидеть игру воочию. Новой датой релиза стала осень 2005, публичная демонстрационная версия игры вышла в конце сентября, а чуть позже, в октябре прошлого года, Serious Sam 2 был выпущен в продажу в версиях для ПК и Xbox.

Для первой игры серии компания Croteam в свое время создала очень хороший по тем временам игровой движок, он же применялся и в Second Encounter. Движок назвали "Serious Engine", он был специально разработан для поддержки очень больших открытых пространств и одновременной отрисовки огромного количества моделей и объектов, что делало его уникальным на фоне остальных движков, применяемых тогда в FPS (Quake, Unreal и др.), которые предлагали закрытые помещения, небольшие открытые пространства и маленькие уровни с единицами моделей врага. Serious Engine был очень эффективным в рендеринге большого количества динамических объектов даже на средних по мощности системах.

Движок использовал в работе как Direct3D, так и OpenGL, поддерживал новые возможности DirectX 7 по аппаратной трансформации и освещению. В первой версии Serious Engine из-за относительной простоты использования и возможности портирования в качестве предпочтительного графического API был выбран OpenGL, а во второй - уже последняя версия Direct3D. Хотя OpenGL остается в составе движка, меню настроек игры Serious Sam 2 не предполагает возможности его использования. В этом случае разработчики сделали свой выбор в пользу Direct3D по причине его большей востребованности и богатых возможностей последней версии API, равных для видеочипов разных производителей.

В Croteam изначально предусматривалась возможность лицензирования движка Serious Engine сторонним компаниям. Так и случилось, Serious Engine 1.x использовался в нескольких играх: Serious Sam: The First Encounter, Serious Sam: The Second Encounter, Serious Sam Gold, Serious Sam на Xbox, Carnivores: Cityscape, Deer Hunter 2003, Bird Hunter 2003, Alpha Black Zero: Intrepid Protocol, Nitro Family. У Serious Engine 2, думаю, так уже не получится, на фоне конкурентов движок уже не отличается так выгодно, как это было с Serious Engine 1, в плюсе у него остались лишь большие открытые пространства, все остальное уже есть у других и даже больше.

Первые скриншоты "почти что игры" были сняты журналистами, которые делали обзоры видеокарт ATI, поддерживающих формат сжатия нормалей 3Dc. Соответствующая технологическая демонстрационная версия была выпущена Croteam в начале 2004 года, она показывала небольшой indoor уровень с двумя персонажами из будущей игры, для одного из которых применялся новый метод сжатия двухкомпонентных карт нормалей - 3Dc или ATI2N.

   

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

   

Первые скриншоты подтвердили появление постэффекта bloom, применение карт нормалей и поддержку динамических теней в игре, все это на них хорошо видно. К сожалению, в то время все эти фичи выглядели уже совсем не так свежо, непонятно, почему разработка затянулась так долго, ведь движок был готов еще в начале 2004 года. Может быть, дорабатывали Xbox версию, а может быть, и саму игру.

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

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

По уровню 3D технологий Serious Sam 2 оставляет двойственное впечатление. С одной стороны, в ней поддерживается HDR рендеринг и пиксельные шейдеры версии 2.0, с другой - все эффекты, примененные в игре, могут быть реализованы при помощи SM 1.x, а вершинные шейдеры остановились в развитии на уровне vs_1_1. Эффекты постобработки применены к месту, но для той же воды можно было бы реализовать не только преломления, но и отражения. Хотелось бы видеть в игре тот же parallax mapping, который уже применялся к тому времени в Splinter Cell: Chaos Theory и F.E.A.R. и который хоть и был заявлен в качестве возможностей движка, а также представлен соответствующим пунктом в меню игры, не был найден ни в демонстрационной версии, ни в финальной.

Игра использует некоторые новые технологии для своего времени, ее отличают средняя полигональная сложность уровней и объектов, несколько эффектов постфильтрации, возможность их расчета в HDR диапазоне, материалы игры имеют по несколько слоев (diffuse, normal, specular), используется наложение карт нормалей и текстур детализации (detail textures). Игра, традиционно для серии, предлагает в основном огромные открытые пространства с большим количеством объектов. Впрочем, есть и немногочисленные indoor уровни, также весьма большие.

Outdoor     Indoor

К геометрической сложности моделей и архитектуры уровней придираться нет смысла, недостаточное количество полигонов в некоторых случаях объясняется большими пространствами и количеством объектов в кадре, когда каждый треугольник на счету. Однако, можно было бы сделать более сложные модели для обладателей мощных high-end систем, а не оглядываться на хилый Xbox. Некоторым объектам явно не достает количества полигонов, ожидаемых от современной игры, но в целом, геометрическая детализация для столь динамичной игры достаточна.

Geometry     Geometry

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

Normal mapping     Normal mapping

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

Textures     Textures

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

Detail textures     Detail textures
Исходя из соображений производительности, тени в игре делятся на два типа: предварительно рассчитанные тени от статической геометрии, сохраненные в лайтмапах (lightmap) и динамические тени для анимированных объектов, создаваемые при помощи карт затенения (shadowmap). В обоих случаях рассчитываются тени от одного удаленного источника освещения - солнца, остальными источниками пренебрегают. Такое решение подходит для больших открытых пространств с одним неподвижным источником освещения и неразрушаемой статикой. Несмотря на применение динамических теней от всей геометрии в некоторых других играх, в том числе с большими открытыми пространствами (Need For Speed: Most Wanted, Ghost Recon: Advanced Warfighter), разработчики из Croteam посчитали, что даже современные видеочипы не в состоянии отрендерить полностью динамические тени на открытых пространствах с большим количеством статической и динамической геометрии.

Shadows     Shadows

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

Одним из самых важных технологических показателей в играх является реализация водных поверхностей. В Serious Sam 2 есть несколько типов жидкостей - прозрачные и непрозрачные, с динамическими волнами, задаваемыми геометрией или попиксельным эффектом. Странно, что для обычной воды был сделан только эффект преломления, но не отражения. Точнее, отражения на такой воде присутствуют, но они статичны и выглядят нереалистично. Подобная вода несколько странно выглядит, могли бы уж и постараться сделать, как в технодемках делали еще в 2002-2003 годах.

Water     Water

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

Effects     Effects

По сравнению с предыдущими играми, в эту часть добавили несколько новых постэффектов. К старым lens flare прибавился настраиваемый фильтр bloom, дающий увеличение яркости на светлых участках и refraction - эффект преломления для прозрачных поверхностей, таких, как вода и стекло.

Примеры эффекта bloom, дающего светлые ореолы вокруг ярких участков изображения:

Bloom     Bloom

Примеры эффекта lens flare, создающего большие ореолы возле ярких источников света и другие оптические эффекты:

Flare     Flare

Примеры эффекта преломления, на воде и стеклянной бутылке:

Refraction     Refraction

В игре Serious Sam 2 много открытых пространств с сочными цветами и яркими источниками света, которые лучше выглядят при правильной реализации HDR рендеринга. К сожалению, HDR тут используется, похоже, в основном для улучшения качества постфильтра Bloom, а используемый оператор tonemapping не дает эффекта адаптации человеческого зрения к изменению условий освещения. Для HDR рендеринга используется 16-битный формат буфера с плавающей точкой (D3DFMT_A16B16G16R16F), а видеокартам, не поддерживающим возможность рендеринга в 16-битные форматы, остается довольствоваться эффектами постобработки в LDR диапазоне. В отдельных случаях разница просто огромна:

HDR rendering     HDR rendering

Итак, технологичность 3D графики в игре на хорошем уровне, хотя и не самом высоком. Явно не хватает динамических теней от всей геометрии, а также фильтрации карт теней для смягчения краев и устранения артефактов алиасинга теней. Очень хотелось бы видеть в игре реальный parallax mapping, а не просто пункт в меню, который в действительности не работает, многие материалы от этого бы только выиграли. Ну и по контенту мелкие претензии есть, можно было сделать некоторые модели сложнее геометрически, да и разрешение карт нормалей сделать, как в той самой технодемке ATI2N. Также, на мой взгляд, игре не достает других видов постобработки, ведь все те ролики, которые в игре заранее отрендерены, можно было бы сделать на движке и с такими постэффектами, как depth of field и motion blur. Грустно это - видеть пререндеренные ролики подобного качества в игре, которая хвалится своим движком, продолжательнице дела такой технологичной игры, как первый Serious Sam.

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

Несмотря на отсутствие поддержки самых современных технологий, игра Serious Sam 2 очень требовательна к производительности игровой системы. В разрешении 1024x768 с максимальными настройками, включенной анизотропной фильтрацией и антиалиасингом, среднюю частоту кадров выше 60 кадров обеспечивают лишь топовые видеокарты вроде GeForce 7800 GTX и RADEON X1800 XT и выше, причем не во всех случаях. Еще одним необходимым условием является мощный центральный процессор, считающий физику (на нее уходит до 25-30% времени расчета кадра), AI и др. Если понизить планку до 20-25 минимальных и около 40-45 средних кадров в секунду, то на такую частоту кадров на максимальных настройках способны видеокарты, начиная с ATI RADEON X1800 XL и NVIDIA GeForce 7800 GT. На более слабых придется снизить некоторые из графических настроек.

Если требуемая частота кадров не достигается, нужно проверить получаемую частоту кадров при помощи встроенной возможности тестирования производительности. Для достижения требуемой плавности и играбельности, нужно изменять игровые настройки так, чтобы достичь средней частоты кадров хотя бы 35-40 FPS. Основные параметры, на которые следует обратить внимание: уровень антиалиасинга, общая настройка Quality и отдельные настройки: Texture size, Dynamic shadows, Crumbs, Geometry LOD, Only shaders 1.1 в меню Advanced video options.

Игра Serious Sam 2 отличается одной из лучших реализаций встроенного бенчмарка, у которого есть следующие возможности: запись пользовательских демок, стандартные демки в комплекте, вывод минимального, максимального и среднего значений частоты кадров в секунду, с учетом и без учета пиков, а также вывод данных о доле расчетов AI, графики, физики и т.п. Запустить демку можно прямо из главного меню игры, но чтобы получить значения FPS, нужно установить значение соответствующей переменной "bmk_bBenchmarkDemos = 1;". После окончания проигрывания демки в консоль записываются все необходимые цифры.

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

Для того, чтобы изменить 3D настройки игры, нужно выбрать раздел "Options" в главном меню, а затем выбрать подраздел "Video options". Появится основное меню настроек, в котором доступно изменение игрового разрешения, автоматическая подстройка, уровень антиалиасинга, гамма-коррекция, общие настройки "Quality" и "Texture size". Диапазон доступных разрешений на тестовой системе очень широк: 640x480, 720x480, 800x600, 848x600, 960x600, 1024x768, 1088x612, 1152x854, 1280x720, 1280x768, 1280x800, 1280x960, 1360x768, 1600x900, 1600x1024, 1600x1200, 1920x1080, 1920x1200, 1920x1440, 2048x1536. Из реально полезных отсутствует только 1280x1024, его можно установить из конфигурационного файла, как это сделать - написано в конце статьи. В списке есть как разрешения с привычным соотношением сторон 4:3, так и с широкоэкранными 16:9 и 16:10.

Video options

Общая настройка "Quality" влияет на большинство значений графических настроек в подменю "Advanced video options", она изменяет разрешение текстур и геометрическую сложность, и позволяет включать используемые игрой эффекты. Настройка весьма пригодится тем, кто недостаточно хорошо разбирается в 3D технологиях. Однако более опытным пользователям рекомендуется выставление значение "Quality" на то значение, которое для их системы ближе и ручное изменение остальных параметров. Для упрощения выбора приведем таблицу зависимости основных графических настроек игры от значения параметра "Quality":

QualityMinimumLowMediumHighMaximum
Resolution640x480800x6001024x7681152x8641280x960
Texture sizeLowMediumHighMaximumMaximum
AntialiasingNoneNoneLow (2x)Medium (4x)Medium (4x)
Particle amountLowOptimalOptimalHighHigh
CrumbsNoneLowOptimalHighMaximum
Geometry LODMinimumLowMediumHighMaximum
Texture qualityCompressedCompressedOptimalOptimalOptimal
Texture sizeLowMediumHighMaximumMaximum
Lightmap qualityCompressedOptimalOptimalOptimalOptimal
Lightmap sizeLowMediumHighMaximumMaximum
BloomNoneDarkerOptimalBrighterGlaring
AnisotropyNoneNone2x4x8x
FilteringBilinearTrilinearTrilinearTrilinearTrilinear
Lens flare qualityNoneCoronaGlaringGlaringGlaring
Parallax mappingNoNoYesYesYes
Reflection qualityLowMediumHighHighHigh
RefractionsNoNoYesYesYes
Only shaders 1.1YesYesNoNoNo
HDR renderingNoNoNoNoNo

Значения настроек в зависимости от параметра "Quality" продуманы весьма хорошо, они разумны и последовательны. Во всех режимах используется разное разрешение, которое никто не запрещает поменять позднее. Настройка "Minimum" олицетворяет настоящий минимализм, когда используются действительно самые низкие настройки, настройка "Maximum" противоположна ей, почти все значения устанавливаются на максимум. Непонятно только нежелание игры устанавливать уровень анизотропной фильтрации в значение 16x, а вот с качеством текстур сделали все правильно, 32-битные никогда не ставятся, даже на максимальных настройках, потому что ничего полезного это не дает. Сделано умно и отсутствие возможности включения HDR рендеринга при помощи настройки "Quality", этим должен заниматься опытный пользователь, который точно знает, что делает.

Рассмотрим наглядно все значения качества изображения, для удобства возьмем одинаковое разрешение - 1024x768. Изменения в качестве есть во всех случаях, картинку при значении "Maximum" я не привожу, отличия от "High" почти незаметны. Производительность режимов разительно отличается, если на тестовой системе используемая демка в режиме "Minimum" показывает более 81 средних FPS, "Low" - 74, "Medium" - 61, "High" - 48, и "Maximum" - 40 FPS. То есть, разница получилась двукратная, и я полагаю, что на слабых системах она будет еще большей.

Quality Minimum     Quality Low
Quality Medium     Quality High

Из других важных параметров на основной странице "Video options", сильно влияющих на качество и производительность, присутствуют "Texture size" и "Antialiasing". Первый параметр влияет на разрешение используемых в игре текстур и лайтмапов, мы разберем их отдельно позднее, а второй задает используемый уровень мультисэмплинга. Возможны значения: "None", "Low", "Medium", "High", которые соответствуют отключенному антиалиасингу, 2x, 4x и 6x, соответственно. На видеокартах, не поддерживающих мультисэмплинг на основе шести выборок, таких как все платы на видеочипах NVIDIA, значение "High" сбрасывается на "Medium".

Производительность при разных значениях "Antialiasing" сильно отличается на разных системах. Для тестовой системы с GeForce 7800 GTX на минимальных настройках в разрешении 640x480 разницы в производительности между всеми возможными значениями почти нет - 2-3%. При максимальных настройках отличия в производительности чуть больше, разница между режимом без антиалиасинга и FSAA 4x составляет всего 3-5%. То есть, на достаточно мощных системах есть смысл протестировать, не является ли включение антиалиасинга в выбранном разрешении вообще "бесплатным".

В игре есть возможность полностью автоматической настройки качества, для этого используется пункт меню "Auto detect quality", который запускает встроенные низкоуровневые средства тестирования производительности, измеряющие филлрейт при разных эффектах. На основе полученных данных выставляется соответствующая настройка уже рассмотренного параметра "Quality". К слову, на тестовой системе она установилась в значение "Maximum", показав почти трехкратное превосходство перед референсным GeForce 6600 GT по итогам тестов. Считаю, что остальным разработчикам игр следует взять на вооружение подобные методы. Но все же, без изменения отдельных настроек добиться максимального качества с сохранением приемлемой производительности очень сложно, ручная настройка всегда лучше автоматической. Поэтому рекомендуется потратить время на ручную настройку в подменю "Advanced video options".

Настройки меню "Advanced video options"

Advanced video options
  • Dynamic shadows (None/Minimum/Low/Medium/High) - при помощи этой настройки можно управлять качеством динамических теней в игре. Статические тени в лайтмапах она не трогает, но позволяет задавать отображение динамических теней и их качество. Значение "None" полностью отключает тени, "Minimum" и "Low" - задают простенькие тени в виде круглых пятен, а остальные управляют качеством и разрешением используемых динамических карт теней. При максимальной настройке используются карты теней разрешением 512x512 пикселей, что для этой игры вполне достаточно, ступенчатых артефактов почти не заметно.

    Dynamic shadows None     Dynamic shadows Low
    Dynamic shadows High

    Влияние настройки на производительность одно из самых значительных, разница в среднем количестве кадров в секунду на тестовой демке (уровень Siriusopolis) между крайними значениями составляет до 35%! Причем, эта разница достигается на максимальных настройках, на минимальных она значительно меньше - около 15%, хотя это тоже достаточно много. На слабых системах в сценах с большим количеством врагов и объектов могут наблюдаться замедления, в том числе из-за теней. И так как динамические тени в игре сделаны ущербно и только для движущихся объектов, советую выставить значение "Minimum" или "Low" всем тем, кому не хватает производительности. Вы получите почти такую же картинку, но сэкономите много важных FPS.

  • Particle amount (Low/Optimal/Maximum) - настройка, задающая количество частиц в эффектах типа взрывов, дыма, фонтанов и т.п. Системы частиц требовательны, прежде всего, к пропускной способности памяти, так как ими используется альфа-блендинг. На тестовой системе с видеокартой GeForce 7800 GTX эта настройка не оказывает существенного влияния на итоговую производительность, получается разница в пределах 2-3% во всех режимах, но на слабых системах частицы могут быть одним из основных ограничивающих производительность факторов, и если частота кадров снижается именно в таких случаях, то следует снизить значение рассматриваемого параметра.

    Particle amount Low     Particle amount Maximum
  • Crumbs (None/Low/Optimal/High/Maximum) - под этим названием скрывается так называемая "мелочь" - трава, мелкие камни и т.п. Настройка задает плотность и дальность прорисовки подобных мелких объектов, значение "None" отключает их полностью, а все остальные задают разное количество. Очень хорошо, что пользователю дана гибкая настройка даже таких вещей, как трава. Если человеку хочется детализированной картинки, а производительность устраивает - можно повысить значение настройки, не хватает скорости - можно убрать траву и камни вообще. Надо отметить, что в некоторых случаях трава и камни могут влиять на геймплей, за ними иногда скрываются враги, мелкие объекты, ящики, аптечки и т.п.

    Crumbs None     Crumbs Low
    Crumbs Optimal     Crumbs Maximum

    Разница в среднем FPS в режимах с крайними значениями параметра в тестовой демке составила около 8-10% при максимальных настройках в разрешении 1024x768. При минимальных, включение "Crumbs" на максимум снижает производительность уже на 20%. Так что выбирайте сами, что для вас важнее, красоты в весьма динамичной игре или дополнительная производительность.

  • Geometry LOD (Minimum/Low/Medium/High/Maximum) - настройка, изменяющая уровень детализации (level of detail) для динамической и части статической геометрии. При высоком уровне детализации для далеко расположенных объектов используются модели с большим количеством полигонов, чем при низкой. Самое низкое значение настройки приводит к тому, что многие дальние объекты вообще не отрисовываются. На скриншотах действие настройки показать сложно, в динамике оно заметнее, но пропадание домов и других объектов видно на первой паре скриншотов, а на второй, показанной в режиме wireframe, заметна разная геометрическая детализации фрагментов заднего плана - бутылки в центре и маленького цветка справа.

    Geometry LOD Minimum     Geometry LOD Maximum
    Geometry LOD Minimum     Geometry LOD Maximum

    Естественно, что настройка сильно влияет на итоговую производительность, особенно на слабых системах. Разница между "Minimum" и "Maximum" при остальных максимальных настройках получается порядка 30-35%, а в режиме минимальных настроек ее воздействие оказалось заметно меньше - 5%. В общем, этот параметр нужно подбирать специально под конкретную систему, общие рекомендации по ней дать сложно.

  • Texture quality/Lightmap quality (Compressed/Optimal/32-bit) - эти два параметра задают используемый игрой формат основных текстур, карт нормалей и лайтмапов. Доступны три значения, самый производительный режим - "Compressed", при котором все текстуры загружаются в оригинальном сжатом формате DXT1/DXT5, а лайтмапы будут сжиматься на лету. Средний режим "Optimal" - действительно оптимальный, при этом значении текстуры будут оставаться сжатыми, а для лайтмапов сжатие не будет использоваться, что обеспечивает идеальный баланс между производительностью и качеством. В значении "32-bit" для текстур смысла нет никакого, игра использует изначально сжатые DXT текстуры и распаковка их не принесет повышения качества, а вот увеличения требований к видеопамяти и снижения минимального FPS ждать долго не придется. На среднее значение FPS на тестовой системе настройка влияния не оказывает (хотя для части ресурсов использовалась системная память), а вот минимальное серьезно проседает. Соответственно, совет простой - для владельцев мощных систем единственно правильным значением является "Optimal", а для остальных - "Compressed".

  • Texture size/Lightmap size (Minimum/Low/Medium/High/Maximum) - еще одна настройка качества текстур, отвечающая за их разрешение (размер). Разрешение также настраивается отдельно для текстур и лайтмапов, но мы приведем лишь общие картинки, где обе настройки менялись синхронно. Любопытно, что текстуры детализации остаются одинаковыми в любом случае. Посчитаем это недоработкой, авторы могли бы предусмотреть их отключение и/или изменение качества.

    Texture/Lightmap size Minimum     Texture/Lightmap size Low
    Texture/Lightmap size Medium     Texture/Lightmap size High

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

  • Bloom (None/Darker/Optimal/Brighter/Glaring) - этот параметр задает интенсивность постфильтра Bloom. При значении "None" данный вид постобработки отключается вовсе, а остальные значения, несмотря на красивые названия, изменяют лишь интенсивность фильтра. Что хорошо видно на картинке, каждый шаг настройки добавляет интенсивность свечения вокруг ярких объектов.

    Bloom None     Bloom Darker
    Bloom Optimal     Bloom Glaring

    Настройка может быть требовательной к производительности, пожалуй, только на слабых системах. По крайней мере, на тестовой разница получилась 2% для максимальных настроек в разрешении 1024x768 и 4% - для минимальных в разрешении 640x480. Таким влиянием можно пренебречь, и если у вас мощная система, то можно выставлять любое значение. Тут вопрос эстетики, скорее. Ведь Bloom - это неплохо, но слишком яркий фильтр, когда красивое голубое небо превращается в сплошное белое пятно, тоже не нужен.

  • Anisotropy (None/2x/4x/8x/16x) - обычная настройка уровня анизотропной фильтрации, ничем не отличающаяся от того, что есть в любых драйверах. Влияние на производительность на тестовой системе очень мало - 2-4% для обоих режимов. Видимо, ограничивающим фактором производительность текстурных выборок в игре не является. Это же подтверждает следующая настройка и тот факт, что от разного разрешения текстур также ничего не зависит.

  • Filtering (Bilinear/Trilinear) - вторая простейшая настройка текстурной фильтрации. Она задает тип используемой в игре фильтрации мип-уровней: билинейной или трилинейной. Влияние на производительность еще меньше, чем в предыдущем случае - лишь 2-3%.

  • Lens flare quality (None/Corona/Reflections/Glaring) - данный параметр служит для изменения сложности оптического спецэффекта, называемого lens flare (эффект засвечивания линз, эмуляция оптики фото- и видеокамеры). На построенное изображение с включенным альфа-блендингом накладываются специальные текстуры, имитирующие яркое свечение вокруг источников света и кольцеобразные артефакты засветки оптики. Минимальное значение параметра отключает эффект полностью, в режиме "Corona" используется только гало, без остальных колец, а при максимальном "Glaring" накладываются все детали. Это хорошо заметно на приложенных картинках:

    Lens flare quality None     Lens flare quality Corona
    Lens flare quality Glaring

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

  • Parallax mapping (No/Yes) - самый странный параметр настроек. Я даже сомневался, включать ли его в описание. Но включил, так как нужно сказать читателю, что никаких изменений ни на качество, ни на производительность, он не производит. Можно было бы подумать, что для неких поверхностей в игре включается parallax mapping, но… ничего не происходит, никаких изменений в картинке и скорости просто нет, я проверял многократно и на разных уровнях. Соответственно, и картинок не будет - показывать нечего.

  • Reflection quality (Low/Medium/High) - как видно из названия, это настройка качества отражений. Отражения на объектах в игре не динамические, поэтому никаких особенных изменений параметр не приносит. Я даже с трудом нашел место, чтобы показать отличия визуально, так как на водные отражения в игре параметр никакого влияния не оказывал.

    Reflection quality Low     Reflection quality High

    Можно сказать, что никакого влияния на производительность игры разные значения не производят, нет даже приближения к 2%.

  • Refractions (No/Yes) - а вот эта настройка уже значительно интереснее, так как эффект преломления в игре задействуется в нескольких местах игры. Есть только возможность включения и выключения эффекта. Объектов с эффектами преломления немного, но преломления на гигантской детской бутылочке смотрятся великолепно даже на скриншотах, не говоря уже о динамике:

    Refractions No     Refractions Yes

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

  • Only shaders 1.1 (No/Yes) - параметр настройки, который может пригодиться для владельцев некоторых современных low-end видеокарт и уж точно - для серии GeForce FX. Настройка позволяет насильно отключить использование пиксельных шейдеров версий выше 1.1, ограничиваясь возможностями SM 1.1. Большинство эффектов при этом останутся работать, просто для них будет использоваться меньшая точность расчетов (и большее количество проходов - так что еще вопрос, какой режим будет производительнее). На тестовой системе влияния настройки на производительность не отмечено вообще.

  • HDR rendering (No/Yes) - одна из наиболее интересных настроек игры отвечает за включение режима HDR рендеринга, при котором используется рендеринг в 16-битный буфер, что позволяет поднять качество эффектов постобработки, таких, как Bloom. Никаких иных настроек HDR в игре нет, лишь возможность включения и отключения. Изменения в эффекте Bloom приведены на приложенных скриншотах, больше всего разница видна на деталях, граничащих с ярким небом.

    HDR rendering No     HDR rendering Yes

    Как ни удивительно, но на тестовой системе влияние включения HDR рендеринга на производительность довольно небольшое, менее 10% для режима 1024x768. Вероятно, на слабых системах влияние будет значительнее. Кстати, изначально HDR рендеринг в игре на видеокартах серии ATI RADEON X1000 работал некорректно. Так как у этих чипов отсутствует возможность фильтрации 16-битных текстур, на экране наблюдались артефакты блочности. Но после выхода соответствующего патча у владельцев RADEON X1000 появилась возможность включения полноценного HDR в игре.

На тестовой системе с установленными NVIDIA GeForce 7800 GTX или ATI RADEON X1800 XL играбелен режим с максимальными настройками, в том числе антиалиасингом 4x и анизотропной фильтрацией 16x, в разрешении 1024x768 (или тот же самый режим с HDR rendering без антиалиасинга), среднее количество кадров в секунду при этом превышает 50-60 FPS, а минимальное значение не опускается ниже 25-30. На системах среднего уровня, начиная с NVIDIA GeForce 7600 GS/GT и ATI RADEON X1600 PRO/XT, придется снижать некоторые из настроек, а может быть, еще и понизить разрешение и уровень антиалиасинга.

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

Рассмотрим некоторые возможности по настройке игры, недоступные из меню. Serious Sam 2 использует текстовый конфигурационный файл \Content\SeriousSam2\Sam2.ini в каталоге установки игры. По доброй традиции, начавшейся с первой части, в этом файле можно изменить множество настроек, как доступных из меню, так и дающих некоторые новые возможности. Например, чтобы использовать нестандартное разрешение в игре, нужно изменить в нем соответствующие строки. Рассмотрим наиболее распространенное разрешение 1280x1024, не поддерживаемое игрой изначально. Для его использования нужно исправить две нужные строки в разделе [Engine]:

gfx_pixResWidth = 1280;
gfx_pixResHeight = 1024;

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

Полезной для некоторых систем возможностью является выбор графического API, используемого движком игры. Как и предыдущие версии, движок Serious Engine 2 поддерживает два API: Direct3D и OpenGL, но в этой игре невозможно выбрать OpenGL, видимо из-за того, что главным в этот раз разработчики посчитали Direct3D. Но у любознательных пользователей и у тех, кому не хватает производительности на старых видеокартах NVIDIA, которые традиционно чуть побыстрее в OpenGL, выход есть. Для того, чтобы заставить игру использовать OpenGL, нужно исправить параметр gfx_iAPI конфигурационного файла в секции [Engine], выставив его значение равным единице - gfx_iAPI = 1;. Есть еще один вариант с переименованием файлов GfxD3D.dll и GfxOGL.dll в каталоге игры Bin, но указанный выше метод правки INI-файла проще и удобнее.

Поспешу огорчить тех пользователей, кто порадовался "ускорению" от включения OpenGL, повышение быстродействия хоть и есть, но оно чаще всего объясняется банальным отсутствием некоторых алгоритмов 3D графики в OpenGL рендерере. Повышение скорости вызвано скорее полным отсутствием динамических теней и нескольких видов постобработки (эффекты glare и bloom, эффект преломления для воды и некоторых объектов), чем от самого OpenGL рендерера.

Из остальных настроек, недоступных из меню, но имеющихся в Sam2.ini, наибольший интерес вызывают следующие:

  • d3d_bForcePixelProgramPartialPrecision - вероятно, сначала разработчиками предполагалась возможность включения и выключения использования игрой расчетов с пониженной точностью в пиксельных шейдерах. Но затем они изменили решение и сделали эту оптимизацию обязательной, вписав соответствующие модификаторы в исходные коды шейдеров. Теперь данная настройка не имеет смысла, а интерес вызывает лишь то, по какой причине разработчики игры от нее отказались.
  • d3d_iMaxAllowedPixelProgramVersion - настройка позволяет установить максимально возможную версию для используемых игрой пиксельных шейдеров. Например, на видеокартах серии GeForce FX можно форсировать использование пиксельных шейдеров версий до 1.4 включительно, для повышения производительности. Для этого нужно установить значение "14", тогда шейдеры 2.0 использоваться не будут, даже если их поддержка видеочипом декларируется.
  • d3d_bForcePixelProgramVersion2 - настройка, полезная для некоторых видеокарт ATI. Если ее значение выставить в "1", то игрой будут использоваться исключительно пиксельные шейдеры версии 2.0. По умолчанию, на видеокартах с поддержкой SM 2.0 игра использует пиксельные шейдеры версий 1.1, 1.4 и 2.0, а при форсировании данной настройкой будут использоваться только программы версии 2.0. На тестовой видеокарте NVIDIA GeForce 7800 GTX разницы в производительности не было обнаружено, но на некоторых видеокартах ATI RADEON настройка может поднять скорость на несколько процентов.
  • ren_pixDynamicShadowSize - настройка служит для указания разрешения динамических карт теней. Например, при значении настройки, равной 512, игрой будут использоваться карты теней разрешением 512x512 пикселей. На быстрых современных видеокартах эта настройка сама по себе особого влияния на производительность не оказывает, но на старых картах может быть полезной. Особенно, если по каким-то причинам не хочется отключать динамические тени от объектов совсем.
  • mdl_bHardwareSkinning - возможность по перекладыванию части работы по трансформации геометрии на CPU, которая может быть полезной для систем с видеоядром низкой производительности и мощным центральным процессором. По умолчанию, значение параметра равно "1", если установить его в "0", то скинингом будет заниматься CPU. Не факт, что даже быстрый процессор сможет ускорить рендеринг, например, на тестовой системе изменение настройки вызывает снижение производительности примерно на 10%.




8 августа 2006 Г.

: Serious Sam 2

: Serious Sam 2



3D
iXBT.com

: Croteam
: 2K Games
: 2005 .
API: Direct3D 9 ( OpenGL)

Serious Sam 2 - Serious Sam. , Serious Sam 2 , , - Serious Engine 2. Croteam 2K Games Xbox. -, Microsoft Xbox . , , "" , 3D , .

Serious Engine , , 2004 - 2005 , , . 2005 , 3.0, , . Serious Sam 2 Xbox SM 1.x . - , , , - , . , Xbox … ? , . SM 2.0 SM 1.1 , , .

, . , Serious Engine 2 , , SM 1.x , , - : HDR 2.0. , , , , .

, Serious Engine 2 . , Serious Engine 2 , Croteam. , , . , , . , Serious Engine 2 , Serious Sam 2, .

Serious Engine 2:

  • (Windows Linux), API: Direct3D OpenGL, Xbox.
  • , , 1.1, 1.4 2.0.
  • , , .
  • , "occlusion query" .
  • , (lightmaps) . spherical harmonics lighting .
  • Ogg Theora, .
  • : HDD, DVD ..

, 1.1, 1.4 2.0. 2.0 , 25 , - 15-20 . , 25 , , . , , , , . Croteam , , , Serious Engine 2 , , parallax mapping, , ..

Serious Sam 2 , PolyBump, parallax mapping ( offset mapping), : bloom, , Blend Layers, . (terrain), . 2.0, : ps_1_4 ps_1_1. , , , - …

, , NVIDIA, Shader Model 3.0, 1.1 1.1, 1.4 2.0. 1.1, 1.4, 2.0. , 2.0, ( ) 1.x. , SM 2.0, , 1.x, Xbox . , .

, HLSL, , , Xbox, 1.1. Croteam : SM 1.x SM 2.0. , parallax mapping, 1.1 1.4, . 2.0 (partial precision), NVIDIA, NVIDIA GeForce FX.

, , , 20000 600000, 700000-800000. , 50000-60000 (indoor), ( , , , ), 50000 600000 , 250000-270000. 150000-170000.

, , 32- . 1024x768, 4x , 100 280 , , 180-200 . 128- , 256 . , 400 32- , , . 32 , Xbox low-end …

PIX, Microsoft DirectX 9 SDK, NVIDIA PerfKit 2, . , , ( , optimal) 1024x768 GeForce 7800 GTX ( gpu_idle) 20-35% , . , ( pixel_shader_busy) - 20-25%, ( vertex_shader_busy) - 5-20%. , 5%, - 25%. ( indoor !) , ( ATI RADEON 9x00, GeForce FX).

( shader_waits_for_texture) - 20-30%, , . (shader_waits_for_rop) - 17-20%, , , , . , , .

, NVIDIA. Siriusopolis :

Default AF 16x FSAA 4x HDR on 32-bit textures
gpu_idle, % 52.5 40.3 44.7 34.5 47.6
vertex_shader_busy, % 16.9 16.6 16.8 16.5 16.9
pixel_shader_busy, % 18.6 18.4 20.7 23.9 18.4
D3D vidmem/agpmem, Mb 134/7 133/7 160/7 141/7 249/192
shader_waits_for_texture, % 4.6 16.5 6.8 7.8 5.5
shader_waits_for_rop, % 1.3 1.1 15.6 14.7 1.6

. gpu_idle , 4x . HDR , . vertex_shader_busy , - . pixel_shader_busy , , , - HDR , 16- . "D3D vidmem" "D3D agpmem" , , HDR , - 16- , 8-. - - 141 441 ( ) - . , DXTC(S3TC) S3 .

: shader_waits_for_texture shader_waits_for_rop. , 3D , , . , , 16- , . , shader_waits_for_rop ! , NVIDIA 16- , , HDR …

Serious Sam FPS. , : Xbox, Nintendo GameCube, Sony PlayStation 2 . , Serious Sam: The First Encounter, 2001 , Serious Sam: The Second Encounter, Xbox, 2004- Serious Sam: Next Encounter Nintendo GameCube Sony PlayStation 2.

, Serious Sam 2 "The Final Encounter" . 2003 , , 2004, - . , , 2005 . Serious Sam 2 E3, . 2005, , , , Serious Sam 2 Xbox.

Croteam , Second Encounter. "Serious Engine", , , FPS (Quake, Unreal .), , . Serious Engine .

Direct3D, OpenGL, DirectX 7 . Serious Engine - API OpenGL, - Direct3D. OpenGL , Serious Sam 2 . Direct3D API, .

Croteam Serious Engine . , Serious Engine 1.x : Serious Sam: The First Encounter, Serious Sam: The Second Encounter, Serious Sam Gold, Serious Sam Xbox, Carnivores: Cityscape, Deer Hunter 2003, Bird Hunter 2003, Alpha Black Zero: Intrepid Protocol, Nitro Family. Serious Engine 2, , , , Serious Engine 1, , .

" " , ATI, 3Dc. Croteam 2004 , indoor , - 3Dc ATI2N.

   

: , , , . , E3 2005, , .

   

bloom, , . , , , , 2004 . , Xbox , , .

, , , . - , : , , HDR , , , .

3D Serious Sam 2 . , HDR 2.0, - , , SM 1.x, vs_1_1. , , . parallax mapping, Splinter Cell: Chaos Theory F.E.A.R. , , , .

, , , HDR , (diffuse, normal, specular), (detail textures). , , . , indoor , .

Outdoor     Indoor

, , . , high-end , Xbox. , , , .

Geometry     Geometry

, , . , . , , , . , , .

Normal mapping     Normal mapping

Serious Sam , . -, , , . , , .

Textures     Textures

(detail textures), . , , . - !

Detail textures     Detail textures

, : , (lightmap) , (shadowmap). - , . . , (Need For Speed: Most Wanted, Ghost Recon: Advanced Warfighter), Croteam , .

Shadows     Shadows

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

. Serious Sam 2 - , , . , , . , , . , , 2002-2003 .

Water     Water

, , . HDR , .

Effects     Effects

, . lens flare bloom, refraction - , , .

bloom, :

Bloom     Bloom

lens flare, :

Flare     Flare

, :

Refraction     Refraction

Serious Sam 2 , HDR . , HDR , , Bloom, tonemapping . HDR 16- (D3DFMT_A16B16G16R16F), , 16- , LDR . :

HDR rendering     HDR rendering

, 3D , . , . parallax mapping, , , . , , , ATI2N. , , , , , , depth of field motion blur. - , , , Serious Sam.

"Video options"

, Serious Sam 2 . 1024x768 , , 60 GeForce 7800 GTX RADEON X1800 XT , . , ( 25-30% ), AI . 20-25 40-45 , , ATI RADEON X1800 XL NVIDIA GeForce 7800 GT. .

, . , , 35-40 FPS. , : , Quality : Texture size, Dynamic shadows, Crumbs, Geometry LOD, Only shaders 1.1 Advanced video options.

Serious Sam 2 , : , , , , , AI, , .. , FPS, "bmk_bBenchmarkDemos = 1;". .

, 1024x768 640x480, . , - , , . , , , , , .

, 3D , "Options" , "Video options". , , , , -, "Quality" "Texture size". : 640x480, 720x480, 800x600, 848x600, 960x600, 1024x768, 1088x612, 1152x854, 1280x720, 1280x768, 1280x800, 1280x960, 1360x768, 1600x900, 1600x1024, 1600x1200, 1920x1080, 1920x1200, 1920x1440, 2048x1536. 1280x1024, , - . 4:3, 16:9 16:10.

Video options

"Quality" "Advanced video options", , . , 3D . "Quality" , . "Quality":

Quality Minimum Low Medium High Maximum
Resolution 640x480 800x600 1024x768 1152x864 1280x960
Texture size Low Medium High Maximum Maximum
Antialiasing None None Low (2x) Medium (4x) Medium (4x)
Particle amount Low Optimal Optimal High High
Crumbs None Low Optimal High Maximum
Geometry LOD Minimum Low Medium High Maximum
Texture quality Compressed Compressed Optimal Optimal Optimal
Texture size Low Medium High Maximum Maximum
Lightmap quality Compressed Optimal Optimal Optimal Optimal
Lightmap size Low Medium High Maximum Maximum
Bloom None Darker Optimal Brighter Glaring
Anisotropy None None 2x 4x 8x
Filtering Bilinear Trilinear Trilinear Trilinear Trilinear
Lens flare quality None Corona Glaring Glaring Glaring
Parallax mapping No No Yes Yes Yes
Reflection quality Low Medium High High High
Refractions No No Yes Yes Yes
Only shaders 1.1 Yes Yes No No No
HDR rendering No No No No No

"Quality" , . , . "Minimum" , , "Maximum" , . 16x, , 32- , , . HDR "Quality", , , .

, - 1024x768. , "Maximum" , "High" . , "Minimum" 81 FPS, "Low" - 74, "Medium" - 61, "High" - 48, "Maximum" - 40 FPS. , , , .

Quality Minimum     Quality Low
Quality Medium     Quality High

"Video options", , "Texture size" "Antialiasing". , , . : "None", "Low", "Medium", "High", , 2x, 4x 6x, . , , NVIDIA, "High" "Medium".

"Antialiasing" . GeForce 7800 GTX 640x480 - 2-3%. , FSAA 4x 3-5%. , , "".

, "Auto detect quality", , . "Quality". , "Maximum", GeForce 6600 GT . , . , , . "Advanced video options".

"Advanced video options"

Advanced video options

  • Dynamic shadows (None/Minimum/Low/Medium/High) - . , . "None" , "Minimum" "Low" - , . 512x512 , , .

    Dynamic shadows None     Dynamic shadows Low
    Dynamic shadows High

    , ( Siriusopolis) 35%! , , - 15%, . , - . , "Minimum" "Low" , . , FPS.

  • Particle amount (Low/Optimal/Maximum) - , , , .. , , , -. GeForce 7800 GTX , 2-3% , , , .

    Particle amount Low     Particle amount Maximum

  • Crumbs (None/Low/Optimal/High/Maximum) - "" - , .. , "None" , . , , . , - , - . , , , , , ..

    Crumbs None     Crumbs Low
    Crumbs Optimal     Crumbs Maximum

    FPS 8-10% 1024x768. , "Crumbs" 20%. , , .

  • Geometry LOD (Minimum/Low/Medium/High/Maximum) - , (level of detail) . , . , . , , , , wireframe, - .

    Geometry LOD Minimum     Geometry LOD Maximum
    Geometry LOD Minimum     Geometry LOD Maximum

    , , . "Minimum" "Maximum" 30-35%, - 5%. , , .

  • Texture quality/Lightmap quality (Compressed/Optimal/32-bit) - , . , - "Compressed", DXT1/DXT5, . "Optimal" - , , , . "32-bit" , DXT , FPS . FPS ( ), . , - "Optimal", - "Compressed".

  • Texture size/Lightmap size (Minimum/Low/Medium/High/Maximum) - , (). , , . , . , / .

    Texture/Lightmap size Minimum     Texture/Lightmap size Low
    Texture/Lightmap size Medium     Texture/Lightmap size High

    , "Maximum", , "High". , - , 256 . "Minimum" "Maximum" 2% .

  • Bloom (None/Darker/Optimal/Brighter/Glaring) - Bloom. "None" , , , . , .

    Bloom None     Bloom Darker
    Bloom Optimal     Bloom Glaring

    , , . , 2% 1024x768 4% - 640x480. , , . , . Bloom - , , , .

  • Anisotropy (None/2x/4x/8x/16x) - , , . - 2-4% . , . , .

  • Filtering (Bilinear/Trilinear) - . -: . , - 2-3%.

  • Lens flare quality (None/Corona/Reflections/Glaring) - , lens flare ( , - ). - , . , "Corona" , , "Glaring" . :

    Lens flare quality None     Lens flare quality Corona
    Lens flare quality Glaring

    . , lens flare .

  • Parallax mapping (No/Yes) - . , . , , , , . , parallax mapping, … , , . , - .

  • Reflection quality (Low/Medium/High) - , . , . , , .

    Reflection quality Low     Reflection quality High

    , , 2%.

  • Refractions (No/Yes) - , . . , , :

    Refractions No     Refractions Yes

    , . , Siriusopolis . Zumzum FPS 2%, . , , , .

  • Only shaders 1.1 (No/Yes) - , low-end - GeForce FX. 1.1, SM 1.1. , ( - , ). .

  • HDR rendering (No/Yes) - HDR , 16- , , , Bloom. HDR , . Bloom , , .

    HDR rendering No     HDR rendering Yes

    , HDR , 10% 1024x768. , . , HDR ATI RADEON X1000 . 16- , . RADEON X1000 HDR .

NVIDIA GeForce 7800 GTX ATI RADEON X1800 XL , 4x 16x, 1024x768 ( HDR rendering ), 50-60 FPS, 25-30. , NVIDIA GeForce 7600 GS/GT ATI RADEON X1600 PRO/XT, , , .

, . Serious Sam 2 \Content\SeriousSam2\Sam2.ini . , , , , . , , . 1280x1024, . [Engine]:

gfx_pixResWidth = 1280;
gfx_pixResHeight = 1024;

, . , . Sam2.ini " ".

API, . , Serious Engine 2 API: Direct3D OpenGL, OpenGL, - , Direct3D. , NVIDIA, OpenGL, . , OpenGL, gfx_iAPI [Engine], - gfx_iAPI = 1;. GfxD3D.dll GfxOGL.dll Bin, INI- .

, "" OpenGL, , 3D OpenGL . ( glare bloom, ), OpenGL .

, , Sam2.ini, :

  • d3d_bForcePixelProgramPartialPrecision - , . , . , , .
  • d3d_iMaxAllowedPixelProgramVersion - . , GeForce FX 1.4 , . "14", 2.0 , .
  • d3d_bForcePixelProgramVersion2 - , ATI. "1", 2.0. , SM 2.0 1.1, 1.4 2.0, 2.0. NVIDIA GeForce 7800 GTX , ATI RADEON .
  • ren_pixDynamicShadowSize - . , , 512, 512x512 . , . , - .
  • mdl_bHardwareSkinning - CPU, . , "1", "0", CPU. , , , 10%.