Тестирование FarCry версии 1.3


СОДЕРЖАНИЕ

  1. Введение
  2. Качество рендеринга
  3. Особенности видеокарт
  4. Конфигурации стендов
  5. Результаты тестов: Pier, demo01
  6. Результаты тестов: Regulator, demo01
  7. Результаты тестов: Research, demo01
  8. Результаты тестов: Research, demo02
  9. Результаты тестов: Research, 3DNews demo
  10. Выводы


В конце лета вышла долгожданная геймерами игра DOOM III, и весенний хит этого года FarCry стал по-немногу отходить на второй план, хотя выходил в свет (правда всего на пару дней) патч 1.2, который несколько поднял интерес к этой игре, поскольку внедренные в движок новые технологии позволили новейшим представителям High-End класса из видеокарт показать свои возможности в плане шейдеров 2.0b и 3.0.

К сожалению, эта версия игры содержала ряд ошибок, и потому патч был отозван. Хотя, надо сказать, что мы в процессе эксплуатации 1.2 не столкнулись с какими-то дефектами, потому использовали версию 1.2 в наших тестах. Еще в этой версии были реализованы возможности шейдеров 2.0b и 3.0 в части ускорения работы графики. Суть нововведений сводилась к тому, что на сложно-освещенных объектах, особенно при формировании рельферных изображений, по старой версии 1.1 (или 1.0), освещение расчитывалось за несколько проходов, что тратило весьма сильно ресурсы ускорителей. Внедрение шейдеров 2.0b и 3.0 дало возможность все эти сложные расчеты разместить в одном очень длинном шейдере, который умещается только в спецификации 2.0b и 3.0.

Поэтому для X800-серии и GeForce 6800-серии достаточно уже одного прохода для выполнения этой же операции, что снимает накладные расходы, и скорость вырастает. Наши тесты показали, что эффективность работы 2.0b и 3.0 в этом плане идентичная, поэтому оба семейства получили равнозначные приросты, и в целом X800XT в тяжелых режимах с АА и АФ снова оказался в лидерах. В первой части нашего анализа мы изучили что дают шейдеры 3.0, а второй — 2.0b.

Кстати, все подробности о том, чем в целом обладают новые продукты от ATI/NVIDIA (ну, скажем, они уже формально не совсем новые, более полугода прошло с момента анонсов, но пока ничего нового нет, и потому X800/GF6800 по-прежнему новые) мы сможете почерпнуть из наших статей.

Теоретико-аналитические материалы и обзоры видеокарт, в которых рассматриваются функциональные особенности GPU ATI RADEON X800 (R420)/X700 (RV410) и NVIDIA GeForce 6800 (NV40)/6600 (NV43)

Патч 1.3 принес нам улучшенную и отлаженную поддержку прежних технологий, а также компрессии карт нормалей и HDR.

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

Вначале о HDR. Всем хорошо известно, что система изображения на мониторе, называемая RGB, представляет всевозможные цвета как произвольное сочетание из трех компонентов (красного, зеленого и синего). Традиционно, для современных видеокарт и мониторов каждый компонент имеет значение от 0 до 255, поэтому итоговый цвет может меняться от 0*0*0 (черный) до 255*255*255 (белый). То есть по 256 значений, что дает удобство в оперировании этими величинами, на каждый «цвет» требуется ровно 1 байт (или 8 бит, 2^8). Кстати, именно поэтому и появилось выражение 24-х битный цвет, поскольку три компонента по 8 бит дают в сумме 24 бита всевозможных сочетаний. Или 16 с лишним миллионов оттенков. Почему столько? Произведение 256*256*256 = 16.7 млн.

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

Если для демонстрации окончательных изображений такое многообразие цветов можно считать приемлемым, то для рассчета и построения картинки в многих случаях этого представления (24 или 32 бита) недостаточно. Например накапливаются ошибки вычислений, теряются по ходу построения картинки детали изображения в слишком темных или слишком светлых участках. Многие любят брать для примера блики солнечных лучей. Да, это самый наглядный случай, когда мы можем видеть, что даже 256*256*256 недостаточно для того, чтобы вычислить и отобразить на экране яркий солнечный свет. Читатели наверняка помнят эффектные режиссерские находки, например, когда показывается лес, залитый солнцем, или при закате. Вот примеры, если брать за цель воспроизведение рендерингом реальной картины, где во время построения изображения уже будет не хватать обычного RGB с точностью 8 бит на компоненту:

       

       

