i3D-Quality — Под микроскопом: Апрель-май 2008, DX9 vs DX10 в Crysis


Одной из наиболее обсуждаемых в последнее время тем является вопрос необходимости API DirectX 10 как такового. Действительно, если игры обеспечивают сопоставимый уровень графики под API DirectX 9, то кому и зачем нужен DirectX 10, который, вдобавок, на этот раз не является в полном смысле бесплатным, потому как работает только на новой ОС Windows Vista, переход на которую стоит не таких уж и несущественных денег.

Наконец, как бы это ни было печально для компании Microsoft, в реальности игры под Windows XP по-прежнему работают быстрее, чем под Windows Vista — причём, зачастую один и тот же DX9-рендерер под XP работает быстрее, чем под Vista, а уж про DX10 и говорить нечего.

Сегодня мы открываем новую серию публикаций в рамках рубрики «Под микроскопом» i3D-Quality — сравнение DX9- и DX10-рендереров в играх, которые предоставляют играющему подобный выбор. И первым «гостем» новой серии становится игра Crysis, о которую уже сломано немало копий в попытках доказать нужность или, наоборот, ненужность её DX10-рендерера.

Ситуация осложняется тем, что Crysis предоставляет весьма продвинутые возможности по настройке своего рендерера, и некоторые игроки утверждают, что путём правки конфигурационных файлов под DX9 вполне можно получить качество графики ни в чём не уступающее DX10-рендереру игры.

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

Конфигурация системы

  • AMD Athlon 64 X2 4600+ / NVIDIA nForce4 SLI / 4 ГБ DDR400 ОЗУ
  • ОС Microsoft Windows Vista SP1 64-bit
  • NVIDIA GeForce 8800 Ultra, драйверы ForceWare 175.16

В драйвере видеокарты отключались оптимизации текстурной фильтрации (включался HQ-режим), опция Negative LOD Bias переключалась в положение Clamp. Прочие опции оставались на умолчательных значениях.

Игра запускалась в разрешении 1600х1200 с MSAA 8x (режим 8xQ в случае видеокарт NVIDIA GF8+).

Внимание: полноразмерные версии скриншотов представлены в формате PNG в полноценном качестве. Размер скриншотов варьируется от 1,5 до 4,0 МБ!

DX10 против всех

Для сравнения мы выбрали 13 игровых сцен в начале уровня Recovery, каждая из которых, на наш взгляд, акцентирует разные особенности рендерера Crysis.

Сравнение проводилось под ОС Windows Vista (потенциально возможна разница в качестве рендеринга API DX9 в Windows XP и в Windows Vista, однако вероятность этого довольно невелика).

Мы сравнивали 4 режима работы двух рендереров Crysis:

  • DirectX 9, High-настройки — DX9H
  • DirectX 10, High-настройки — DX10H
  • DirectX 9, «Very High»-настройки — DX9VH
  • DirectX 10, Very High-настройки — DX10VH

Режим Very High в DX9-рендерере активировался при помощи:

  1. замены конфигурационных файлов режима High в папке \Crysis\Game\Config\CVarGroups\ на твикнутые конфиги от MrGnome
  2. прописывания в файле autoexec.cfg в папке \Crysis\Game\Config\ значений переменных, аналогичных тем, каковые сама игра автоматически выставляет в режиме DirectX 10 Very High.

В кач-ве основы для нашего autoexec.cfg был взят отредактированный autoexec.cfg от Helder [HP] Pinto.

Мы исходили из следующих предварительных предположений:

  • Разница в качестве между High-настройками DX9- и DX10-рендереров должна быть минимальной.
  • Разница в качестве между High- и Very High-настройками DX9- и DX10-рендереров соответственно должна быть весьма ощутимой.
  • Разница в качестве между Very High-настройками DX9- и DX10-рендереров должна быть заметной.

Традиционно уже предупреждаем о том, что гамма скриншотов DX9-рендерера Crysis правилась нами в графическом редакторе, и потому на разницу в освещенности между DX9 и DX10 не нужно обращать внимания.

