i3D-Quality — Под микроскопом: Ноябрь 2007, Crysis


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

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

Разумеется, когда мы говорим «компании-производители», то думаем «ATI и NVIDIA», то есть, пардон, «AMD и NVIDIA». «Сладкая парочка» успешно выдавила с рынка всех конкурентов помельче, после чего конкуренция лишь обострилась — борьба идёт буквально за каждый голос, за каждый кадр, за каждый бенчмарк.

В условиях близости производительности новых видеокарт двух заклятых конкурентов в новой, сверхтребовательной и популярной игре, и у NVIDIA, и у AMD неизбежно появляется желание (если не прямое требование руководства) обеспечить своим продуктам пусть минимальное, но лидерство. А как сделать это быстро и дешево, без продолжительных и потенциально затратных переговоров с разработчиками? Правильно — чего-нибудь «подкрутить» посредством нового драйвера.

И вот в сети появляются слухи, согласно которым NVIDIA в новой версии драйверов (169.04) «читит» в Crysis — упрощает графику ради достижения более высокой производительности.

«Чит» не так прост: заметить его можно лишь самому (ни скриншоты, ни ролики, записанные при помощи Fraps, его не передают) и только в режиме бенчмарка. При быстром перемещении камеры относительно поверхности воды становится видно, что видеокарты NVIDIA с новым драйвером обновляют отражения берегов в водной поверхности несколько реже, нежели это делают видеокарты AMD, и, что самое главное, реже, нежели сами видеокарты NVIDIA с драйвером предыдущей версии.

NVIDIA довольно оперативно реагирует на обвинения и примерно через неделю выпускает новую версию драйвера, в которой эта ошибка оказывается исправленной, а производительность даже несколько вырастает (определённая задержка в обновлении отражений остаётся, но она присутствует на всех видеокартах и является особенностью работы шейдера, отвечающего за формирование воды в Crysis — частоту обновления отражений можно регулировать консольной командой). Однако репутация компании уже опять «подмочена», появляются подозрения — а что если эта ошибка была допущена сознательно; что если это действительно чит, а не ошибка?

Мы также заинтересовались этим вопросом и решили посвятить первое «микроскопное» тестирование раздела i3D-Quality игре Crysis, а точнее — сравнению качества рендеринга, которое обеспечивают в этой игре DX10-видеокарты AMD и NVIDIA.

Особенности движка Crysis — CryEngine 2

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

Crysis содержит целых 4 рендерера:

  • 32-битный DX9-рендерер;
  • 64-битный DX9-рендерер;
  • 32-битный DX10-рендерер;
  • 64-битный DX10-рендерер.

Как мы покажем ниже, ВСЕ ОНИ отличаются друг от друга в качестве выдаваемой картинки.

Отметим, что вопрос сравнения качества рендеринга разных рендеров нас сегодня не интересует — возможно, мы посвятим этому вопросу одно из следующих исследований (благо, что, по сообщениям сети, при помощи определенного набора консольных команд можно заставить DX9-рендерер игры выдавать почти такое же качество, которое выдаёт DX10-рендерер).

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

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

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

Сразу после загрузки Через 30 секунд

Неправда ли, разительная разница? А между тем скриншоты сняты с одной и той же видеокарты, на одних и тех же настройках, но — с разницей примерно в 30 секунд между снятием первого и второго скриншотов.

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

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

Но это еще не всё. Вторая особенность присуща 32-битным рендерерам Crysis и связана, вероятнее всего, с размером адресного пространства, доступного под ОС Windows 32-битным приложениям.

Давайте снова посмотрим на скриншоты:

Начало подгрузки Завершение подгрузки

Обратите внимание на текстуры руки с оружием, горы и камней на берегу: они разительно отличаются по своему качеству в момент непосредственно сразу после загрузки уровня и спустя 10-15 секунд после этого момента.

32-битный рендерер (как DX9, так и DX10) «подгружает» более детализированные версии текстур уже после того, как движок Crysis загрузил сам уровень и отдал управление в руки игрока.

Более того, эти «подгрузки» осуществляются не только на старте уровня или в момент загрузки сохранения, но и после, непосредственно в процессе игры. Стоит вам «отвернуться» от горы на горизонте, а затем резко развернуться обратно — и вы сможете лицезреть эффект «подгрузки» более детализированных текстур повторно.

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

Да, как вы уже поняли, в 64-битных версиях рендереров этот алгоритм отсутствует — игра всегда и для всего использует ресурсы (текстуры, модели) наивысшей детализации (видимо, потому, что экономить ОЗУ 64-битному приложению не нужно, у него её — хоть залейся).

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

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

