Когда Microsoft представила новую версию своего графического API, компания пообещала, что DirectX 10 раз и навсегда изменит подход разработчиков к программированию 3D-графики, а пользователи смогут насладиться невиданными доселе красотами. Но вот уже выпущены несколько DX10-игр, но где же обещанный игровой рай? Представляем вам тестирование первых DX10-игр.
Дело даже не столько в красотах и версиях шейдеров, сколько в возможности перераспределить графические вычисления, возложив их исключительно на графический процессор. Такого рода перераспределение вычислительных задач с освобождением ресурсов CPU открывает разработчикам новые перспективы.
Большинство геометрических деталей могут быть симулированы с адекватным уровнем производительности. Такие техники, как карты нормалей (normal mapping), аппроксимация эффекта смещения точек поверхности в зависимости от изменения точки зрения (parallax occlusion mapping) и многие другие существуют исключительно для создания дополнительной геометрии на карте, то есть являются вспомогательными. Удивительно, зачем делать лица персонажей столь детальными, когда силуэт самой головы выглядит, как изображение на дорожном знаке? Это все потому, что современное 3D-программирование полагается на низкополигональные модели, усиленные различными технологиями для придания более реалистичного вида.
Возможность перераспределения нагрузки на графический процессор открывает разработчикам новые горизонты. В частности стало возможным создание более изощренной системы частиц и мелкозернистых моделей, как мех, которые подвержены влиянию физических характеристик окружающего мира, процедурной геометрии для высокодинамичных сред, "настоящих" карт смещений и геометрического усиления, с помощью которого объектам добавляется большее количество деталей. Некоторые из новых возможностей будут реализованы в играх раньше, некоторые - позже, так как на текущий момент реализация некоторых технологий ограничена производительностью современных компьютеров.
У DX10, безусловно, есть и иные преимущества. Мы посвятили их описанию немало места в наших предыдущих статьях, но вот небольшой итог. Существенно снизилось использование ресурсов CPU при отправке данных на GPU. Это увеличит производительность и позволит разработчикам создавать более технически совершенные сцены. Спецификации определены более жестко, что позволит разработчикам меньше думать о том, как каждое устройство будет обрабатывать игру, и больше о том, какие функции они хотят реализовать. Результаты вычислений не будут разниться от устройства к устройству и у разработчиков будет большая гибкость в выборе способа обработки их данных.
Ну а в целом, DX10 предлагает более унифицированную модель вычислений, обладающую высокой гибкостью. Со временем это приобретет большую важность, ну а пока разработчики вынуждены мириться с ограничениями по длине и сложности шейдеров, которые продиктованы текущей производительностью графических карт и процессоров. По мере того, как разработчики начнут понимать, каким образом можно использовать гибкость нового API, а производительность компьютеров продолжит планомерно возрастать, мы увидим, как мало по малу игры, созданные с помощью DirectX 10, будут становиться воплощением наших снов.
Перед тем, как погрузиться в сухие цифры, хотелось бы несколько умерить ваши ожидания. Большинство функций, реализованных в DirectX 10, осуществимы и в DirectX 9. Более того, те функции, являющиеся исключительно прерогативой DX10, дают буквально столько же, сколько можно получить в DX9, добавив дополнительной вычислительной мощи.
Тестовая система
Использованная нами тестовая система не может похвастаться чем-то из ряда вон выходящим - обыкновенный компьютер, используемый нами для тестирования. Отметим лишь, что в этот раз все тесты проводились в 32-битной редакции Windows Vista. Были использованы новейшие на момент написания статьи драйвера от AMD и NVIDIA. Собственно, вот и сам компьютер:
Также на момент написания статьи нам удалось получить бета-версию FRAPS - приложения, с помощью которого проводились замеры количества кадров в секунду в играх на DirectX 10. Без данного приложения мы бы не смогли получить цифры, позволяющие судить о производительности в DX10-играх. Теперь же нам, вооруженным DX10-совместимой версией FRAPS, удалось оценить производительность сэмплов DX10 SDK и иных демо, в которых не оказалось встроенных счетчиков количества кадров.
Теперь пришла пора взглянуть на реальную производительность DX10. В нашем обзоре мы рассмотрим три игры: Call of Juarez, Company of Heroes и Lost Planet: Extreme Condition. Все игры, за исключением Call of Juarez, будут испытаны как в DirectX 9, так и в режиме DirectX 10. Бенчмарк Call of Juarez призван продемонстрировать возможности DX10, поэтому и не существует эквивалента для DX9. При тестировании Lost Planet нам потребовалось использовать DX10-версию FRAPS, когда как в Company of Heroes мы просто прибегли к помощи встроенного теста, расположенного в меню графических настроек.
После того, как по отдельности будет рассмотрена каждая игра, мы сравним производительность всех игр в DX9 и DX10. Также мы оценим производительность игр при включенном антиальясинге, а также относительную производительность.
Call of Juarez
Вокруг перехода Call of Juarez от DirectX 9 к DirectX 10 ходят противоречивые слухи. Если кто помнит, AMD продемонстрировала DX10-версию Call of Juarez прямо перед релизом графического чипа R600. Тот билд не полностью поддерживал графические карты NVIDIA, поэтому многие предпочитали не тестировать это демо. Это неудивительно, поскольку каждая компания желает иметь что-то, чего нет у других, пускай это "что-то" далеко не полнофункционально.
Но после того, как об этом прознала NVIDIA , они обратились к компании Techland, чтобы та помогла вывести демо на чипы G80. Некоторые сетевые издания даже получили обновленную версию игру от Techland, включающую исправления для корректной работы на чипах NVIDIA. Мы тоже пытались обратиться за обновленной версией, но нам отказали. В компании сказали, что в ближайшее время будет выпущена финальная версия. И снова не придраться: это собственность Techland, поэтому они делают с кодом все, что захотят.
Так или иначе, но мы все-таки получили демо Call of Juarez. Однако, вот, что интересно: Techland решила реализовать в тесте как они сами говорят механизм коррекции HDR (HDR Correct antialiasing). Данная функция призвана правильно закрашивать грани полигонов в случае высококонтрастных сцен при включенном HDR-освещении. Использование средне- или гамма-корректированного закрашивания MSAA-сэмплов совместно с HDR-освещением может привести к появлению артефактов.
Однако, реальная проблема кроется в том, что выполнение HDR-коррекции требует некоторого разрешения MSAA. Карты AMD всегда должны выполнять необходимое разрешение AA на шейдерных конвейрах (в конвеерах R/RV6xx отсутсвуют блоки, отвечающие за выборку MSAA-сэмплов), поэтому это не проблема. А у NVIDIA есть механизм разрешения MSAA. DX10 позволяет отдельным MSAA-сэмплам быть повторно считанными, что и позволяет выполнить работу по разрешению AA. Это дает NVIDIA существенную фору, при небольшом, по словам NVIDIA, проигрыше в качестве картинки. К сожалению, нам не удалось сравнить два метода между собой, так как у нас не было демо-теста, который бы использовал MSAA-конвейеры NVIDIA.
NVIDIA также сообщила, что в параллаксном мэппипнге Call of Juarez есть код, чья цель -исключительно снижать производительность шейдерных конвейров NVIDIA. И снова мы не смогли проверить эти заявления. Были и другие незначительные замечания, которые, по мнению NVIDIA, сделаны с целью показать графические чипы AMD в лучшем свете, чем в предыдущей версии бенчмарка.
Но на все эти заявления Techland ответила, что финальное слово за разработчиками игр - лишь они знают, что творится с их кодом. Это ведь, откровенно говоря, чистая правда и лишь от разработчиков зависит, насколько производительной будет та или иная игра. Поэтому с мнением Techland вряд ли поспоришь. Но чтобы там ни было на самом деле, всякому понятно, что между Techland и NVIDIA есть некоторая дружба.
Неважно, что происходит, ведь для геймеров важнее всего то, чтобы разработчики игр и производители аппаратного обеспечения тесно сотрудничали, что приведет к созданию высококачественных и нересурсоемких игр.
Так что за такие важные функции DirectX 10 реализованы в этом бенчмарке? Перво-наперво геометрические шейдеры для симуляции эффектов брызгов, технология alpha-to-coverage для обеспечения гладких краев листвы и травы, а также эффекты MSAA для выполнения HDR-коррекции антиальясинга.
В этот раз Radeon HD 2900 XT существенно обогнала GeForce 8800 GTS. Что касается низкобюджетных карт, то ни одна из представленных карт не обеспечивает комфортного уровня производительности на любой из доступных опций демо Call of Juarez. Несмотря на то, что представленные здесь цифры отражают настройки с высококачественными тенями, даже без них карта 2400 XT показала результат лишь в 10 fps на разрешении 1024x768. Мы оставили затею тестировать другие карты, поскольку стало очевидно, что они не справятся.
Производительность Call of Juarez 4xAA
Со включенным 4xAA наши низкобюджетные карты от NVIDIA провалились. Однако, даже эти карты должны разрешать MSAA-сэмплы на своих шейдерных конвейрах. Чипы AMD разработаны так, чтобы всегда обрабатывать их таким образом, а чипы NVIDIA поддерживают эту функцию как дань требованиям DX10.
Низкобюджетные видеокарты NVIDIA показали несколько странные результаты на разрешении 1600x1200, но, видимо, это было вызвано некорректной отрисовкой сцены (другими словами, создалось впечатление, что не все отрисовывалось, как надо, хотя визуально этого было не видно).
Company of Heroes
Несмотря на то, что по сути Company of Heroes стала первой игрой, получившей через патч поддержку DirectX 10, разработчик игры - компания Relic - попросту не перекомпилировала DX9-код под DX10. С самого начала разработки Company of Heroes планировалась как DX10-игра, но тогда не было оборудования, на котором можно было бы протестировать эту игру. Поэтому разработчики объясняют, что крайне трудно разрабатывать игру, когда в твоем распоряжении исключительно спецификации API. Несмотря на огромное желание реализовать потенциал DX10, Relic пришлось отказаться от начальных задумок, чтобы подогать игру под существующее на тот момент аппаратное обеспечение.
Несмотря на то, что для получения логотипа DX10 компания Microsoft требует наличия поддержки некоторых особых функций, требования по обеспечению минимальной производительности попросту отсутствуют. Поэтому для первопроходцев крайне сложно создать рабочий код до появления рабочих образцов графических карт, так как невозможно проверить, насколько повлияет на производительность та или иная функция API.
В итоге многие DX10-функции, использованные в игре, должны были быть переписаны таким образом, чтобы их можно было применить и в DX9. Будет неверно сказать, что игра вовсе лишены DX10-функций, просто они были заменены на аналогичные из DX9, правда за счет некоторых потерь в качестве картинки. Давайте посмотрим, что было добавлено DX10-патчем.
Была значительно усовершенствована модель освещения и было добавлено больше теней. Все источники света в сцене дают тени, что несомненно придает ночным сценам больше реалистичности, нежели в DX9-версии. Данные тени на лету создаются генерируемыми от каждого источника света кубическими картами.
Company of Heroes DirectX 9
Company of Heroes DirectX 10
В сценах стало больше травы и кустов, что придает сцене большую насыщенность. Для создания "мусора" в виде камней и низкой травы на карте вместо текстур используется реальная геометрия.
Тройная буферизация активирована по умолчанию, но в наших тестах мы предпочли ее отключить (вместе с функцией vsync).
Мы обнаружили, что наши карты с памятью 256Мб и ниже, столкнулись с некоторыми трудностями в режиме 4xAA и DirectX 10. Оказалось, что это известная проблема CoH в 32-битных версиях Vista. Relic рекомендует переходить на 64-битную версию ОС, которую мы, к сожалению, не успели протестировать.
Тесты DirectX 9
Производительность Company of Heroes в DX9
Производительность Company of Heroes 4xAA в DX9
В DX9 карта Radeon HD 2900 XT показала хорошую производительность, сравнимую с производительностью 8800 GTX. Несмотря на падение производительности при включении 4xAA, 2900 XT удалось показать хороший результат в соревновании с 8800 GTS. Но при переходе на DX10 ситуация изменилась.
Тесты DirectX 10
Производительность Company of Heroes в DX10
Производительность Company of Heroes 4xAA в DX10
При работе в режиме DX10 карте HD 2900 XT даже не удалось приблизиться к производительности GeForce 8800 GTS. И снова низкобюджетные карты NVIDIA и AMD не смогли показать приемлимый уровень производительности в DX10, хотя тут карты NVIDIA обошли AMD.
Включение 4xAA еще более усугубило положение 2900 XT. В будущих статьях мы попытаемся провести аналогичное тестирование в Windows Vista x64 на картах с меньшим количеством графической памяти.
Lost Planet: Extreme Condition
Lost Planet: Extreme Condition представляет собой порт игры для Xbox 360. Но, откровенно говоря, создается впечатление, что была добавлена поддержка клавиатуры и мыши с последующей перекомпиляцией под Windows. Поэтому без джойстика Xbox 360 играть в Lost Planet несовсем удобно. Меню нелогичны и в них сложно ориентироваться. Перемещение по меню требует участия обеих кнопок мыши, что само по себе абсурдно. Если во время игры вам вдруг захочется сменить разрешение, вам придется щелкнуть мышкой не менее десятка раз.
Консольным шутерам всегда требовалась какая-то изюминка, чтобы соревноваться с компьютерными. Halo и Halo 2 преуспели в этом, а Gears of War вообще шедевр. Но простое портирование шутера на ПК не гарантирует ему успешность.
Однако, если позабыть о неудобном управлении и нелогичном интерфейсе, то графика игры может поразить кого угодно. Да и пострелять различного рода насекомых тоже забавно. Так что наше первое впечатление кроется в том, что хорошая игра может быть погребена из-за некачественного портирования. Но давайте посмотрим, какова производительность в игре, после чего можно будет сделать окончательные выводы.
На текущий момент важно лишь то, что мы не обнаружили разницы между версией DirectX 10 и DirectX 9. Это означает, что используемый набор функций у разных API идентичен. Единственное отличие - DirectX10-версии геймеры могут выбрать высокое качество теней, в то время как пользователи DX9-версии ограничены средним качеством. Кроме того, видна разница в освещении. Компания Capcom, разработчик Lost Planet, заявляет, что целью компании являлось обеспечение преобладания производительности в DX10-версии над DX9-версии игры.
Lost Planet DirectX 9
Lost Planet DirectX 10
С целью сделать сравнение как можно более справедливым, и в DX9 и в DX10 мы устанавливали одни и те же настройки (за исключением качества теней).
Тесты DirectX 9
Производительность Company of Heroes в DX9
Производительность Company of Heroes 4xAA в DX9
Для того, чтобы поиграть на низкобюджетных картах, пришлось отказаться от некоторых функций. Даже в DX9 с отключенным AA их производительности не хватало для комфортной игры. Мы планируем в ближайшее время протестировать карты серии 8500 и 8400, после чего проверим, возможно ли на них поиграть на низких настройках в DX10-игры.
AMD 2900 XT в DX9 показала хорошую производительность, но провалилась при включении 4xAA из-за отсутствия конвейров разрешения MSAA.
Тесты DirectX 10
Производительность Company of Heroes в DX10
Производительность Company of Heroes 4xAA в DX10
Удивительно, но ForceWare линейки 162.* в сочетании с retail-версией Lost Planet продемонстрировали фактически идентичную производительность в DX9 и DX10. Несмотря на то, что Capcom говорит о преобладающей производительности в DX10, мы считаем, что и AMD и NVIDIA потребуется много времени для того, чтобы обеспечить эквивалентную производительность DX10- и DX9-драйверов.
DirectX 9 против DirectX 10
В данной части статьи мы рассмотрим рпзличия между DirectX 9 и DirectX 10 на конкретных видеокартах при конкретной версии драйверов в Company of Heroes и в Lost Planet.
Сначала мы оценим относительную производительность карт в каждом из API. Идея состоит в том, чтобы отчетливо увидеть, в DX9 кокретная карта более производительней, чем в DX10, или наоборот. Это лишь поможет осознать факт, что каждая игра ведет себя по-разному.
Что касается Company of Heroes, то видно огромное падение производительности при переходе от DirectX 9 на DirectX 10. Новые техники освещения и образования теней в комбинации с достаточно либеральным использованием геометрических шейдеров ответственны, по крайней мере, за двукратное падение производительности при переходе на DX10. Очевидно, что NVIDIA больше преуспела в обращении с функциями, использованными студией Relic, нежели AMD. Это особенно интересно в свете того, что NVIDIA уже обошла в DX9 графические карты AMD.
Lost Planet в корне отличается от CoH. Поскольку Capcom поставила своей целью обеспечить преобладание производительности игры в DX10, мы видим, что с помощью топовых карт линейки NVIDIA ей это удалось. Больше нечего сказать о DX10-версии Lost planet, за исключением того, что драйвера AMD пока не оптимизированы под эту игру.
Далее перейдем к относительной производительности между DirectX 9 и DirectX 10 при включенном AA. Стоит ли ожидать меньшего влияния на производительность при включении при переходе на новый API? Давайте посмотрим.
В Call of Juarez низкобюджетные карты NVIDIA существенно потеряли в производительности при включении AA. Видимо, причиной этому стала невозможность выполнения шейдерных требований механизма HDR-коррекции AA. Более дорогие карты смогли достаточно хорошо управиться с методом, хотя NVIDIA была бы рада, если бы результаты были бы лучше.
В наших тестах DX10-версии Company of Heroes, которая использует механизм разрешения MSAA (там, где возможно), графические решения AMD существенно проигрывают картам NVIDIA.
Все карты показали меньшую производительность при включении 4xAA в DX9, нежели чем в DX10. Несмотря на то, что у нас нет достаточно информации, чтобы понять природу этого явления в Company of Heroes, нам было интересно увидеть такого рода преимущества DX10.
Lost Planet с ее попыткой увеличения производительности путем перехода на DX10 показала сравнимое падение производительности от включения AA и в DX9, и в DX10. Снова заметно небольшое преимущество DX10, но оно не столь существенно.
Заключение
AMD имеет существенное преимущество в Call of Juarez, когда как NVIDIA ведет в Company of Heroes и Lost Planet. Именно поэтому мы не хотели бы сегодня называть победителя в схватке NVIDIA vs. AMD. Не сегодня, потому что еще рано. После того, как обе компании выпустят оптимизированные под DirectX 10 драйвера, а разработчики выпустят больше игр, мы проведем повторное тестирование.
Наиболее важен тот факт, что теперь есть DirectX 10. Несмотря на то, что разработчики за последние годы привыкли использовать DirectX 9, для них появилась реальная возможность поэкспериментировать, к примеру, с геометрическими шейдерами. Но появление DirectX 10 вовсе не означает мгновенного увеличения производительности и восхитительных эффектов.
На самом деле, есть три способа обеспечения поддержки DirectX 10 и есть уверенность, что в течение ближайших нескольких лет большинство игр будут поддерживать и DX9. Простейший способ - это прямое портирование функций из DirectX 9 (которые должны быть чуть шустрее, чем в оригинальной DirectX 9, при условии, что драйвера будут соответствующего качества). Также возможен вариант, когда в DirectX10-игре будут использованы эффекты, которые можно реализовать и в DX9 с целью побудить пользователей переходить на DX10-совместимую платформу. И наиболее агрессивный способ - использовать эффекты, которые могут эффективно реализованы лишь с помощью DirectX 10.
Игры исключительно с поддержкой DX10 вряд ли появятся в ближайшее время по ряду причин. Основная масса пользователей продолжает оставаться на DX9-платформах. Поэтому крайне логично тратить усилия на создание игр для этой самой основной массы, которая платит за эти игры. Разработчики, конечно же, заинтересованы в преимуществах, которые обещает DX10, но все игры, которые будут выходить в свет в пару ближайших лет, будут поддерживать и DX9.
Также на текущий момент большинство эксклюзивных для DX10 функций не обеспечивают приемлимого уровня производительности на современном аппаратном обеспечении. Трудноперевариваемый код геометрических шейдеров, особенно подразумевающий усиление геометрии, слишком непроизводителен на всех доступных платформах, а разработчики пока не научились ограничивать интенсивность использования тех или иных функций DX10.
Разработчики, как правило, не хотят писать код, который бы хорошо работал на одной платформе и совершенно не работал бы на другой. Принятие решения о том, как будет реализована игра, целиком и полностью находится в руках разработчиков, и именно от этого зависит, будут ли пользователи довольны производительностью и набор реализованных функций. Очень важно, чтобы большинство пользователей смогли узреть разницу между DX10 и DX9, но этого не произойдет до тех пор, пока у большинства пользователей не появится аппаратное обеспечение, способное обеспечить высокий уровень производительности в играх с DX10.
Из бесед с разработчиками различных игр мы поняли, что прямое портирование игр с DX9 на DX10 вряд ли войдет в норму. Ну какой же разработчик пожелает тратить дополнительное время на разработку, тестирование и отладку нескольких версий кода, выполняющих одну и ту же задачу? На самом же деле, низкая производительность DX10 на современном оборудовании значит лишь, что в ближайшее время большинство DX10-игр будут лишь незначительно отличаться от современных DX9-игр.
Наверное, и NVIDIA и AMD будут сильно огорчены низкой производительностью своих бюджетных DX10-карт. Обе компании не устают твердить, что современные графические карты - это не просто средства для игр, а еще и возможности по (де)кодированию и многое другое. Просто никто не рассматривает видеокарты с этой точки зрения. Не стоит, конечно же, ждать, что сегодняшние топовые карты к концу года превратяться в бюджетные, но мы должны, по крайней мере, за $150 получать карты нового поколения, которые выше по производительности поколения предыдущего.
Это особенно важно в поколении, которое призвано закрепить позиции нового API. Карты серии 2400 и 8400 навсегда станут общим знаменателем для всего DX10-оборудования (до тех пор, пока Intel не выпустит свои DX10-решения, но разработчики не будут на них ориентироваться, пока Intel прячет кролика в своей шляпе). Мы вправе предполагать, что пользователи, желающие играть без особых проблем, предпочтут, по крайней мере, карты серии 8600 или 2600. Так что из-за того, что ключевым функциям нового API требуются реальные лошадиные силы, мы не увидим игр с такими функциями, как минимум, год-два.
AMD и NVIDIA упустили шанс установить минимальную производительность DX10-карт, что приведо к тому, что они оказались менее производительней, чем их DX9-собратья. Предпочтя выпустить графические решения без значительного преимущества над картами серии X1600 и 7600, разработчики намеренно лишили разработчиков (и пользователей ) стимула переходить на DX10. Этим картам попросту не хватает производительности, чтобы подтолкнуть разработчиков к реализации возможностей, выходящих далеко за пределы DirectX 9.
Даже карты класса high-end в некоторых случаях пассовали. При этом мы тестировали игры на разрешениях до 2.3 мегапикселей. Увеличение разрешения до 4 мегапикселей (2560x1600, разрешение 30"-дюймового монитора) ставит все тестируемые карты на колени. Короче говоря, нам действительно нужны более шустрые видеокарты, которые позволят разработчикам делать более впечатляющие вещи с DirectX 10.