Авторизуйся и получи скидку!

О настройках графики (продолжение)


Опубликовано: 2013-06-26 13:12:58

О настройках графики (продолжение).

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


Музыкальный фон создадут те же Black Sabbath со своим Оззи Осборном и со своим же новым альбомом «13» - вещь получилась довольно интересной, хотя и мрачноватой чуть больше, чем обычно. Но, они ведь все же «Black»…

Тесселяция

Тесселяция – очень нужный и полезный эффект. Её задача № 1 – повышение детализации объектов 3D сцены. Если сглаживание и фильтрация, о которых было рассказано в предыдущей статье, работают с закраской пикселей, то тесселяция «обрабатывает» и изменяет саму 3D модель.


Вернемся немного назад, год так в 2004 и вспомним, что все 3D модели на мониторе состоят из энного количества плоских «кусочков» - полигонов. В тех самых «древних» играх модели практически не имели круглых и скругленных линий – модели был угловатые; на пример, колеса были не круглые, а 16-ти и сколько то там угольные, даже головы у персонажей имели углы и грани. Все это было от того, что модели были очень бедны на количество полигонов. Со временем уровень игровой графики подрастал, производительность видеокарт тоже на месте не стояла, и, соответственно, 3D модели тоже прибавляли в количестве этих полигонов, но все равно грани оставались, хоть и не такие ужасные, как раньше. Создавать изначально богатые полигонами модели было тяжко, как для дизайнеров, так и для аппаратной части ПК.


Все изменилось с момента выхода DirectX 11 – он принес пользователям тесселяцию. Эта самая тесселяция разбивает имеющиеся полигоны 3D модели на более мелкие – повышает их количество; новые полигоны, в свою очередь, располагаются максимально приближенно к первоначальной поверхности. А за счет большего количества полигонов 3D модель становится более детальнее и лишается угловатостей. Второй немаловажный момент работы тесселяции – это то, что она отрабатывается силами именно ГП. Раньше за построение «каркаса» 3D модели отвечал всецело ЦП и в связи с особенностями его архитектуры, делал и делает он это не так эффективно, как ГП. Теперь же, 3D модель строится тандемом ЦП + ГП: каркас – это ЦП, доделка каркаса полигонами – ГП.


Вот примерно так работает тесселяция:



У «первой» головы и так, в принципе, полигонов достаточно – для игр середины 2000-х это недостижимый уровень, тогда все было на много страшнее и более уныло. Но задействовав тесселяцию мы делаем эту голову по качеству модели куда более приближенной к «кинематографичной реальности». К стати тесселяция как раз и пришла в игры из кинематографа – еще за долго, до выхода DirectX 11, эта функция использовалась для рендера компьютерных спецэффектов в профессиональной графике.


Второй шаг повышения детализации модели – это использование карт смещения. Карта смещения – это текстура, хранящая информацию о высотах – координатах краев полигонов. Данная функция еще сильнее изменяет модель, точнее ее поверхность, на основании данных о вершинах. Таким образом, рельефность модели уже не имитируется цветами текстуры, а модель становится рельефной физически – полигоны модели смещается вверх или вниз. Естественно, что чем лучше «поработает» тесселяция – наплодит больше полигонов, тем качественнее отработает себя карта смещения.



На рисунке выше видно процесс превращения «обычной» 3D модели в 3D модель «продвинутую»: 1 – то, что создал дизайнер, 2 и 3 – заработала тесселяция, модель стала «качественнее», 3 – в игру вступают карты смещения, качество и детализация модели возрастает в разы.


Естественно, что работа тесселяции не дается даром – во-первых, нужна видеокарта, аппаратно и стопроцентно поддерживающая DirectX 11 (начиная с линеек HD 5xxx у красных и GF 4xx у зеленых – но и даже в этих линейках не все карты поддерживают DirectX 11); к тому же, и естественно, нужны либо Windows Vista, либо что-то постарше – ОС тоже должна «держать» DirectX 11, и даже сама игра также должна поддерживать этот DX11. Во-вторых, опять же нужна высокая производительность видеокарты – тесселяция хоть и забирает не малую часть ГПУ, но отрабатывает затраченные на нее ресурсы по полной программе. К тому же по затратам производительности выгоднее использовать именно тесселяцию, чем изначально создавать 3D модели с количеством полигонов, равным задействованной этой самой тесселяции.


Одной из многих игр, где тесселяция – бальзам на душу эстета, это серия Hitman в целом и лысая, татуированная голова «47-го» в частности. Вот она в далеком том самом 2000 году в игре Hitman: Codename «47»:



Комментарии излишни. Прошло 13 лет, и так она стала выглядеть в Hitman: Absolution.



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


В общем, тесселяция must have.