Как мы уже отметили, в сети полно сообщений и даже целых FAQ, посвященных тому, как на DX9-рендерерах Crysis получить качество DX10-рендереров. Разумеется, есть и «очевидцы», утверждающие, что «твикнутый» DX9-рендерер не только ничем не уступает по качеству DX10-рендереру, но при этом еще и обеспечивает более высокую производительность.

Мы заинтересовались этими сообщениями, но в силу сугубо временных ограничений не смогли включить их в ноябрьский выпуск i3D-Quality. Возможно, что мы изучим эти «твики» в одном из наших следующих выпусков.

А пока давайте перейдём к самому вкусному — сравнению качества, обеспечиваемого в Crysis видеокартами GeForce 8800 и Radeon HD 2900.

GeForce vs. Radeon

Сравнение разбито на 4 группы — по числу рендереров игры. Начнём с тех, что попроще — с 32- и 64-битных DX9-рендереров.

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

Другими словами, не удивляйтесь разнице в яркости DX9- и DX10-скриншотов — она и не должна быть одинаковой. Кроме того, в DX10-рендерере, в настройках Very High используются существенно более мощные алгоритмы постобработки, заметно изменяющие внешний вид той же сцены в сравнении с High-настройками.

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

  • AMD Athlon 64 X2 4600+ / NVIDIA nForce4 SLI / 4 ГБ DDR400 ОЗУ
  • ОС Microsoft Windows Vista 64-bit
  • ATI Radeon HD 2900 XT, драйверы Catalyst 7.11 (8.432)
  • NVIDIA GeForce 8800 Ultra, драйверы ForceWare 169.12

Настройки драйверов: Catalyst, ForceWare

Игра запускалась в разрешении 1280х960 с AA 4x (мы решили, что более высокие степени AA на этом поколении видеокарт в Crysis всё равно никто использовать не будет).

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

32-bit, DirectX 9

  1 2 3 4 5 6
GeForce 8800
Radeon HD 2900


Первое же сравнение дало довольно неожиданный результат.

За исключением минорной разницы, вызванной «дыханием» героя игры, движением «солнца», разными алгоритмами AA, мы нашли на представленных выше скриншотах лишь три подозрительных момента.

  1. Первый так или иначе присутствует на всех — или почти на всех — скриншотах, и заключается в отсутствии теней на видеокарте Radeon HD 2900 на удалённых от игрока объектах. Наиболее ярко эта разница проявляется на паре скриншотов под номером 4 — на GeForce 8800 «лес» на склоне «горы» выглядит затенённым, в то время как на Radeon тени отсутствуют. Причем, отсутствуют тени не только на растительности, но и на самой горе — посмотрите на её склон в верхнем правом углу.

    Что это — ошибка? или читы? Ради интереса мы проверили ту же сцену на видеокартах Radeon X1900 и GeForce 7800, результат сравнения был аналогичным — видеокарты Radeon не отрисовывают огромное количество теней.

    Мы склонны считать это ошибкой либо самой игры, либо Catalyst 7.11 — дело в том, что подобное поведение в Crysis Radeon демонстрируют только под DX9-рендерером, а было бы весьма странно «затачиваться» лишь под один из двух рендереров и вдобавок под тот, который сам по себе обеспечивает меньшее качество, но бОльшую производительность.

  2. Второй момент, на первый взгляд, является частным случаем описанного выше первого — но лишь на первый взгляд. Дело в том, что второй подозрительный момент проявляется уже и в DX10-рендерерах игры.

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

    Очередная ошибка? Согласитесь, сразу две ошибки в работе с тенями выглядят довольно подозрительно...

  3. Третий момент присутствует на 6-й паре скриншотов в виде существенно более размытой на видеокарте Radeon текстуры горы в левой верхней части экрана.

    Здесь могут быть следующие объяснения:

    • Мы сравниваем 32-битные версии DX9-рендереров — текстура могла не успеть «подгрузиться». Такое в Crysis иногда случается, потому как алгоритм LOD иногда «заедает», и подгрузки максимального уровня детализации так и не происходит.
    • Видеокарта GF8800Ultra имеет 768 МБ набортной памяти, в то время как видеокарта RHD2900XT — лишь 512 МБ. Не исключено, что движок Crysis проверяет максимально доступный объём видео-ОЗУ и пропорционально корректирует свои «аппетиты».
    • Баг или заточка в драйверах Catalyst или в движке игры.

В первой части «сражения» видеокарта Radeon понесла сокрушительное поражение: мы обнаружили на ней сразу три дефекта изображения, отсутствующие на видеокарте GeForce.

Участков, на которых видеокарта GeForce уступала бы видеокарте Radeon, не нашлось вовсе.

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

64-bit, DirectX 9

  1 2 3 4 5 6
GeForce 8800
Radeon HD 2900


Для этой части сравнения справедливо всё то, что было написано выше для сравнения в 32-битном DX9-рендерере.

