Как известно, видеокарты NVIDIA умеют брать на себя часть обязанностей центрального процессора: перекодировать видео, ускорять математические расчеты и, конечно, работать с физическими движками — с тем же PhysX. Такая работа отнимает львиную долю производительности платы, и железные энтузиасты не первый год пытаются увеличить мощность компьютера и сэкономить деньги, обманывая NVIDIA SLI и соединяя в одну систему две видеокарты разных серий. Делать это они научились уже давно: компьютеры с двумя разными платами собирались еще в середине 2008-го, но для этого нужно было приложить немало усилий. Обзавестись двумя мониторами, или одним, но с парой входов — к примеру, DVI и VGA. После установки первой видеокарты выключить компьютер, вставить вторую видеокарту, подключить к ней еще один монитор, из безопасного режима Windows удалить все драйверы программой Driver Sweeper и затем снова установить драйвер NVIDIA ForceWare.

В октябре 2009 года появилась технология NVIDIA Multi-Card, которая позволила без особого труда собирать связки из двух видеокарт NVIDIA разных семейств, скажем, из GeForce GTX 295 и GeForce 9600 GT. В прошлом номере мы провели первые тесты этой технологии, а сегодня уже готовы обстоятельно рассказать, какие карты лучше ставить на расчет PhysX.
С чем есть

MSI N285GTX SuperPipe OC

Физика в игре нужна, чтобы вы поверили в реальность происходящего. В играх она появилась очень-очень давно. Взять тот же Pong: если бы виртуальный мячик не отскакивал при ударе, как это делает мячик настоящий, разработчики ни за что не убедили нас, что это пинг-понг. С тех пор прошло почти сорок лет, но ничего не изменилось, увеличились лишь масштабы. Сейчас чуть ли не любая игра — это огромный мир с тысячами объектов, и каждый из них должен вести себя достоверно. К сожалению, устроить это не так просто.

Если выстрелить из дробовика в коробку, то она не только подлетит в воздух, но и разорвется в клочья. И когда в игре она лишь обрастает дырками от пуль, не двигаясь с места, это выглядит престранно. Однако так и происходит, ведь трехмерная модель — всего лишь набор полигонов, формирующих нужную форму. Чтобы игра отличала картонную коробку от железобетонного блока, нужно объяснить компьютеру, что такое гравитация, удар, ускорение, трение, указать вес коробки и материал, из которого она сделана.

Те, кто ушел дальше школьного курса физики или изучал сопромат и теоретическую механику, знают, что даже посчитать, с какой скоростью колесо скатится с горы, — невероятно сложно. А уж достоверно описать, как коробка отреагирует на попавшую в нее дробь, — та еще задачка. Студенты технических вузов по полгода рассчитывают, как какая-нибудь пружинка реагирует на сжатие, — а представьте, сколько таких колесиков, ящиков, пружинок в игре вроде Burnout Paradise. Да даже если весь состав Electronic Arts посадить все это программировать, то следующую их игру мы увидим лет через десять! К счастью, на свете есть физические движки.
Замещая реальность

MSI N9500GT-MD512/D2

По сути своей любой движок, будь то Havok или PhysX, это база данных с описанием материалов и их свойств. В случае с той же коробкой, например, разработчику достаточно сказать движку: «Она картонная и весит 200 граммов», — и движок автоматически подберет нужные формулы и даст понять игре, как реагировать на те или иные манипуляции с коробкой. И это отлично работает. Яркий пример — Half-Life 2 с его гравипушкой, которая позволяет разбрасывать ящики или переставлять бочки.

Но ящики и бочки — это, к сожалению, лишь малая часть реального мира. Если вы присмотритесь к той же Half-Life 2, то заметите, что все объекты в игре — абсолютно твердые тела. Они умеют прыгать, кувыркаться в воздухе, отскакивать от стен, но там даже самый простой объект при ударе не меняет своей формы. Причина — недостаточная производительность современных компьютеров. Написать формулы для работы с водой, тканью, резиной или туманом несложно, их огромное количество, но просчитывать такие формулы пока нечем.

Возьмем для примера ткань. Только подумайте, сколько точек в юбке обычной девочки. Тысячи! И чтобы подол правильно развевался на ветру, необходимо ежесекундно рассчитывать положение каждой точки, учитывать поведение всех соседних, силу ветра, направление движения персонажа. Это не говоря уже о том, что ветер создает множество маленьких потоков, которые также влияют на поведение ткани. И вот представьте, что ваш Core i7, который пыхтит с Windows, улаживает проблемы с драйверами, следит за ИИ персонажей, вдруг получает такую юбочку. Даже самые современные процессоры не готовы к таким нагрузкам.
Тесты
«Анабиоз: Сон разума»

Саму игру сложно назвать шедевром, но как бенчмарк для PhysX она подходит на все сто. Тут есть все, подо что разрабатывался PhysX SDK: льющаяся вода, игры с тканью, прыгающие ящики. При этом «Анабиоз» крайне требователен к графике. Красивые модели, сложное освещение — все это создает нешуточную нагрузку на видеокарту.
Batman: Arkham Asylum

Собственно интересных задумок с физикой в «Бэтмене» немного, зато объекты в игре представлены самые разные. Плащ главного героя развевается на ходу, враги красиво разбрасывают сотни листиков бумаги. А еще нам показывают работу PhysX с частицами: тут очень красиво сделан туман, который плотным слоем стелется по земле.
PhysX FluidMark