То есть, не хватает как бы дополнительной гибкости и точности вычислений для отображения всех нюансов. Не хватает значений. Для того, чтобы в рамках существующих возможностей постараться устранить этот недостаток, NVIDIA нашла компромиссный вариант (все равно сейчас достичь той глубины и перепадов на которые способен адаптироваться глаз человека, невозможно - слишком затратно по ресурсам).

Технология HDR (high dynamic-range) базируется на Industrial Light + Magic standard OpenEXR. По сути это сквозная точность, выборки, обработки и хранения результатов с 64-битной точностью (4 компоненты, RGB и прозрачность, по 16 бит, в плавающем формате данных FP16). Причем такая точность доступна на всех стадиях построения изображения, фильтрации и блендинга. Итак, базовая суть в том, что на каждый компонент выделяется уже не 8 бит, а 16. И потому 16+16+16 (+16 на альфа-канал) = 64.

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

Команда из Crytek попробовала реализовать этот инструмент в игре. Вводится он в действие переменной r_hdrrendering.

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

GeForce 6800 Ultra (r_hddrrendering = 1, HDR enabled, SM3.0, NormalCompression disabled) GeForce 6800 Ultra (r_hddrrendering = 0, HDR disabled, SM3.0, NormalCompression disabled) RADEON X800 XT PE (SM2.0b, 3Dc disabled)


Как мы видим, где-то такая степень HDR очень даже хороша, а где-то все засвечено. Потому и надо регулировать под свои нужды и свои глаза. Но в целом очень даже приятная вещь, и, что самое главное, и чего не показать на скриншотах, эффекты освещенности меняются динамически! Что как раз очень похоже на реальность. То есть, когда поднимаем глаза к небу, сразу яркий свет застилает глаза, и только потом привыкаешь, и видишь уже и облака, и другие объекты (если они есть в небе). Так и в игре. Что произвело на меня очень сильное впечатление! Конечно, надо понимать, что более глубокие расчеты бесплатными не бывают, и производительностью пожертвовать придется. Как много? — Ниже покажем.

К сожалению, в этом плане разработки от ATI ничем таким похвастаться пока не могут. Однако надо сказать, что в данной реализации HDR в FarCry и у NVIDIA-карт есть одно очень существенное ограничение: эта технология несовместима с АА (повторяю, что в рамках данной игры!), поэтому или HDR, или использование АА. Последний будет принудительно выключен игрой, если активизировать первый.

Перейдем к разделу качества графики в новой версии игры, заодно и рассмотрим следующую новацию, внедренную в 1.3 — компрессию карт нормалей.

Качество рендеринга

Вначале покажем таблицу со скриншотами, выполненными при разных установках.

GeForce 6800 Ultra (HDR disabled, SM3.0, r_TexNorCompression=0 NormalCompression disabled) GeForce 6800 Ultra (HDR disabled, SM3.0, r_TexNorCompression=1 NormalCompression Enabled) GeForce 6800 Ultra (HDR enabled, SM3.0, r_TexNorCompression=1 NormalCompression Enabled) RADEON X800 XT PE (SM2.0b, r_TexNorCompression=0 3Dc disabled) RADEON X800 XT PE (SM2.0b, r_TexNorCompression=1 3Dc enabled)


Итак, что такое сжатие или компрессия карт нормалей? Понимаюшие в рендеринге читатели знают, что нормали — это вектора, характеризующие степень рельефа в том или ином месте. Например, для отображения, допустим, кирпичной стены с выемками в местах стыков кирпичей, нужно создать вектор, направление которого будет показывать — в какую сторону делать выпуклость (то есть рассчитать так освещение, чтобы создавалась иллюзия впадины или выпуклости), и размер — как глубоко делать выемку или выпуклость. Проще всего для ускорителя — иметь своеобразную карту таких векторов. То есть точная копия поверхности, где каждое значение цвета (как правило, в серой гамме: от белого, до черного) означает не цвет соответствующего пикселя, а в нем закодирована информация о нормали (векторе). Ускоритель, считывая эту карту, уже «понимает», где сделать какое эффект освещения, чтобы мы видели рельеф.