Объяснение некоторых из применяемых нами в этой статье терминов можно прочитать в статье Алексей Берилло «Современная терминология 3D графики».

Давайте посмотрим на первую сцену.

Сцена 1: Parallax Occlusion Mapping

  DX9 High DX10 High DX9 Very High DX10 Very High
1


Parallax Occlusion Mapping является одной из наиболее вычислительно сложных разновидностей Parallax Mapping и фактически представляет собой форму локального рейтрейсинга в пиксельном шейдере. Реализовать этот эффект возможно в рамках функционала API DX9 SM3, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения ветвлений в пиксельном шейдере. Исторически сложилось так, что большинство подобных видеокарт поддерживают не только DX9 SM3, но уже сразу и DX10 SM4 — единственным семейством SM3-видеокарт с относительно высокой скоростью исполнения ветвлений в PS являются видеокарты ATI Radeon X1000.

Учитывая вышесказанное, не слишком удивительно, что в Crysis активация этого эффекта «завязана» на наличие у видеокарты поддержки API DX10. Вместе с тем, как показывают скриншоты, POM отлично активируется и в DX9-рендерере Crysis, а потому доступен и тем, кто по каким-либо причинам не желает устанавливать Windows Vista.

Существенной разницы в качестве между режимами DX9H / DX9VH и DX10H / DX10VH мы не обнаружили. Под API DX10 иначе отрисована текстура забора в левой верхней части экрана, но утверждать, что в DX10-рендерере она отрисована более качественно мы не можем.

Сцена 2: Foliage

  DX9 High DX10 High DX9 Very High DX10 Very High
2


Сколько-нибудь заметной разницы между режимами DX9H / DX9VH и DX10H / DX10VH опять нет. Переход с режима High на режим Very High под любой из двух версий API DX приводит к появлению уже знакомого нам POM на поверхности земли и весьма незначительному росту количества растительности. Любопытно также отметить, что режим Very High обеспечивает более высокую контрастность картинки...

Потенциально новые возможности API DX10 и унифицированных DX10-архитектур позволяют реализовывать существенно более сложные геометрию и анимацию, что наверняка пригодилось бы при создании реалистично выглядящих тропических джунглей — если бы разработчики Crysis не поленились этими возможностями воспользоваться.

Сцена 3: HDR Bloom

  DX9 High DX10 High DX9 Very High DX10 Very High
3


Какой-либо существенной разницы опять нет. Разве что в режиме DX9H отсутствует жёлтый блум в листве стоящего левее центра сцены дерева да включение VH-режима опять заметно повышает контрастность картинки.

Обратите также внимание на то, как включение POM в VH-режимах влияет на детализацию текстур по сравнению с H-режимами — её падение (!) особенно очевидно в левой нижней части скриншота.

DX10, по сути, мало в чём отличается от DX9 в плане возможностей для создания HDR. В преимущества новой версии API можно записать разве что новые форматы буфера кадра и обязательную поддержку блендинга с MSAA для форматов высокой точности, но всё это, в принципе, было реализуемо и в DX9 — просто в DX9 не было единого стандарта на эту функциональность в железе.

Сцена 4: Soft Shadow Mapping

  DX9 High DX10 High DX9 Very High DX10 Very High
4


«Мягкие динамические тени» являются еще одним вычислительно сложным эффектом, выигрывающим от наличия в GPU эффективного исполнения ветвлений в PS. Другими словами, как и POM, они вполне реализуемы в рамках возможностей DX9 SM3, однако оптимально исполняться будут, в основном, на DX10 SM4 GPU.

Сравнение режимов в этой сцене дало несколько неожиданные результаты: если в режиме High DX10-рендерер оказался чуть лучше DX9-рендерера, то в режиме Very High под DX10 на «мягкой» границе тени появилась непонятная «регулярная» структура, отсутствующая в аналогичной границе той же тени под API DX9, за счёт чего режим DX9VH оказался наилучшим по качеству картинки.

Эта сцена также демонстрирует вторую существенную разницу между режимами High и Very High (первая — наличие POM): в режиме Very High границы теней гораздо «мягче», чем в режиме High.