SSAO (Screen Space Ambient Occlusion) или имитация глобального освещения (Global Illumination, GI).

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


В игровой графике данные законы оптики тоже решили применить для придания картинке большей глубины и реалистичности. Естественно, что полный расчет всех источников света, условий его преломления/ отражения и создаваемых при этом теней – задача непосильная даже для профессиональных видеокарт, а делать эти расчеты в режиме реального времени – вообще вешалка. Вот и придумали, причем именно в компании Crytek для движка CryEngine 2, это самое SSAO, которое имитирует как может полноценное глобальное освещение, а точнее непрямое освещение и соответствующее ему затенение.


Раньше были попытки использовать в игровой индустрии метод Ambient occlusion (AO) – он способен творить настоящие чудеса с картинкой, но съедал он при этом неимоверно много ресурсов. Метод SSAO сохранил большинство функций АО, но стал менее требовательным к возможностям ПК за счет приближенных, а не точных расчетов. Естественно, это не самым лучшим образом отразилось на визуальном качестве всей картинки, но подобие глобального освещения стало доступным для игровых видеокарт. Еще одной особенностью SSAO является то, что метод задействует только силы ГП, а не всей системы с ЦП и оперативной памятью.


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


Рассматривать эффект SSAO на примере каждой тени – дело не интересное. Здесь нужно рассматривать картинку именно целиком и сразу всю. Раз уж освещение глобальное, то и эффект от него больше проявится в глобальном рассмотрении.


Вот картинка без включенного SSAO:



Теперь в настройках включаем SSAO:


Эффект заметен с первого раза и это при том, что Hitman: Absolution не самая продвинутая в плане сложного освещения - затенения игра. Включенный SSAO улучшает общее впечатление о картинке, делая ее более реалистичной, сложной и интересной.

Эволюционным витком SSAO стал режим HDAO (High Definition Ambient Occlusion) – еще более качественный, красивый и точный, но и требовательный режим. Даже сегодня далеко не все игры его используют. Вот примеры для сравнения:



А теперь HDAO:



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


В общем, по сложному затенению тоже можно сказать «must have». Данный эффект хоть и придавит видеочип но не просто так, да и не так, чтоб уж совсем сильно придавит... С качественными и сложными тенями картинка будет выглядеть куда более интереснее и реалистичнее, чем без них.

Вертикальная синхронизация (V-Sync).

Вертикальная синхронизация – это, можно сказать, процесс, синхронизации вывода просчитанных и готовых к употреблению кадров на монитор с частотой обновления экрана монитора (вертикальной развертки). Т.е. каждый готовый кадр выводится на экран монитора именно в момент его обновления. Следующий отрисованный кадр экран покажет только в момент следующего своего обновления – одно обновление картинки на мониторе (1 Гц) – один кадр, ни больше, ни меньше. Если установлена частота обновления монитора в 60 Гц – стандартно для FullHD мониторов, то за 1 секунду на мониторе отобразится ровно 60 кадров.


Для чего нужен V-Sync? Попробуйте хорошенько подергать мышку горизонтально из стороны в сторону и присмотреться к экрану: на мониторе можно будет заметить совсем неприятные для глаз разрывы кадров (горизонтальные полоски). По факту на экран монитора выводятся почти одновременно 2 кадра, но кусочками – нижняя часть кадра может отставать от верхней, или наоборот – так мы получаем эффект сдвинутого кадра. Вертикальная синхронизация полностью убирает эти разрывы, т.к. при её включении в конкретный момент времени выводится только один целостный кадр.