Понятно, что чем более тщательнее мы хотим отобразить неровную поверхность (а таких вообще-то в мире 99,9%), тем больше будет матрица нормалей, а следовательно карта будет занимать уже весьма большой объем. И ее надо обязательно загрузить в локальную память видеокарты! Никаких передач по AGP быть не может. Очевидно, что это все может как и отнять львиную долю видеопамяти, так и нагрузить ускоритель так, что он будет еле-еле «дышать». Напрашивается сравнение с огромными детализированными текстурами, которые можно через S3TC (DXTC) сжать, и потом использовать, на ходу распаковывая. Но всем известно, что бесплатно такого S3TC не дает, и некоторая потеря качества имеется. Что совершенно недопустимо при сжатии карт нормалей, где каждая точка и ее цвет очень важны для точной передачи информации о рельефе.

Справедливости ради надо сказать, что и при существующей методике DXTC есть способ компрессии таких карт без потерь, но мы сейчас не будем в это дело углубляться. Скажу лишь, что под лозунгом сжатия карт нормалей без потерь вышла в свет технология ATI 3Dc, которая предусматривает компрессию подобных «картинок» (массивов, матриц) до 4 к 1. Наиболее близок к этому методу DXTC5.

При помощи переменной r_TexNorCompression можно включать и выключать данную технологию. Понятно, что ускорители семейства GeForce 6800 работают с ней через DXTC5, а X800 — через 3Dc. Хотя, как уже отмечалось ранее, это почти одно и то же.

Думаю, что прекрасно видно: если что-то включение компрессии нормалей и дает, то на качестве это никак не отражается. Посмотрим ниже, что даст это в плане скорости.

Я напомню, что включение шейдеров 2.0b и 3.0 в плане качества ничего не дает, поэтому нет смысла даже сравнивать картинки. А вот еще пару интересных моментов стОит рассмотреть. Во-первых, это Geometry Instancing, то бишь дублирование геометрии. Весьма сложно объяснить, что это такое, но попробую более наглядно. Если упростить понятия, то в игре может быть много объектов, имеющих одинаковую геометрию: и рядом с нами, и в глубине сцены. Например, трава, деревья. За один вызов DX формируется один объект (по вершинам, освещенности и т.д.). А при использовании GI можно сразу за раз посчитать геометрию всех подобных объектов, и, кстати, вовсе не заменять далеко расположенные объекты спрайтами. Это позволит несколько экономить ресурсы в первом случае, ну и повысить реалистичность сцены в целом, которая весьма страдает, когда при приближении к объектам они превращаются из спрайтов в объемные и уже отрендеренные фигуры.

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

Во-вторых, это возможность увеличения числа объектов, заданных для отображения вдалеке. Для этого используется переменная e_vegetaion_sprites_ratio, которая по умолчанию равна 1. Если ее выставить на максимально возможную величину 100, то получим вот что.

GeForce 6800 Ultra (SM3.0, ratio 1) GeForce 6800 Ultra (SM3.0, ratio 100) RADEON X800 XT PE (SM2.0b, ratio 1) RADEON X800 XT PE (SM2.0b, ratio 100)


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

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

Платы



ATI RADEON X800 XT (ASUS AX800XT) NVIDIA GeForce 6800 Ultra (Gigabyte GV-N68U256D)


Напомню, то обе карты имеют по 256 мегабайт памяти GDDR3 со временем выборки 1.6ns, при этом у NV40 частота по памяти — 550 (1100) МГц, а у R420 — 575 (1150) МГц. Частоты работы чипов: NV40 — 425 МГц, R420 — 520 МГц. Оба GPU содержат по 16 пиксельных и 6 вершинных конвейеров. NV40 поддерживает еще версию шейдеров 3.0, а R420 — собственную технология сжатия карт нормалей — 3Dc и версию шейдеров 2.0b. Вот кратко и все.

Установка и драйверы

Конфигурации тестовых стендов:

  • Компьютер на базе Athlon 64 3200+
    • процессор AMD Athlon 64 3200+ (L2=1024K);
    • системная плата ASUS K8V SE Deluxe на чипсете VIA K8T800;
    • оперативная память 1 GB DDR SDRAM PC3200;
    • жесткий диск Seagate Barracuda 7200.7 80GB SATA.
  • операционная система Windows XP SP2; DirectX 9.0c;
  • мониторы ViewSonic P810 (21") и Mitsubishi Diamond Pro 2070sb (21").
  • драйверы ATI версии 6.490; NVIDIA версии 66.81.

VSync отключен.

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