Этот бенчмарк разработан самой NVIDIA. Ничего захватывающего дух в нем нет: посреди экрана стоит обычный шар, на который сверху выливаются десятки тысяч частиц, образующих вязкую массу. Fluid не загружает видеокарту графикой и выжимает все соки на просчет поведения частиц — при помощи этого теста легко оценить общую производительность каждой из плат.
Светлая мысль

MSI N9600GT Zilent 1G

Первой это поняла компания Ageia: в середине 2000-х она начала делать физический движок PhysX SDK, который научила считать поведение твердых тел, ткани, жидкости — и обрабатывать все аппаратными средствами. Своими силами Ageia разработала одноименную плату PhysX, которая и должна была помочь центральному процессору. Однако Ageia не хватило ни денег, ни сил, чтобы довести революционный проект до конца и получить необходимую поддержку от разработчиков игр. В феврале 2008 года компанию перекупила NVIDIA.

Основа платы PhysX — ядра общего назначения, примерно такие же, как на всех видеокартах NVIDIA. Учитывая, что в 2008-м уже вовсю продвигалась CUDA, встроить поддержку PhysX в драйверы не составило труда: все видеокарты NVIDIA после GeForce 8000 умеют работать с движком PhysX. Но и здесь есть свои недостатки.

При включении PhysX мы действительно разгружаем центральный процессор, но одновременно отбираем ресурсы у видеокарты, а ведь ей еще графику в игре считать. Получается палка о двух концах. Да, видеокарты быстрее считают физику, они заточены под это, но общая производительность системы все равно снижается. А терять дополнительные кадры в секунду ради каких-то ящиков хочется не каждому. NVIDIA с самого начала предлагала выход: купите, мол, вторую видеокарту и отдайте ее на растерзание физики. Но условия были больно жесткими. В SLI можно было ставить только идентичную первой плату, и если у вас уже стояла GTX 285, то за вторую такую карту приходилось отдать еще 12 000 рублей, что было слишком дорого за ящики и юбочки.
Время перемен

MSI N210-MD512H/D3

Технология NVIDIA Multi-Card — это, условно, разновидность SLI. С ее помощью можно объединить GTX 285 со старой GeForce 8800 GT или GTX 275 c GeForce 9500 GT, не используя дополнительные мостики или дорогие материнские платы. Порядок действий простой: установить более мощную плату (GTX 285, GTX 275 и т.д.), проинсталлировать драйверы, выключить компьютер, вставить вторую видеокарту. Windows сама подхватит еще одну плату и подберет драйверы под нее. От вас потребуется только войти в NVIDIA Control Panel и выбрать, какая из плат будет отвечать за PhysX.

Для тестов мы взяли сразу пять плат MSI: GeForce 9500 GT и 9600 GT, GeForce GT 240, GT 220 и 210. Все эти карты стоят сегодня меньше 3500 рублей (которые вполне можно заплатить за достоверную физику), и нас интересовало, насколько они потянут PhysX. Чтобы не упираться в графику, в связку к ним мы установили GeForce GTX 285. Естественно, мы также проверили ее в работе без аппаратного ускорения и с включенным PhysX.

MSI N240GT-MD1G

Компьютер для тестов собрали мощный. Материнская плата — MSI X58 Platinum, процессор — Intel Core i7 920, память — три планки Kingston HyperX DDR3-1600 по 2 Гб. Сверху поставили Windows Vista 64-bit и скачали последние драйверы ForceWare 195.62. Для оценки производительности мы использовали пару игр — «Анабиоз: Сон разума» и Batman: Arkham Asylum — и специальный бенчмарк NVIDIA PhysX FluidMark. В играх мы выкручивали на максимум не только физику, но и общее качество графики.
Один хорошо, а двое лучше

Центральный процессор не справился с расчетами PhysX SDK — это стало ясно сразу. Даже наш мощный Core i7 920 не смог вытянуть ни одну из игр на приемлемый уровень производительности — посмотрите таблицы, везде не больше пятнадцати кадров. После переключения PhysX на GeForce GTX 285 ситуация кардинально изменилась — игры пошли на приличной скорости. Но по сравнению с тестами со включенным PhysX без поддержки второй видеокарты все равно получалось мало: без PhysX на GTX 285 набегало 144 кадра, с PhysX — уже 58.

MSI N220GT-MD512

Мы стали подбирать идеальную плату для расчетов физики, прогнали довольно много тестов и выяснили, что далеко не каждая видеокарта способна работать с PhysX: слишком большие объемы расчетов. Мало того, неподходящая плата и вовсе может стать узким местом всей системы. Сравните результаты! Первая же видеокарта, GeForce 210, не справилась со своими обязанностями и затормозила работу: по сравнению с тестом с одной GTX 285 мы потеряли в Batman 27 кадров в секунду. Но начиная с GeForce 9500 GT показатели поползли вверх. Несмотря на то, что абсолютная производительность PhysX по сравнению с одиночной GTX 285 ниже в три раза (см. результат FluidMark), в играх такая связка прибавляет по 10 кадров в секунду. То же можно сказать и про GeForce 9600 GT — прирост почти 40%. А вот карты новой серии, GT 220 и GT 240, вели себя неоднозначно. В игре «Анабиоз: Сон разума» результаты были на уровне одиночной GTX 285, а в Batman: Arkham Asylum производительность увеличилась на 37%.