В виду принципа своей работы V-Sync ограничивает количество кадров, выводимых на экран монитора, частотой развертки этого самого монитора, т.е. больше 60 кадров при 60 Гц`овом мониторе она не покажет, но в этом есть масса плюсов. Во-первых монитор физически не способен показать кадров больше, чем позволяет его частота обновления: пусть даже в системе будет стоят 3 титана, которые будут отрисовыать 100500 кадров в секунду – больше кадров, чем позволят монитор мы не увидим – разве что много «порванных». Во-вторых, если все равно мы лишние кадры не видим, то зачем их отрисовывать? V-Sync позволяет разгрузить ГПУ от лишней бессмысленной работы, а чем меньше нагружен процессор, тем меньше он греется и тем меньше нужно заставлять работать кулер видеокарты – т.е. мы в нагрузку получаем еще и тишину.


В наборе практически бессмысленных утилит Lucidlogix Virtu MVP есть такая функция, как «виртуальная вертикальная синхронизация» (Virtual V-Sync), которая позволяет получить эффект вертикальной синхронизации – убрать разрывы, при этом не ограничивая количество кадров частотой обновления экрана монитора. Вопрос: «А зачем это нужно, если больше 60 (75) мы не увидим?» остается открытым.
На производительности видеокарты включение вертикальной синхронизации практически никак не сказывается, т.е. никаких особенных ресурсов она не требует – бывают в совсем очень редких случаях исключения, но и в них ни о каких «обвалах» речи не идет.


Один из единственных случаев, когда вертикальная синхронизация – зло, это тестирование видеокарты: игры и бенчмарки. Здесь нужно замерить максимальную производительность видеокарты и «обрезать» возможности ГПУ – бессмысленно. Во всех других бытовых случаях включать вертикальную синхронизацию – очень даже хорошо.


Что делать, если видеокарта даже по максимальному количеству кадров не дотягивает до частоты обновления монитора, а средний FPS держится на 30-ти – 40 кадрах? Вертикальную синхронизацию все равно можно включать. Она будет нормально работать и в таких условиях: не будет ни единого разрыва, а свободные герцы монитора, так сказать, останутся пустыми. На загрузке ГПУ это отрицательно так же не скажется – никто ничего обрезать не будет.

Глубина резкости (Depth of field или DOF)

Как работает глубина резкости? Попробуйте сосредоточить зрение на каком ни будь ближнем объекте. Если все сделано правильно, то все другие объекты на заднем плане не попавшие в фокус зрения будут казаться размытыми. Справедливо и наоборот – если сосредоточить зрение на дальнем объекте, то размытыми будут ближние объекты. Лучше всего заметно, когда расстояние между объектами в фокусе/ не в фокусе побольше.



В игровой графике этим занимается не глаз, а глубина резкости. Этот «спецэффект» конечно придает картинке больше кинематографичности и реализма, включает «эффект присутствия», но в тоже время очень сильно бьет по ГПУ. В некоторых играх разработчики могут еще и не допилить DOF до нормального состояния, и мылиться будет все на свете, причем очень сильно. Также во многих играх этот самый DOF и не всегда заметно – т.е. он никак не улучшает картинку, но ресурсы продолжает жрать по полной программе – в общем, один из первых кандидатов на приношение в жертву великому FPS`у.

Размытие при движении (Motion blur)



Motion blur – ни что иное, как смазывание фоновой или всей картинки при повороте камеры. Визуально данный эффект доступен и человеческому глазу – при резком повороте головы изображение смазывается. Размытие, конечно, делает графику более динамичной, но за это тоже нужно заплатить. Во-первых, самые сильные дергания камеры происходят именно в самых динамичных сцена, при которых нагрузка на систему значительно возрастает. Т.е. размытие начинает потреблять больше всего ресурсов именно тогда, когда они нужны больше всего, что на не самых мощных системах при прочих высоких настройках может придать картинке еще и эффект тупилова. Во-вторых, многие разработчики могут и перебрать с эффектом размытия, и тогда при дергании камеры вся картинка превращается в кашу. Зачастую в настройках графики можно и понизить количество и качество этого самого Motion blur – часто называется как «степень размытости» или, если данный эффект не нравится либо системе нужно дать немного воздуха, то и вообще отключить его.

Parallax mapping

Parallax mapping – техника работы с текстурами, которая позволяет имитировать рельефность текстуры, при этом сама текстура остается совершенно плоской. Выше мы познакомились с картами смещения, которые физически придают модели рельефность, но использовать их для, допустим, создания рельефности текстуры на каменной стене – слишком дорого для ресурсов видеокарты, да и особого смысла не имеет – пробежали мимо такой текстуры и не заметили. В таких случаях применяют Parallax mapping, который способен имитировать на текстуре рельефность только за счет пересчета цвета пикселей, в которые попала текстура. Данный метод существенно экономит ресурсы видеосистемы, но и имеет разные степени настройки качества – чем выше установлено качество Parallax mapping, тем больше этот эффект откусит от ГПУ. Но все же по сравнению с 3D текстурированием это мелочи.



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

Шейдер (ы)

Шейдеры – это уже не «настройки» графики, а небольшие подпрограммки, написанные на спциальных шейдерных языках: DirectX, OpenGL; с помощью которых видеочип может использовать эффекты графики, с которыми он не знаком. Чтобы видоечип мог работать с тем или иным эффектом графики, он должен «понимать» алгоритм построения этого эффекта, т.е. поддерживать его на аппаратном уровне. Если бы не шейдеры, то разработчики игр, а точнее дизайнеры, могли использовать в своих поделках только те графические эффекты, которые поддерживает видеокарта, что в свою очередь очень сильно ограничило бы набор эффектов и полет фантазии, а мы в свою очередь, получали игры с одинаковыми эффектами графики – что есть не интересно. Шейдеры активно используются для создания новых эффектов в игровой графике.


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

  • Вершинные шейдеры (Vertex Shader) – шейдеры, которые работают с данными о вершинах полигонов модели, текстурными координатами и пр.
  • Геометрические шейдеры (Geometry Shader) – работают не только с вершинами полигонов, но и с самим полигоном.
  • Пиксельные шейдеры (Pixel Shader) – работает с растровыми двухмерными изображениями, т.е. обрабатывает пиксель на предмет его цвета, глубины, текстуры, попавшей в данный пиксель. Пиксельный шейдер используется уже на самом последнем эта обработки кадра – когда сцена уже просчитана и нужно только отполировать ее.

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