Условные обозначения: NC — Normal Compression, GI — Geometry Instancing, SM30/SM3.0 — Shader Model 3.0; SM2b/SM2.b — Shader Model 2.0b.

Результаты тестов

Результаты тестов: сравнение производительности

В качестве инструментария мы использовали:

  • FarCry 1.2/1.3 (Crytek/UbiSoft), DirectX 9.0c, мультитекстурирование, (запуск игры с опцией -DEVMODE), настройки тестирования все Very High. В числе используемых DEMO имеется от 3DNews.ru



Уровень Pier, демо — demo01








  • Использование HDR у GeForce 6800 Ultra — приводит к сильнейшему падению скорости до 50 и более процентов! Это хорошо видно в самых высоких разрешениях, где уже почти нет ограничений по CPU. Вот оно, использование FP16 вместо целочисленных значений. Хотя этот уровень открытый, бликов везде очень много от солнца, поэтому использование HDR привело к такому падению скорости.
  • Использование Normal Compression у GeForce 6800 Ultra — ничего не дало в плане скорости, да и понятно, на этом уровне эта техника почти не используется.
  • Использование SM 3.0 против SM 2.0 у GeForce 6800 Ultra — аналогично. Здесь нет тех многопроходных расчетов освещения, которые можно было бы оптимизировать путем внедрения одного длинного и сложного шейдера.
  • Влияние увеличения Vegetation Ratio у GeForce 6800 Ultra — незначительно упала скорость, что объяснимо и в норме вещей. Я лично ожидал, что она упадет более сильно, т.к. этот уровень один из немногих, где просматриваются огромные пространства, и потому прорисовка растений вдалеке может часто встречаться.

  • Использование 3Dc у X800 XT PE — почти ничего не дает, причину я уже изложил выше.
  • Использование SM 2.0b против SM 2.0 у X800 XT PE — аналогично.
  • Влияние увеличения Vegetation Ratio у X800 XT PE — привело к такому же незначительному падению скорости.

  • X800 XT PE против GeForce 6800 Ultra — очевидно, что с АА+АФ продукт ATI держит уверенную победу даже если обе ускорителя используют свои возможности максимально (без HDR). А без АА+АФ все во-многом упирается в CPU и потому сравнение может быть некорректным.





Уровень Regulator, демо — demo01








  • Использование HDR у GeForce 6800 Ultra — точно также приводит к сильному падению скорости в том же объеме. Хотя визуально при корректном применении эта техника тут смотрится восхитительно (к сожалению, без АА).
  • Использование Normal Compression у GeForce 6800 Ultra — все отклонения в рамках погрешности, поэтому разницы нет
  • Использование SM 3.0 против SM 2.0 у GeForce 6800 Ultra — аналогично.
  • Влияние увеличения Vegetation Ratio у GeForce 6800 Ultra — дает небольшой спад в скорости, впрочем, это настолько малозначительно, что нет смысла обращать внимание. Тем более, что и почти нет смысла использовать это на данном уровне, где визуально проглядываемая дальность объектов не столь велика.

  • Использование 3Dc у X800 XT PE — дало эффект и неплохой, аж до 10%. К сожалению совместно с АА эта техника отказалась работать в данном случае.
  • Использование SM 2.0b против SM 2.0 у X800 XT PE — аналогично, дает прирост до 8%, но использование АА+АФ съедает эту разницу
  • Влияние увеличения Vegetation Ratio у X800 XT PE — дает уже весьма ощутимый спад в скорости, хотя, как я уже вышел писал, визуально эффекта почти нет, поэтому нет смысла использовать это на данном уровне.

  • X800 XT PE против GeForce 6800 Ultra — результаты разноречивые: есть и там и там победы и поражения. Снова при АА+АФ мы видим преимущество X800, а без тяжелых нагрузок лидерство за GF6800. Хотя в последнем случае, скольку производительность упирается в CPU, уже играют роль драйвера, а не сами карты.





Уровень Research, демо — demo01








  • Использование HDR у GeForce 6800 Ultra — самое высокое падение скорости их рассмотренных ранее случаев. Это демо происходит на открытой части уровня, где от заходящего солнца много бликов на склонах гор, растительности и т.п. И все это расчитывается уже с использованием более точных и сложных вычислений.
  • Использование Normal Compression у GeForce 6800 Ultra — ничего не дает, поскольку в данном примере это просто не задействовано
  • Использование SM 3.0 против SM 2.0 у GeForce 6800 Ultra — аналогично, сложных расчетов освещения (если без HDR) тут нет, поэтому и эффекта нет.

  • Использование 3Dc у X800 XT PE — разумеется, тот же самый случай, эффекта нет.
  • Использование SM 2.0b против SM 2.0 у X800 XT PE — аналогично.

  • X800 XT PE против GeForce 6800 Ultra — примерное равенство сил, отклонения не выше 5%.





