23 июля 2009
Обновлено 17.05.2023

Законы физики. Прицельный взгляд на технологию NVIDIA PhysX

Законы физики. Прицельный взгляд на технологию NVIDIA PhysX - изображение обложка

Красивая реалистичная графика — далеко не все, что нужно игроку. Создать реалистичное изображение — такое, чтобы глаз верил происходящему в игре, — невозможно без точной имитации законов физики. Если в виртуальной копии города все ящики и мусорные корзины будут прибиты к земле, если одежда главного героя не колышется на ветру, если виртуальная лужа не пойдет волнами и не оставит следа на виртуальном ботинке — поверить в происходящее не получится.

И главная проблема, стоящая на пути появления достоверной и детальной физики в играх, — недостаточная мощность оборудования. Как только силенки процессоров и видеокарт увеличиваются, разработчики тут же пускают их на детализацию изображения, на увеличение размера текстур, на более красочные спецэффекты, на AI. На что угодно, кроме физики.

Физика в надежных руках

В начале эпохи физических расчетов в играх все калькуляции ложились на плечи центрального процессора. Другого вычислительного устройства тогда попросту не было: мощностей тогдашних одноядерных процессоров хватало разве что на расчет параметров трех-четырех ломающихся деревянных ящиков в одной сцене да на редкий мусор на улицах виртуальных городов. Постепенно игры научились просчитывать взаимодействие объектов, управлять траекторией полета тел и художественным разбрызгиванием крови. Во многом развитию физических спецэффектов поспособствовал движок Havok Physics , представленный в 2000 году одноименной ирландской компанией (Havok переводится с ирландского как «ответ на все вопросы»). Программный интерфейс позволил разработчикам сосредоточиться на коде игры, не отвлекаясь на прописывание физических эффектов — все они уже были запрограммированы в движке.

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

Лед тронулся только в 2006 году, когда компания Ageia разработала ускоритель физических эффектов и соответствующий программный движок PhysX. Архитектура системы позволяла перегрузить все физические расчеты на плечи графического чипа, а программная составляющая показывала просто невиданные доселе чудеса физики — десятки тысяч частиц и объектов в одном кадре. Создатели PhysX обещали полностью интерактивное разрушаемое окружение, реалистичные взрывы с просчетом взрывной волны… в общем, настоящий рай.

Ситуация на рынке начала было накаляться — все производители процессоров, графических и центральных, бросились судорожно придумывать свой «ответ Чемберлену». Однако, несмотря на бодрый старт, сил и опыта Ageia не хватило для того, чтобы грамотно продвинуть свое устройство среди девелоперов. Пара технических демоверсий да одна демонстрационная игра Cell Factor — вот и все, чего добилась компания за два года существования PhysX.

К тому времени видеокарты сделали мощный шаг вперед — графические конвейеры со строго прописанными функциями исчезли, их место заняли универсальные шейдерные процессоры. Отныне графические чипы могли заниматься расчетами общего назначения — немудрено, что ATI и NVIDIA разом ухватились за новую возможность и анонсировали расчеты физики средствами GPU. Только, вот незадача, разрабатывать собственный мультиплатформенный движок для взаимодействия с графическими чипами и играми выходило слишком накладно, да и совсем ни к чему — на рынке ведь уже были Havok и PhysX…

Создателей Havok в конце 2007 года выкупила компания Intel. По слухам, микропроцессорный гигант тут же приказал свернуть работы над продвинутым движком Havok FX , который должен был задействовать мощности графических чипов при расчетах физики, и даже заставил всех работавших над ним инженеров подписать страшные договоры о неразглашении информации. Так что вместо того, чтобы придумывать конкурента PhysX, лучшие умы Intel принялись оптимизировать движок для работы в среде многоядерных х86-совместимых процессоров — все это впоследствии легло в основу готовящегося к выходу в следующем году проекта Larrabee.

NVIDIA же не оставалось ничего другого, кроме как выкупить наработки Ageia: транзакция была завершена в феврале 2008 года, и уже спустя несколько месяцев калифорнийская компания анонсировала ускорение физики мощностями нового чипа и интеграцию программного пакета PhysX с собственными разработками. ATI на пару с AMD остались не у дел.

Место под солнцем