Сцена 5: Water Surface

  DX9 High DX10 High DX9 Very High DX10 Very High
5


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

В этой сцене мы можем, пожалуй, впервые видеть превосходство DX10-рендерера над DX9-собратом, причём, как в режиме VH, так и в режиме H. Проблема, однако, заключается в том, что далеко не все расценят отмеченную нами разницу как превосходство...

Поясним: под API DX10 водный шейдер сглажен, на его удалённых от экрана участках отсутствуют белые «барашки» на гребнях волн, которые в движении выглядят больше как шум, чем как «барашки». По сути, мы наблюдаем антиалиасинг пиксельных шейдеров, присутствующий только в DX10-рендерере Crysis. Но, как это уже не раз случалось с другими видами антиалиасинга, кто-то может расценить этот эффект не столько как сглаживание, сколько как «замыливание» и снижение детализации...

Из других особенностей разных режимов рендеринга этой сцены следует отметить рост геометрической детализации (скала в центре скриншота, пальмы в верхней половине) и изменение цвета водной поверхности при переходе от H- к VH-режиму как под DX9-, так и под DX10-рендерером — очевидно, что сложность шейдера водной поверхности повышается при переходе к VH-режиму отображения.

Сцена 6: Water Refraction and Caustics

  DX9 High DX10 High DX9 Very High DX10 Very High
6


Шейдер воды вблизи — это не совсем то же самое, что шейдер воды в отдалении. Вода прозрачна и преломляет свет, что выражается в искажениях восприятия скрытых водой предметов и в появлении на дне «солнечных зайчиков».

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

Минорная разница относится к уже отмеченным выше особенностям текстурирования (в DX10-режиме камни отекстурированы несколько иначе) и построения шейдера водной поверхности (сглаживание «барашков» в DX10-рендерере и более сложный рассчёт цвета водной поверхности в VH-режиме).

Сцена 7: God Rays

  DX9 High DX10 High DX9 Very High DX10 Very High
7


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

Собственно, добавить и нечего, потому как в остальном H- и VH-режимы под DX9 и DX10 полностью аналогичны. Можно разве что отметить гораздо более сложную систему распространения света через атмосферу игры в VH-режиме, доступную, впрочем, как под DX10-, так и под DX9-рендерерами.

Сцена 8: Terrain Geometry, Light Scattering

  DX9 High DX10 High DX9 Very High DX10 Very High
8


Разительный контраст между High- и Very High-режимами и — почти полное отсутствие разницы между DX9 и DX10. «Почти», потому как на воде под DX10 опять нет пресловутых «барашков» да несколько иначе отрисованы тени на горах на горизонте.

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

Даже несколько жаль, что вся эта красота ничуть не смущаясь работает и под DirectX 9...

Сцена 9: Underwater Effects

  DX9 High DX10 High DX9 Very High DX10 Very High
9


Еще одно сравнение шейдера водной поверхности, но теперь — с позиции краба, т.е. из-под воды.

Разницы между High и Very High режимами под разными API опять нет, но посмотрите на прекрасные эффекты рефракции в VH-режиме, напрочь отсутствующие в режиме High — VH-шейдер воды в Crysis всерьёз пытается моделировать преломление лучей света водной поверхностью в реальном времени!

Сцена 10: Peripheral Blur

  DX9 High DX10 High DX9 Very High DX10 Very High
10


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

Второй, более часто используемой разновидностью этого эффекта является Depth of Field или т.н. «глубина резкости» — этот эффект в Crysis также используется, но только в VH-режиме, и пронаблюдать его можно выше в сцене №8.

Peripheral Blur же используется в Crysis под обоими версиями рендерера, в обоих протестированных режимах настроек и с почти одинаковыми результатам — разве что под DX10 качество размытия чуть выше, оно более «мягкое», нежели под DX9, но, в самом деле, разница ничтожна.

Сцена 10: Explosion

  DX9 High DX10 High DX9 Very High DX10 Very High
11


Одно из наиболее спорных сравнений этой статьи, однако поймать два совершенно одинаковых взрыва в Crysis банально невозможно.