Уровень Research, демо — demo02








  • Использование HDR у GeForce 6800 Ultra — аналогично предыдущим случаям.
  • Использование Normal Compression у GeForce 6800 Ultra — ничего не дает, даже чуть скорость упала, что весьма удивительно. Несмотря на обилие рельефных поверхностей в данной демке, которая идет в закрытом пространстве уровня, сжатие карт нормалей не используется. Впрочем, он может и иметь место, ведь новых карт такого класса в игре не появилось.
  • Использование SM 3.0 против SM 2.0 у GeForce 6800 Ultra — дает некоторый прирост скорости, что уже как раз и объясняет дело. Ведь именно в этой части уровня используются сложные расчеты освещенности рельефных стен, а также различного оборудования от бликов фонарей и иных источников света. Поэтому убирание многопроходности и использование единого сложного шейдера дает свой эффект.

  • Использование 3Dc у X800 XT PE — аналогично, почти нет эффекта, поскольку…
  • Использование SM 2.0b против SM 2.0 у X800 XT PE — дает немного больше, но все равно мало! Что очень и очень странно! Хотя прирост от перехода с патча 1.2 на 1.3 есть и он велик.

  • X800 XT PE против GeForce 6800 Ultra — полная и просто сильнейшая победа детища ATI над соперником. Замечу еще раз, что частота работы 6800U в нашем тестировании — 425 МГц, а не 400!





Уровень Research, демо — 3DNews








Практически все аналогично прогону demo01 на данном уровне. Несмотря на то, что эта демка универсальная, и охватывает как открытые, так и закрытые пространства.

Выводы

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

  1. Если FarCry является эталоном по внедрению новых технологий, то можно сказать, что всяких патчей, реализующих 3.0 или 2.0b и т.п., можно даже и не ждать, все будет очень бледным. Все же, потребуются новые игры, возможно и движки, чтобы увидеть все новации в полном масштабе, что означает время и еще раз время. Раньше 2006 года наверно и не увидим. Хотя, повторяю, это все имеет место, если предположить, что данная игра стала самым сильным внедрением новых технологий. Ежели будет иная игра, где через патч мы сможем увидеть более эффективное использование 3.0/2.0b/NC/3Dc и т.п., то будет очень интересно потом изучить и ее.
  2. Все выше сказанное не относится к HDR, поскольку реализация этой техники уже весьма яркая. Да, повторяю, что при разумном подходе можно получать очень реалистичные картинки в плане освещенности. Хотя и придется платить и скоростью, и отсутствием АА. К сожалению, у X800-семейства нет и такого выбора.
  3. Внедрение компрессии карт нормалей без создания новых, более объемистых, не имеет смысла. Это и показало нам тестирование. Все существующие ранее подобные карты прекрасно работают и без сжатия. Чтобы эффект от 3Dc/NC был, требуется создать новые карты, более детально описывающие рельеф. Или опять же, это все можно увидеть только в новых играх.
  4. Что касается соотношения сил, то, даже несмотря на повышенные частоты работы GeForce 6800 Ultra в данном тестировании, в целом лидерство осталось за X800 XT PE. Единственное, что надо отметить, как негатив, это более низкие минимальные значения скорости у последнего, нежели у 6800U. Да, парадокс, но это факт: средняя скорость выше, а минимальные значения — ниже. Но с этим пусть разбираются специалисты из ATI и Crytek.

Радостно то, что наконец-то вышел патч, под который все последние версии драйверов весьма отлажены, и потому все работает без проблем.

Какие-то оценки типа «этот лучше, а этот хуже» мы ставить не будем, поскольку нет смысла. Но мне лично работа GeForce 6800 понравилась чуть больше именно из-за HDR. Пусть АА не работает, пусть скорость проседает, но зато можно посмотреть на красивые эффекты, и главное, их регулировать.

Более полные сравнительные характеристики видеокарт этого и других классов вы можете увидеть также в наших 3DGiТогах.




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

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.