Итак, в руках NVIDIA оказался полноценный физический движок, готовый комплект для разработчиков PhysX SDK и неплохая пользовательская база — на момент покупки технология уже пользовалась некоторой популярностью и получила поддержку со стороны крупных игрострой-компаний. Так что, по сути, NVIDIA осталось только связать движок со своими графическими процессорами и раскрутить его в среде разработчиков. Здесь как нельзя кстати пришлись уже готовые и вполне работающие концепции компании — платформа для вычислений общего назначения средствами графического чипа ( CUDA ) и программа сотрудничества с разработчиками игр The Way It’s Meant to Be Played.

Связать движок с CUDA не составляло проблем — в первых же драйверах PhysX NVIDIA анонсировала поддержку всех выпущенных игр с физическими эффектами на основе Ageia PhysX SDK. Владельцы видеокарт GeForce , начиная с восьмого поколения, получили подарок совершенно бесплатно — физика во многих играх им досталась без аппаратного ускорителя Ageia (эту железку к тому времени уже отправили на свалку истории), ведь все расчеты физики легли на плечи графического чипа. Начало было положено, оставалось продвинуть технологию, заручившись поддержкой всех крупных издателей. Этим и занялась NVIDIA в рамках программы The Way It’s Meant to Be Played.

Сама концепция тесного сотрудничества появилась в арсенале компании задолго до PhysX. По мере усложнения графических чипов и появления десятков новых функций писать игры стало труднее — так что в рамках программы инженеры NVIDIA помогают девелоперам разобраться в микроархитектуре видеокарт. В ходе работы обе стороны пытаются создать эффективный код, который будет работать максимально быстро на видеокартах GeForce, добавить поддержку красивых физических и графических спецэффектов (у ATI тоже есть подобная программа взаимодействия с разработчиками — Get in the Game ).

Получается, что на руках у NVIDIA оказались все карты — поддержка мощной физической технологии со списком доступных игр и концепция для ее продвижения. В компании говорят, что сейчас движок продвигает себя сам, и с этим сложно не согласиться, ведь AMD со своим графическим подразделением пока не смогла дать достойный ответ конкуренту. С момента анонса NVIDIA PhysX к калифорнийскому лагерю присоединились производители игровых приставок, издатели и разработчики игр Epic , Electronic Arts , Capcom , Sega , THQ , GRIN , DICE и даже создатели iPhone. Казалось бы, вот оно, игровое счастье! Вот-вот произойдет чудо и на рынке появится много интересных игр с интерактивным окружением, ведь такие гиганты уж точно должны найти достойное применение наработкам NVIDIA?

А теперь добро пожаловать в суровую реальность.

Разрушить все

На бумаге возможности движка PhysX выглядят просто потрясающе. С его помощью можно создать по-настоящему интерактивное окружение с разрушаемыми стенами, пробиваемыми заборами, плавающими по воде предметами и тому подобными радостями. Движок в состоянии отрисовать более 500 000 миниатюрных частиц в кадре, просчитать очень реалистичный огонь, заставить ткань развеваться на ветру, рваться от пуль и огибать проходящих персонажей. На практике же мы пока не получили ни одной игры, где все это реализовано по максимуму. Да, был Mirror’s Edge с трескающимся стеклом, был Advanced Warfighter с красивыми взрывами, был даже Terminator: Salvation , где роботы из будущего реалистично бросались остовами автомобилей. Только вот все это выглядит куда менее эффектно, чем на самом деле позволяют технологии. Многое из реализованного преспокойно может обработать любой центральный процессор, без помощи десятков шейдерных процессоров в графическом чипе.

Видеоролики на сайте NVIDIA ( www.nvidia.com/object/physx_new.html , также их можно найти на нашем диске) пытаются убедить нас в обратном. В одном из них автомобиль ездит по логотипу компании, поднимая невероятной красоты облака пыли. Пыль клубится и медленно растворяется в воздухе. Когда камера приближается к машине, становится видно, как тысячи крошечных пылинок повинуются законам физики: кружатся в вихрях, отражают лучи света, сталкиваются и разлетаются… Реалистично, завораживающе и, если верить NVIDIA, вполне реально — на просчет таких вот картинок особо мощных карт не понадобится, хватит даже GeForce 9800. Так почему же всего этого до сих пор нет в играх?

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