Вместе с этим, даже имеющийся результат позволяет нам утверждать, что взрывы техники в Crysis более-менее одинаковы во обоих API и не отличаются даже между High- и Very High-режимами.

Сцена 12: Smoke

  DX9 High DX10 High DX9 Very High DX10 Very High
12


Еще одно сравнение динамического эффекта, и опять всё более-менее одинаково, разве что в VH-режиме дым выглядит погуще, чем в High вне зависимости от используемого API.

Сцена 13: Full Screen Motion Blur

  DX9 High DX10 High DX9 Very High DX10 Very High
13


Последнее сравнение затрагивает эффект полноэкранного размытия движения, проявляющийся при поворотах камеры в Crysis.

Довольно неожиданно после всех полученных выше результатов, мы обнаружили, что этот эффект обладает наивысшим качеством именно в VH-режиме DX10-рендерера, и наши настройки не смогли обеспечить аналогичное качество в том же VH-режиме под API DX9.

Выводы

Разумеется, наше сравнение не претендует на абсолютную полноту, и мы на 100% уверены в том, что какие-то эффекты остались за гранью этого исследования. Однако сам масштаб нашего материала позволяет нам сделать некоторые усреднённые выводы по использованию игрой Crysis функций API DirectX 10 и необходимостью этого API для Crysis.

Для начала, давайте подведём общий итог сравнения 13 представленных выше сцен:

  1. в 2 из 13 сцен режим DX10 High оказался чуть лучше режима DX9 High; в 11 из 13 сцен режим High обеспечил сравнительно одинаковое качество рендеринга под обоими API;

  2. в 7 из 13 сцен режим DX10 Very High обеспечил ощутимо более высокое качество рендеринга, нежели режим DX9 High; в 6 из 13 случаев разница была незначительной;

  3. в 2 из 13 сцен режим DX10 Very High обеспечил более высокое качество рендеринга, нежели «неофициальный» режим DX9 Very High; в 10 из 13 случаев разница отсутствовала; а в 1 из 13 случаев режим DX9VH оказался красивее режима DX10VH.

Опираясь на полученные результаты можно сделать следующие выводы:

  • Crysis, по сути, не является DX10-игрой, и запрет включения режима Very High под API DX9 есть ничто иное, как маркетинговое решение разработчика. Подавляющее большинство «DX10-эффектов» Crysis доступно и под DX9, а это означает, что шейдеры игры практически не используют уникальные новые возможности API DX10 или используют их без каких-либо последствий для результирующего качества картинки.

  • Путём исправления конфигурационных файлов игры пользователи Windows XP могут получить почти полный аналог качества DX10-рендерера Crysis без необходимости в самом DX10. В рамках этого исследования мы отметили всего лишь два случая превосходства DX10-рендерера над DX9-рендерером в качестве изображения (шейдер водной поверхности и эффект размытия движения) и, как это не странно, один обратный случай превосходства DX9-рендерера над DX10-собратом (алгоритм размытия краёв динамических теней).

  • Если вы по каким-либо причинам не хотите или не можете отредактировать конфигурационные файлы игры и не имеете возможности играть под API DX10, то вы лишаетесь целого набора красивейших эффектов, существенно влияющих на качество картинки Crysis. Проще говоря, «официальный» режим DX9 High существенно уступает «официальному» режиму DX10 Very High в качестве рендеринга.

Итоговый вывод будет двояким.

С одной стороны, исправив конфигурационные файлы игры, вы можете получить нечто очень близкое к DX10-графике под DX9 в Windows XP — и при этом производительность наверняка будет выше, чем у DX10-режима под Windows Vista.

С другой стороны, если гнаться за перфекционизмом, то придётся признать, что получить «настоящий» DX10-режим вы сможете только под API DX10, потому как ряд эффектов (два обнаруженных нами указаны выше, но кто поручится, что их не три, четыре, пять?..) под API DX9 попросту недоступны. Да, эти эффекты весьма незначительны визуально, но — мы же за перфекционизмом гонимся...

В дальнейших выпусках i3D-Quality мы продолжим тему сравнения DX9- и DX10-рендереров, но уже в других играх.





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