Лишь третий момент, с низкой детализацией текстуры горы на 6-й паре скриншотов, в случае с 64-битным рендерером исчез — зато стало отчётливо видно отмеченное в первом пункте отсутствие тени на той же самой текстуре той же самой горы на видеокарте Radeon.

Обратим также внимание на существенно более высокую детализацию этой текстуры в 64-битном рендерере по сравнению с 32-битным — аналогичная картина наблюдается и в DX10-рендерерах.

Отталкиваясь от этого, мы можем с уверенностью утверждать, что 64-битный рендерер Crysis обеспечивает более высокое качество, нежели 32-битный — не только за счёт отсутствия надоедливого алгоритма текстурного LOD, но и за счёт использования текстур существенно более высокого разрешения.

Пришла пора переходить на 64-битные версии Windows, господа читатели!

32-bit, DirectX 10

  1 2 3 4 5 6
GeForce 8800
Radeon HD 2900


В первом сравнении DX10-рендереров мы видим пару уже отмеченных ранее странностей в рендеринге видеокарты Radeon — отсутствие тени внутри «вагончика» на 5-й паре скриншотов и низкую детализацию текстуры горы на 6-й паре.

Отрадно видеть, что DX10-рендерер в режиме Very High корректно отрисовал все тени на растительности и горе на 4-й паре скриншотов — таким образом, этот баг (если это баг) распространяется только на DX9-версию Crysis.

Но есть и кое-какие «новинки»...

  1. Во-первых, появилась разница в качестве рендеринга воды на паре скриншотов под номером 2: «дальние берега» видеокарты нарисовали чуть по-разному.

    Сложно сказать, чем вызвана эта разница: быть может, мы попали на разные фазы «волн», а может разница имеет более глубокие причины. Так или иначе, различие настолько незначительное, что никто и никогда не сможет заметить его в динамике. Кроме того, нельзя однозначно сказать, которая из видеокарт отрисовала кадр более качественно — они просто сделали это по-разному.

  2. Во-вторых, на парах под номерами 3 и 4 отчётливо видна разница в освещении листьев пальм и камней на пляже.

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

    Но что же тогда это такое? GeForce нарисовала листья и камни ярче, чем Radeon. Если это не какая-нибудь хитрая особенность движка или самих видеокарт, то можно предположить, что видеокарта Radeon (опять!) «забыла» отрисовать один из текстурных слоёв — например, слой, отвечающий за «блики на солнце». Ошибка? Чит?

64-bit, DirectX 10

  1 2 3 4 5 6
GeForce 8800
Radeon HD 2900


Рендерер наивысшего качества по обнаруженным в нём ошибкам повторяет рассмотренный выше 32-битный DX10-рендерер.

Опять наблюдается ничтожная разница в рендеринге воды на паре №2; опять бросается в глаза разница в освещении листьев пальм и камней на парах №3 и №4; опять нет тени на Radeon в «вагончике» на паре №5 и... и опять бросается в глаза существенно более высокая детализация текстуры горы в 64-битной версии рендерера.

(Небольшую разницу в затенении склонов гор мы склонны объяснять тем самым «движением солнца».)

Выводы

Итак, в результате нашего первого подобного тестирования игры Crysis, мы пришли к следующим выводам:

  1. Ставшие в последнее время довольно распространёнными претензии к качеству рендеринга видеокарт NVIDIA в Crysis не имеют под собой никаких оснований — видеокарта GeForce 8800 Ultra продемонстрировала в целом более высокое качество рендеринга, нежели видеокарта Radeon HD 2900 XT — во всех версиях рендерера игры Crysis!

  2. Мы отметили ряд непонятных артефактов в рендеринге Crysis на видеокарте Radeon HD 2900 XT, однако мы далеки от того, чтобы «сходу» объявлять их «читами» и «заточками» — нам представляется более вероятной версия наличия ошибок либо в самой игре, либо в протестированной нами версии драйвера Catalyst.

    В будущем мы еще вернёмся к этому тестированию и проверим, изменилась ли зафиксированная нами сегодня ситуация.

  3. Хоть перед нами и не стояло задачи сравнения между собой разных версий рендереров Crysis, мы отметили безусловно более высокое качество 64-битных версий рендереров, и поэтому рекомендуем всем поклонникам игры серьезно задуматься над переходом на 64-битную версию ОС Windows.

На этом наше первое исследование качества в игре Crysis заканчивается. В одном из будущих выпусков i3D-Quality мы постараемся сравнить качество «твикнутого» DX9-рендерера игры с качеством DX10-рендерера, а также вернуться к сравнению качества, обеспечиваемого разными видеокартами, но уже на других версиях как драйверов, так и самой Crysis.





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