Еще один момент, связанный с шейдерами: в минимальных требованиях игр все чаще указывается версия наборов этих самых шейдеров: Shader Model 5.0 – это значит, что в игре используются такие шейдерные эффекты, которые вошли только в самый последний набор (в данном случае 5.0). Если видеокарта не поддерживает шейдеры данной версии, а только предыдущую версию набора, то все плохо – в игре пропадет значительная часть визуальных эффектов, да и сама игра может и не запустится.

Post-processing (пост-обработка).

Иногда для применения некоторых эффектов графики видеочипу необходима информация об уже полностью готовом кадре с построенной 3D сценой – вот все эти эффекты и называются Post-processing, или по-нашему пост-обработка. В основном Post-processing задействует пиксельные шейдеры для придания готовой картинке каких-то особенностей игровой графики конкретной игры – например Hitman: absolution имеет картинку, в некоторой степени напоминающую старый кинематограф, или в Silent Hill эффект зернистости на экране.

Лучи солнца

Все чаще в играх разработчики применяют такой эффект, как «лучи солнца»; в продвинутом варианте это называется «трассировка лучей». Этот эффект прорисовывает лучи солнца, которые пробиваются сквозь листву, кроны деревьев и/или другие объекты. Данный эффект не какой то тренд в графике, а только возможность приблизить графику к реализму. Наблюдать этот эффект IRL можно довольно часто.


Эффект очень красивый, но довольно требовательный к ресурсам видеочипа. В некоторых играх, например STALKER Чистое небо или Зов Припяти, в меню настроек есть множество параметров регулировки качества данной опции. Чаще всего этот эффект применяется на как минимум DirectX 10 – аппаратная поддержка началась именно с него, но вот польские умельцы смогли реализовать лучи даже на DirectX 9 в игре Ведьмак 2: Убийцы королей. Скорее всего, там лучи идут не от солнца, а от шейдеров…

Вот, в принципе, и почти все настройки графики, свойственные большинству игр. Конечно же, всяких таких примочек куда больше: продвинутые игровые движки могут содержать много интересных настроек и эффектов, так сказать, эксклюзивных для данной игры; но перечисленные в обеих статьях «улучшения» задействуются чаще всего. При умелом и толковом использовании параметров качества можно и красотами наслаждаться и в то же время не наслаждаться слайд-шоу. Зачастую разница одного параметра графики на уровнях «высоко» и «очень высоко» имеет практически минимальную визуальную разницу, заметную только хорошо вооруженному глазу – в таких случаях нужно крутить настройки, что бы не платить за возможность потренировать наблюдательность необходимыми для более различимых эффектов производительностью системы в общем и ГПУ в частности.


Бытует мнение, что уровень игровой графики на PC сдерживается возможностями актуальных консолей и с выходом Next-gene графика в играх на компах взлетит до небывалых высот. Отчасти это правда, и на повышение до определенного уровня качества все же стоит, но вот до «революции» это на врят ли дотянет… Все же в новые консоли пару «Титанов» или ARES II никто всовывать не будет – слишком уж дорогая и горячая консоль получится, а будет обычная средненькая на сегодня видеокарта. Нам обещают теоретическую производительность видеосистемы консоли на уровне 1,5 терафлопс (что-то типа лошадиных сил в двигателе автомобиля), тогда как карта уровня «middle end» на ПК имеет 2,5 Тфлопс. Другое дело, что консоль имеет четко - стандартную конфигурацию, что позволяет разработчикам оптимизировать игру именно под конкретное железо и использовать его возможности более эффективно. А вот количество конфигураций ПК стремится к бесконечности и тут разработчикам приходится идти на жертвы.


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

Почти всё.

P.S. Немного о моддинге. К допиливанию корпусов люди уже как-то привыкли и взялись за допиливание прочей периферии. Добрались руки и до внешнего кармана HDD. Казалось бы – совсем тривиальна вещь этот карман, но опять же прямые руки умельца способны из обычного сделать необычное:




Также, если есть необходимость немного расширить жилплощадь, то можно оборудовать небольшую комнатку прямо в корпусе ПК:




Теперь всё.

Автор: Артём О. (С)