На самом деле существует пара игр с «полноценным» окружением. Например, высокую планку качества в свое время задали дополнительные уровни для Unreal Tournament 3 , доступные в пакете GeForce Graphics Plus Powerpack N1. Выстрелы из гранатометов и лазерных винтовок деформируют стены, разносят в щепки рекламные щиты, взрывают асфальт. Только вот таких уровней всего три. Еще один пример качественного использования физики — « Анабиоз: Сон разума ». Активация PhysX преображает игру: появляется реалистичная вода, в каждой каюте десятки мелких предметов начинают жить своей жизнью, подчиняться настоящим физическим законам, а не валяться мертвым грузом на полках и столах.

Терпение — это искусство надеяться

Есть и еще один фактор, который волнует разработчиков игр, — кроссплатформенность. Технология NVIDIA PhysX реально работает не только на PC, но и на консолях (Xbox 360, PlayStation 3, Nintendo Wii), и даже на откровенно слабых мобильных платформах вроде iPhone. Однако применяется она до сих пор практически исключительно в PC-играх, оставляя консольным решениям только самые примитивные физические расчеты. Разумеется, тут дело только в мощностях: современные видеокарты с сотнями шейдерных процессоров легко справляются с нагрузкой, но консоли тем же похвастаться не могут. А представляете, как тяжело создавать одну и ту же игру для разных платформ? NVIDIA, конечно, гордо заявляет о «масштабируемости физики» для систем различной мощности, но на самом деле эта самая маштабируемость — это вагон и маленькая тележка строчек кода, которые придется менять под каждую платформу отдельно. То есть как ни крути, а игру все равно придется изменять под каждую консоль в соответствии с ее производительностью — загружать соответствующие библиотеки и ограничивать глубину расчетов.

Такие сложности, разумеется, не столько привлекают, сколько отпугивают девелоперов. Однако скоро ситуация должна измениться: вопреки слухам, NVIDIA не стала сидеть на мешке сокровищ Ageia и пожинать плоды чужих трудов — программисты компании продолжили разработку физического движка. И уже создали новое решение — причем не одну программу для расчетов, а целую физическую платформу NVIDIA APEX.

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

Комплект APEX, так же как и PhysX, состоит из двух частей — собственно движка и библиотек к нему, которые можно скачивать и загружать в игру по мере надобности. В настоящий момент практически все библиотеки, правда, находятся на стадии бета-версий и для скачивания доступны только некоторые из них — модули разрушений, реалистичной растительности, частиц (газ, туман, пыль и тому подобное) и одежды. Но отзывы со стороны девелоперов уже очень хорошие — фокус-группа NVIDIA в один голос утверждает, что работать с APEX удобно, а эффекты ее выглядят намного реалистичнее эффектов PhysX. Кстати, если у вас есть видеокарта NVIDIA GeForce 8800 или старше, вы можете убедиться в этом сами: на нашем диске выложена маленькая демонстрационная игра, созданная с использованием библиотеки APEX Soft Bodies. Только не забудьте поставить соответствующие драйверы, прежде чем запускать игру, — их тоже можно взять с диска.

Призрачная угроза

В последнее время все больше говорят об открытой платформе для вычислений общего назначения средствами GPU под названием OpenCL — вот, мол, смотрите, подрастает конкурент NVIDIA. На словах все и вправду весьма внушительно: открытый стандарт, абсолютно бесплатный для любых разработчиков, огромный список поддерживаемого оборудования, сотни энтузиастов со взором горящим в десятках стран мира… Такой подход может разом лишить преимуществ фирменные технологии конкурентов! Правда, в реальности все опять не так радужно: для того, чтобы сесть и написать свой физический движок под OpenCL, нужно не только много ума и усидчивости, но еще деньги и время, а на дворе все кризис, и раскошеливаться на такие рискованные проекты никто не торопится.

Такая же ситуация сложилась и вокруг специализированных шейдеров Compute Shader, которые войдут в состав будущего API DirectX 11. С их помощью тоже можно будет производить расчеты общего назначения на мощностях любых современных графических чипов без использования сторонних платформ и закрытых стандартов вроде NVIDIA CUDA. В теории для них тоже можно было бы написать свой физический движок. У Microsoft даже, скорее всего, нашлись бы на это деньги, если бы не одно но: работать движок, написанный для DirectX 11, сможет только на PC-платформах — консоли его просто не потянут, уровня их мощностей хватает только на DirectX 10, да и то с трудом. Ну а поскольку в сравнении с таким кроссплатформенным гигантом, как PhysX, гипотетический Microsoft-движок смотрится довольно бледно, компания не спешит расставаться с деньгами.

