Введение
Физика всегда была неотъемлемой частью игр, она описывает, как объекты взаимодействуют друг с другом и их окружением. Но реалистичная физика в игре требует немалого числа сложных вычислений. Это, в свою очередь, накладывает всё большие требования на вычислительные ресурсы центрального процессора. Но в связи с тем, что процессор уже работает над немалым количеством других задач, идея переноса физических вычислений на отдельный аппаратный блок (наподобие того, как GPU просчитывает графику) витала в умах разработчиков уже не один год. Следуя этой идее, Ageia создала и представила свою карту PhysX (см.
Похоже, мнения по поводу того, какой способ расчёта физики лучше, разделились. Именно поэтому мы решили поговорить с несколькими специалистами в этой области, дабы пролить свет на эту противоречивую тему. Так ли сложно просчитывать физику? Почему? И какая технология справляется с вычислениями лучше?
Убеждая потребителей
Разговоры по поводу отдельного процессора для обработки физики (и для других вычислительных задач вроде искусственного интеллекта) ведутся уже лет десять, но только сейчас мы получили готовые продукты. Так почему же отношение к ним оказалось столь прохладным? С точки зрения потребителей, основной проблемой стало то, какую производительность вы получите за уплаченные деньги. Нужно ещё оправдать выложенные $300 за очередную “железку”. Действительно, за такие деньги можно ожидать заметное увеличение производительности. Кроме того, каждый производитель должен выработать убедительную политику продвижения на рынок своего продукта, а карта Ageia PhysX этого так и не сумела. По крайней мере, так говорят результаты нашего тестирования, когда выделенный физический процессор только ещё сильнее замедлял игру. Поэтому очевидных маркетинговых преимуществ у новой карты мало, если они вообще есть.
Говоря простыми словами, физика просчитывает, как одни объекты должны взаимодействовать с другими. И продвигать на рынок физику далеко не так просто, как графику: вы не получите эффекта “ух ты!”, показав несколько скриншотов или игровой ролик. Здесь необходим личный опыт геймера. Физика присутствует, но её сложно ощутить до тех пор, пока вы не начнёте двигать и трогать объекты.
Да, Ageia попыталась показать
У Ageia есть и другая проблема: ATi и nVidia пытаются доказать нам, что они тоже способны просчитывать физику. Графические компании быстро выпустили демонстрации с тысячами движущихся объектов, просчитываемых в реальном времени с помощью обычного GPU, а не отдельного физического процессора. Всё это, конечно же, подкреплялось солидными числами, которые должны были, хотя бы теоретически, доказать преимущество технологий ATi/nVidia перед Ageia. Но всегда ли больше – лучше?
Конечно, нет. Если сравнить 3D-игру с графическим ускорителем и без него, то разница будет вполне ощутима. Сегодня захватывающие визуальные эффекты можно выводить в реальном времени без какого-либо предварительного просчёта. Но не стоит забывать, что графические ускорители появились на массовом рынке ещё 10 лет назад, и технология немало эволюционировала с момента первого появления. Без 3D-ускорителя любая игра способна “поставить на колени” даже самый мощный современный CPU, то есть рынок GPU сегодня очень даже перспективен.
Даже звук немало выигрывает от раздельной обработки с помощью современной звуковой карты, поскольку при этом с центрального процессора снимается определённая нагрузка. Хотя она и не такая большая, как в случае с видеокартой. Так что добавление ещё одного процессора для обработки физики смысл действительно имеет. Разгрузка CPU от дополнительных расчётов – это всегда хорошо, а если ещё учесть обещания сделать игры более реалистичными…
Но не всё так просто.
Законы физики
Ageia не слишком охотно рассказывает о работе своего модуля PPU, поэтому, по большей части, приходится только догадываться, как на самом деле работает физический процессор. Да и специалисты распространяют немало слухов, но зато у них есть чёткое понимание, как работает настоящая физика, и как её можно симулировать. Что ж, давайте взглянем на факты.
Простая симуляция физики, вроде свободного падения объектов или взаимодействия частиц, не такая уж сложная. Уже не один десяток лет по этим проблемам существует разнообразная научная литература. Ещё старее небесная механика, занимающаяся такими телами, как планеты. Многие алгоритмы прекрасно работают в игровом окружении, они же используются сегодня и в игровой физике.
Но когда приходится рассматривать движение большого числа частиц или силы дальнего взаимодействия, которые стремительно меняются, ситуация быстро усложняется. А если учитывать, например, просчёт жёсткой шарнирной системы с кинематическими ограничениями наподобие руки робота, то появляются серьёзные проблемы. Они усугубляются, если:
- в системе есть замкнутые петли;
- жёсткое тело быстро вращается (расчёт гироскопов весьма сложен);
- существуют как очень тяжёлые, так и очень лёгкие объекты, взаимодействующие друг с другом;
- есть взаимодействие объектов;
- есть удары и столкновения.
“Что касается тяжёлых и лёгких объектов, а также столкновений и взаимодействий, то ни одну из существующих технологий нельзя признать на 100% точной”, – сказал Клод Лакурсье (Claude Lacoursiиre), руководитель исследовательских работ CM Labs, компании, специализирующейся на симуляции физики. Хотя, по его словам, существуют хорошие алгоритмы, просчитывающие удары и взаимодействия, они ещё не проникли в область игровой физики. По информации Лакурсье, существующие алгоритмы игровой физики являются низкокачественным приближением, которое чаще всего создаёт проблемы со стабильностью, причём решать их приходится не менее грубым способом. Например, метание молотка в игре чаще всего не предусматривает каких-либо гироскопических и инерционных эффектов вообще. Скорее всего, молоток будет вести себя как обычный резиновый мяч. Конечно, это не так принципиально, но если уж мы затеяли разговор о реалистичной физике, то следует учитывать все аспекты.
Как видим, симуляция реалистичной физики – дело нелёгкое. Чтобы решить эту проблему, по словам Лакурсье, необходимы вычисления, причём действительно “тяжёлые”. Для симуляции подобные схемы работают, поскольку сцены можно просчитывать за некоторый период времени. Но если перенестись в сферу вычислений реального времени, то здесь всё становится уже не таким простым. В играх физику приходится просчитывать быстро, в реальном времени и без замедления игрового процесса. Чтобы сделать расчёты максимально эффективными, приходится реализовывать несколько обходных путей, в результате чего теряется определённая степень точности.
С научной точки зрения
Наука призвана решать проблемы, но если подключаются компьютеры, то на первое место встают вычисления. Например, чтобы кирпичная стена выглядела реалистично и с правильным освещением, GPU приходится задействовать шейдеры. Принцип заключается в использовании хорошо продуманного и реализованного алгоритма, который каждый раз даёт реалистичные результаты, и сегодня шейдеры являются прекрасным примером хорошего использования доступного аппаратного обеспечения.
Кенни Эрлебен (Kenny Erleben), доцент Datalogical Institute в Копенгагене (Дания), работает над физической анимацией и имитационным моделированием. Он поведал нам, что с точки зрения научного работника и с учётом доступных на сегодня сведений, карта PhysX выглядит отнюдь не обещающе по двум причинам. Во-первых, физические алгоритмы аппаратно прошиты, что не позволяет программистам менять структуру алгоритмов, если они обнаруживают более интересные варианты. Во-вторых, как мы уже упоминали выше, факторы, влияющие на физику, нельзя очень сильно упрощать. В итоге приходится довольствоваться тем, что есть, а прогресса ожидать вряд ли можно.
Эрлебен объясняет: “Решение итеративно по своей природе, а качество анимации ограничено скоростью линейной сходимости подобных решений. Переходя на простой язык, алгоритмы часто бывают хороши для взрывной и эффектной физики, например, удара машины о стену или разрушения замка с помощью катапульты. Но есть разные мелкие эффекты, которые подобные алгоритмы вообще не учитывают”.
Мелкие эффекты, о которых говорит Эрлебен, включают, например, то, насколько высоким должно быть строение в игре, чтобы оно стало деформироваться под собственным весом при его повреждении. Вода сегодня больше похожа на желе – она движется медленнее и легче сжимается. Одежда выглядит и ведёт себя более эластично, чем в реальном мире. Все эти примеры, по его словам, прекрасно иллюстрируют, как физические эффекты в играх часто описываются скриптами: например, кирпичная стена “оживает” за миг до того, как в неё врежется танк. Хотя, сама по себе, эта стена рассыпалась бы и без всякого танка. Как считает Эрлебен, частично в этом виновно желание программистов лучше контролировать вычислительные ресурсы. Но главная причина заключается в том, что реализация законов физики в быстрых и надёжных алгоритмах – дело отнюдь не лёгкое.
Эрлебен предпочитает вариант просчёта через GPU, поскольку сегодня графические процессоры стали уже достаточно гибкими и программируемыми. “При использовании GPU можно полностью контролировать доступные аппаратные ресурсы. GPU отличаются двумя интересными особенностями: потоковой архитектурой и параллельной природой”. В то же время, при работе с графическими ускорителями возникают и свои проблемы, например, практически невозможно отлаживать код программы, да и с каждым производителем связаны свои особенности. Впрочем, как мы полагаем, такое предпочтение GPU может быть связано с тем, что графические ускорители уже достаточно долго находятся на рынке. И через несколько лет мы можем то же самое услышать и насчёт PPU.
По словам Лакурсье, с использованием итеративных решений (GPU, PPU) вместо более точных прямых, связана существенная проблема. Поскольку решения работают с помощью грубых приближений, они не учитывают долговременные эффекты вообще, так как это потребовало бы слишком больших вычислительных ресурсов. А это, говорит Лакурсье, является причиной, почему и PPU, и GPU не являются достаточно хорошей платформой. Вместо них работа может выполняться “специалистом” по решению прямых матричных операций: центральным процессором ПК. Чистая вычислительная мощность двух многоядерных CPU с большим кэшем показывает, что проблем с увеличением производительности возникнуть не должно. Впрочем, как справедливо указывает Эрлебен, чтобы хорошо использовать многопоточную архитектуру, нужно переработать вовлечённые алгоритмы, на что уйдёт определённое время.
Скоро мы должны получить всю возможную комбинированную мощь двух многоядерных CPU, расчёта физики через GPU и карту Ageia PhysX. Так что будущее выглядит интересно как для науки, так и для игр. Поскольку учёные продолжают пытаться симулировать эффекты на новом “железе”, мы, без сомнения, увидим игры со всё большим числом функций, использующих новые технологии, как программные, так и аппаратные. А если играть интересно, то и вряд ли геймера будет сильно беспокоить, что игровая физика работает несколько не так, как в реальном мире.
Заключение
В игровой индустрии физика, похоже, стала новым камнем преткновения. На вопрос, какое “железо” сможет лучше обрабатывать физику, мы так и не можем ответить. Тем более что для этого нужно углубиться в специфику PPU Ageia, дабы оценить реальный потенциал физического ускорителя.
С научной точки зрения, разговоры о карте Ageia PhysX пока что пустые. Конечно, специалисты и учёные, с кем мы общались, ещё не получили карту в руки, но их мнения важны, поскольку они прекрасно знают, чего можно ожидать от PPU. Они прекрасно осведомлены о математических ограничениях и знают, что карта всё равно не поможет просчитывать физику на уровне реального мира. Но, как мы знаем, наука и игры, то есть развлечения, занятия совершенно разные. В игре на первом месте стоит то, насколько интересно играть, пусть даже реализация физики отличается от реального мира.
Многие геймеры ожидают увидеть ещё больше эффектов, которые добавляют реализма. Например, чтобы обломки после взрыва оставались на земле, а не исчезали, когда геймер покидает сцену и потом вновь к ней возвращается. Представьте, что вы сможете разрушать стены внутри здания, пока оно не рухнет под собственным весом. Если вы сможете взаимодействовать с любым объектом в игре, а не просто смотреть на него, то мы перейдём на совершенно новый уровень игр, где эффекты будут уже не только визуальными.
Конечно, физика это не просто освещение и отражения, как в графике, где можно создать иллюзию, скажем, реалистичной деревянной стены. Вы же не хотите, чтобы махровое полотенце вело себя как кусок фанеры при взаимодействии с другими объектами? Игровая физика, которая сможет сделать объекты боле реалистичными, требует просто сумасшедшего объёма вычислений, которые иногда можно переложить на PPU, потеряв при этом аккуратность, или задействовать CPU, который просчитает эффект правильнее, но за счёт потери общей игровой скорости.
Так всё же, какое “железо” лучше справится с физикой? Поживём – увидим. Оптимальное решение всё равно будет компромиссом. Например, многоядерный CPU станет отвечать за сложные вычисления, а некоторый аппаратный ресурс (будь то PPU или GPU) возьмёт на себя упрощённые вычисления с большим числом объектов. И, конечно, не помешает сдвоенная видеокарта, которая сможет выводить на экран все необходимые объекты с хорошей частотой кадров.
Но одно совершенно ясно: аппаратное ускорение физики уже вышло на игровую сцену и останется здесь в том или ином виде.