Получается, что на самом деле новых конкурентов NVIDIA не увидит еще долго — время не то. Другое дело — конкуренты старые. PhysX ведь, как ни крути, не открытый движок. Да, его могут использовать все желающие, но обязательная причастность к «зеленому» лагерю NVIDIA при этом импонирует далеко не каждому. Самый яркий пример — поддержка со стороны видеокарт AMD: вы вот можете представить себе коробку с новой мощной видеокартой ATI Radeon с логотипом NVIDIA PhysX? Мы точно не можем. Умельцы с сайта NGOhq.com пытались сделать драйвер, который бы обманул программное обеспечение PhysX и заставил его работать на видеокартах ATI Radeon HD, но… за полгода ни к чему хорошему попытки не привели — и энтузиазм «подпольщиков» поутих.

По слухам, AMD уже вступала в переговоры с NVIDIA по поводу использования PhysX, но результатов так и не добилась. После этого компания обратила свой взор на физический движок Havok, принадлежащий компании Intel (подробнее об этом читайте на врезке). Как знать, может быть, вместе с Larrabee появятся и «физические решения» для AMD?

* * *

«Физическая» технология NVIDIA медленно, но верно завоевывает сердца разработчиков игр. Сейчас ее поддерживают 140 игр, еще несколько десятков находится в разработке. Ядро PhysX уже вживлено в большинство самых мощных игровых движков — Unreal Engine 3 ( Epic ), Gamebryo 2.5 ( Emergent Game Technologies ), Diesel Engine ( GRIN ), Eclipse Engine ( BioWare ). Однако о полном порабощении умов девелоперов новой технологией говорить пока слишком рано — на это потребуется еще не один год.

[[BREAK]] Да придет спаситель

Зачем компании Intel мог понадобиться собственный физический движок? Зачем вкладывать деньги в платформу Havok? Производитель не хочет остаться в стороне от перспективного рынка, когда закончатся работы над проектом Larrabee , мощным потоковым процессором для расчетов общего назначения. Устройство будет конкурировать с ATI Radeon и NVIDIA GeForce , но предложит более универсальную микроархитектуру: вместо закрытого ядра собственной разработки компания использует несколько х86-совместимых мини-ядер с векторными конвейерами в каждом. Larrabee — это, по сути, что-то среднее между типичной видеокартой и центральным процессором. По словам Intel, архитектура совместит в себе лучшее от двух «миров»: ray tracing, потоковые вычисления, симуляция физики в реальном времени… все это Larrabee будет проделывать шутя.

Если все пойдет по плану, работы будут завершены в начале 2010 года. Сможет ли устройство потягаться с привычными видеокартами на рынке настольных графических чипов? Пока непонятно. Но как бы там ни было, новинкой уже заинтересовалась компания DreamWorks — Larrabee будет использован при создании их анимационных фильмов.

Посеять хаос

Чтобы не отставать от NVIDIA по части физики, AMD решила завязать крепкие отношения с компанией Intel. Вернее, с тем ее подразделением, что занимается разработкой Havok. Надо сказать, процессорные гиганты неожиданно быстро нашли общий язык — движок был сразу же лицензирован для видеокарт ATI , и инженеры-разработчики обеих компаний принялись творить чудеса. Перед ними встала весьма непростая задача: написать физический движок на основе OpenCL, не уступающий по функциональности PhysX, да еще научить его масштабировать физику в зависимости от мощности игровой платформы. Такой подход позволит играм задействовать все ресурсы компьютера с любым х86-совместимым процессором и любой современной видеокартой — если разработчикам удастся реализовать свои смелые идеи, конечно.

Первые плоды сотрудничества AMD и Intel были продемонстрированы на Game Developer’s Conference в марте 2009 года — программистам показали модули Havok Cloth и Havok Destruction. Первый отвечает за обработку тканей, а второй — за разрушения, оба модуля прекрасно работают с видеокартами ATI Radeon и процессорами AMD Phenom II. Правда, никаких новых высот Havok пока не покорил — его успехи в физике пока что не дотягивают до высоких планок PhysX. В общем, то, что AMD включилась в гонку физических вооружений, конечно, отрадно, но только пока не анонсирована ни одна игра, которая бы поддерживала новые технологии.

Комментарии
Чтобы оставить комментарий,Войдите или Зарегистрируйтесь