![]() |
ATI Physics
В июне месяце, во время тайваньской компьютерной выставки Computex, компания ATI демонстрировала фирменную систему расчета физики, использующую в качестве "физического ускорителя" видеокарту Radeon X1900XTX. Тогда мы рассмотрели базовую концепцию технологии ATI Physics и теоретические предпосылки для использования видеокарт в качестве ускорителя физических расчетов. Основные выводы, которые были получены в ходе первого знакомства с ATI Physics, заключается в том, что в настоящее время акцент делается на введение двух эффектов - обнаружение столкновений объектов и расчет поведения множества мелких (точечных) частиц. Что касается производительности "физических ускорителей", то нам приходилось верить цифрам, озвученным представителями ATI. Разумеется, с той поры не проходило желание пощупать "физику" от ATI своими руками. И вот, эта возможность нам была предоставлена, благодаря российскому представительству ATI и компании Depo, чьи компьютеры после подписания эксклюзивного соглашения с ATI оснащаются видеоадаптерами исключительно этого производителя. В этот раз мы сможем "вживую" увидеть, как работает ATI Physics и оценим масштабируемость производительности видеоадаптеров, используемых в качестве ускорителей физических расчетов. Тестовый стендМы получили на тестирование системный блок топовой конфигурации. Из наиболее важных для нас компонент отметим - процессор Intel Core Duo Extreme X6800 @ 2,93 ГГц, 2 Гб оперативной памяти стандарта DDR2, а также два видеоадаптера Radeon X1900XTX. Первый видеоадаптер используется в качестве "обычной" видеокарты, которая отвечает за рендеринг и вывод изображения, а второй Radeon используется в качестве ускорителя физических расчетов. На фото ниже - Компьютер DEPO с запущенной 3D-демо от ATI. ![]() На предоставленной нам системе использовалась сугубо технологическая версия видео-драйверов. По словам представителей ATI это даже не бета-версия, а "альфа". Поэтому, чтобы не вносить путаницу, мы не будем приводить номер версии драйверов, поскольку свежие драйверы ATI Catalyst наверняка получат более высокий порядковый номер версии, и у кого-нибудь может возникнуть ощущение, что они будут "включать в себя" и поддержку ATI Physics, а это не обязательно так. Мы позволили себе некоторую вольность в обращении с предоставленной на тестирование системой, а именно - после проведения первой серии тестов заменили "физический ускоритель" Radeon X1900XTX на Radeon X1600XT. Система без проблем распознала видеокарту и установила ее в качестве "ускорителя физики". Предварительные замечанияТестируемая система была нам предоставлена в полностью сконфигурированном виде, с уже предустановленными демо-сценами. Отсюда следует ряд определенных ограничений. Во-первых, получаемые результаты и оценки справедливы только в рамках рассматриваемой нами системы и необязательно будут совпадать с тем, что мы увидим, когда ATI Physics официально выйдет в свет. Во-вторых, не ждите объективного сравнения с конкурирующими технологиями расчета "физики", таких сравнений не будет, поскольку пока не существует тестовых приложений для демонстрации физических расчетов, способных запускаться на разных платформах. Физические модели, положенные в основу каждого из рассматриваемых ниже тестов, нам неизвестны. То есть, мы не можем однозначно сказать, какими "физическими" параметрами наделены объекты, какие именно из физических законов учитываются при моделировании движения тел и частиц, а также с какой степенью приближения выполняются данные расчеты. Для того, чтобы вы имели представление о сложности расчета "физики", приведем несколько примеров. Объекты реального мира имеют определенную массу, плотность, упругость, сложную форму. Из физических законов можно привести - закон всемирного тяготения, законы сохранения энергии и импульса. Объекты сложной формы и обладающие массой, имеют центр масс (или центр тяжести), который может не совпадать с геометрическим центром объекта. А это приходится учитывать, поскольку даже при прямолинейном движении центра масс объекта (центра тяжести), объект может вращаться. Другая сложность расчета поведения объектов сложной формы состоит в том, что при соударении необходимо знать "границу" объекта. В простейшем случае расчет соударений проводится для графических примитивов типа сферы или параллелепипеда, в который включен объект. Попытка привести в соответствие графический вид и физическую форму объекта приводит к возрастанию сложности модели объекта. Как видите, попытка смоделировать "реальное" поведение объекта в физическом мире кардинально отличается от задачи "движение бесконечно малой невесомой точки в вакууме". Теоретически, зная все параметры всех объектов и их начальные скорости/ускорения, можно рассчитать положение, скорости и ускорения всех объектов в любой момент времени. Но для этого потребуется решить систему дифференциальных уравнений, количество которых пропорционально числу объектов. Для выполнения подобной задачи требуется неимоверное количество вычислительных ресурсов. Поэтому обычно прибегают к тем или иным упрощениям. Очевидно, что возрастание сложности модели позволит получить очень реалистичную картинку, но потребует больших вычислительных ресурсов. Нахождение разумного компромисса между реалистичностью и производительностью - задача сама по себе довольно нетривиальная. Следует также учитывать, что увеличение количества объектов в сцене накладывает дополнительную нагрузку на основной видеоадаптер, который занимается финальным рендерингом, даже если расчетом "физики" занимается специализированный вычислитель. Мы не будем гадать, какие именно упрощения были использованы в той или иной демо-сцене, использованной в тестах. Скажем лишь, что по нашим наблюдениям, все использованные объекты имеют массу, абсолютно гладкие (отсутствует сила трения) и твердые (то есть не деформируются). Это имеет значение при расчете движения объектов после соударения. Объекты находятся в поле тяготения, то есть, запущенные под углом к горизонту - движутся по параболе. Границы объектов, по которым производится расчет столкновений, довольно близко совпадают с видимой формой объекта. Как видите, инженеры ATI не ставили перед собой легких задач. Давайте посмотрим, что же получилось в итоге. Из десятка имеющихся тестов мы выбрали 3 синтетических теста и 2 "игровых". Такой выбор обусловлен тем, что синтетические тесты показывают стабильные средние результаты от запуска к запуску. Это позволяет провести количественные оценки полученных результатов с относительно малой погрешностью и сравнить результаты для двух видеоадаптеров, играющих роль "физического ускорителя". Тесты, эмулирующие игровое окружение, позволяют получить представление о новшествах, которые возможно появятся в будущих играх с поддержкой "физики". Все тесты проводились в разрешении 1280x1024 точек, полноэкранное сглаживание и анизотропная фильтрация отключались (NO AA/AF). Тест №1. Падающие камни.Демо-сцена выглядит в виде "склона горы" на которую непрерывным поток сыплются камни. Поверхность "горы" является относительно простой полигональной поверхностью с "желобами" и "кочками". "Камни" представляют собой вытянутые эллипсоиды, состоящие из малого числа полигонов. Регулируемый параметр - число "камней", которое равно 10 000, 15 000 или 20 000 штук. Один взгляд лучше, чем сто слов. Предлагаем вашему вниманию видеоролик rocks10k.avi (6,42 Мб, 640x480, DivX). К сожалению, получить изображение высокого качества не удалось, поскольку видео записывалось с экрана монитора. Ролик состоит из условно трех частей. Сначала "физика" ускоряется на GPU, затем тест переключается на использование CPU в качестве ускорителя "физики", и наконец переключение к исходному состоянию. Вы можете оценить как достоверность реализации "физики", так и разницу в производительности между GPU и CPU. ![]() "Камни" на "склоне горы" крупным планом. Как легко заметить, присутствует 3 вида камней, отличающихся размерами и цветом, которые расположились в складках "горного" рельефа. Расчет "физики" в данном тесте сводится к обнаружению столкновений между "камнями" и моделированию их движения согласно физическим законам. На скриншоте ниже показан вариант теста с количеством камней, равным 15 000 штук. ![]() Как видно из скриншота, скорость обновления сцены равна 50-ти кадрам/с. Мы предполагаем, что FPS ограничивается производительностью "ускорителя физики", а не графики. Косвенным подтверждением этому служит то, что скорость обновления сцены не изменялась при изменении угла обзора сцены таким образом, что в кадре оставался минимум объектов (снижалась нагрузка на видеоадаптер рендеринга). Как уже говорилось, тест позволяет менять количество камней в сцене, а также использовать для расчетов "физики" как выделенный видеоадаптер (GPU), так и центральный процессор (CPU). Мы получили значения FPS для всех возможных случаев, соответственно - 10 000, 15 000 и 20 000 камней в сцене, как рассчитанные на GPU, так и на CPU. К этим результатам мы также добавили значения, полученные при расчете "физики" на видеокарте Radeon X1600XT, которая заменила X1900XTX в качестве "ускорителя физики". Все вместе это отображено на графике ниже. ![]() Проанализируем полученные результаты. Первое, что хотелось бы отметить - при замене одного "физического ускорителя" на другой, значения FPS для линии "CPU" не изменились. А это значит, что "физика" считается на CPU честно. Ведь при расчете "физики" на центральном процессоре никакие ускорители не используются и результаты меняться и не должны. Второе. Как легко вывести из графика, "физический ускоритель" Radeon X1600XT отстает от Radeon X1900XTX на величину всего лишь от 30% до 38%. Хороший результат, если учитывать сравнительную стоимость этих "ускорителей". С другой стороны, Radeon X1600XT способен показать играбельный FPS только при 10 000 объектов в кадре, тогда как Radeon X1900XTX уверенно чувствует себя и при обработке 15 000 объектов. Впрочем, применительно к данному тесту об "играбельности" можно говорить с большой натяжкой. За "камушками" в данном тесте мы можем только наблюдать, а "сыграть" в них пока не получится. Третий момент, на который следует обратить внимание - нелинейность падения производительности с ростом числа объектов. При изменении количества объектов от 10 000 к 15 000, падение производительности составляет не 1,5 раза, а от 1,6 до 1,75 раз. При переходе 10 000 -> 20 000 объектов, падение производительности составляет от 2,2 до 2,8 раз. Почему так происходит? Одной из причин может быть то, что с ростом числа объектов увеличивается количество взаимных столкновений камней (вероятность столкновения повышается с ростом числа объектов в одном и том же объеме), поэтому приходится чаще пересчитывать новые траектории движения, ну и детектировать сами столкновения. Простая арифметика для оценки подобных вещей малоприменима, а для получения более-менее точных оценок надо знать принцип расчета, применяемый "ускорителем". Но, как уже отмечалось в примечаниях, мы не будем строить подобные догадки, а примем полученные результаты как они есть. Что касается сравнения результатов "ускорения физики" на CPU и GPU, то разница - в разы. Мы не знаем, оптимизирована ли "демка" под двухъядерные процессоры, каким является Intel Core Duo X6800, в любом случае, превосходство видеокарт в качестве специализированного ускорителя впечатляет (даже если результаты линии СPU умножить на два). ВыводВидеокарты в качестве "ускорителей физики" способны с хорошей скоростью обсчитывать совместное движение 10 000 относительно несложных объектов (не путайте с количеством полигонов). Много это или мало? Для типичной игровой сцены - очень много. Ведь в большинстве игр количество предметов окружающей обстановки, с которыми игрок может взаимодействовать, редко превышает сотню, не говоря уже о тысяче. Да и детальный просчет траектории движения нужен далеко не для всех них. Конечно, не все объекты так просты как эти "камешки", но запас по производительности изрядный, так что есть из чего выбирать - огромное количество простых объектов, среднее количество - сложных, или смесь этих случаев. Идем дальше. Тест №2. Поддон.Демо-сцена выглядит в виде поддона с неровным дном, в котором находятся предметы нескольких разных типов. Это конусы с основанием, похожие на фигуры временной дорожной разметки, кости и черепа, а также обрубки деревьев.(Ужас! Это не демо-сцена, а просто какой-то "взрыв у придорожного кафе"). Кстати, обратите внимание, демка построена на движке Havok FX. ![]() На скриншоте изображена сцена в состоянии "покоя". Покой в кавычках, потому что даже лежа на дне поддона все объекты мелко подрагивают, меняя свое положение и сталкиваясь друг с другом. Как видите, второй тест имеет много общего с первым тестом - неровная поверхность дна/склона, большое количество мелких объектов, объекты разных видов. Но есть и существенные отличия - все объекты имеют довольно сложную форму, при этом границы объектов, по которым проводится обнаружение столкновений, очень близко совпадают с видимыми границами объектов. Типы объектов существенно сложнее, чем в первом тесте, видимо поэтому количество объектов заметно меньше - 1505 штук. Возможности теста позволяют привести объекты в движение, при этом они закручиваются вокруг синей стрелочки (чей кончик виден в середине кучи). Саму стрелку, являющейся "центром вращения тайфуна" также можно двигать в пределах поддона, тем самым усложняя задачу для физического ускорителя. Что касается скорости, то разброс значений FPS при движении объектов конечно больше, хотя "на глаз" среднее значение примерно одинаково со значением в "покое". Встроенные возможности по вычислению среднего FPS в тесте отсутствуют, поэтому мы решили излишне не усложнять задачу и сняли результаты в состоянии "покоя". Вот что получилось в итоге: "физический" ускоритель Radeon X1900XTX - 80 FPS Как видите, несмотря на существенные отличия от первого теста, соотношения скорости, показываемые разными ускорителями "физики", очень похожи на те, что мы видели в первом тесте. ВыводДля отображения с нормальной скоростью сцены со значительно усложненными объектами приходится уменьшать их количество. В нашем случае - на порядок. Тем не менее, даже полторы тысячи "реальных физических" объектов - это очень много для любой современной игры. Тест №3. Шахматные фигуры.Демо-сцена в этом тесте на первый взгляд проста - стол с шахматной доской и фигурами на ней. Что интересно, при запуске теста начальное число объектов, по сведениям из строки состояния, равно 66 штук. Из них 64 - шахматные фигуры, которые стоят на каждой клетке доски, а две оставшиеся - стол и книга. ![]() Как и в предыдущем тесте, шахматные фигуры "подрагивают", как говорится - покой нам только снится. Если в первом тесте большое внимание уделялось расчету траектории движения объектов, то в этом тесте акцент делается на детектировании столкновений, а как таковой расчет траекторий практически отсутствует из-за относительной статичности сцены. ![]() Интересное начинается дальше. По нажатию кнопки можно высыпать на стол порцию фигур. Количество объектов в сцене при этом, естественно, увеличивается, а значение FPS - падает. Поскольку "порции" фигур сравнительно небольшие, по 640 штук, можно построить подробный график зависимости FPS от числа фигур в сцене. Что мы и сделали. ![]() При минимальном количестве объектов значения FPS для обоих радеонов равны. Скорее всего, производительность упирается в возможности основного видеоускорителя, или же ограничивается другими факторами (например - частотой взаимодействия основного и "физического" ускорителей, но это лишь догадки). А вот CPU неплохо показывает себя в начале теста. Впрочем, первая же порция шахматных фигурок быстро расставляет все по местам. Скорости CPU уже недостаточно, чтобы показать минимально приемлемые 30 кадров/сек. Radeon X1600XT тоже теряет в скорости практически вдвое, но затем производительность падает уже не так сильно. Вообще, данный тест создает более серьезную нагрузку на "физические" ускорители, и оказывается довольно "тяжелым" даже X1900XTX. ВыводПо прикидкам получается, что даже такой мощный центральный процессор как Core Duo X6800 способен просчитывать "физику" с нормальной скоростью лишь для около 500 объектов. Хотя в абсолютном выражении это очень прилично для типичной игры, данная оценка является скорее верхней границей возможностей современных CPU по обработке "физики", ведь вычислительная мощность большинства десктопных процессоров гораздо ниже. Для видеокарт в роли ускорителей "физики" типичное значение объектов, которое они могут просчитать с нормальной скоростью, по прежнему остается на уровне примерно 1000-1500 шт. Тест №4. "Повелитель мусора"Да простят меня сотрудники и фанаты ATI за такую вольность в интерпретации названия этого теста. На самом деле он называется Dockland, то есть - "территория дока". ![]() Действительно, на док похоже, только вот корабликов не видно, а мусора очень много. Пустые бутылки, жестяные банки и какие-то коробки, общим количеством 4080 штук, то есть объектов. Но у нас есть воин коммунальной службы, который знает, что со всем этим беспорядком делать. Наш герой, чью фигурку вы видите на скриншоте, способен притягивать мусор. ![]() После чего становится похожим на пирамиду или елочку и полностью скрывается под притянутым мусором. На этом скриншоте вы его уже не видите. Если говорить серьезно, то эта демка тоже построена на движке Havok FX и гораздо больше напоминает игровую сцену, чем рассмотренные нами ранее "синтетические" тесты. Человечек может свободно передвигаться по территории дока как в любой обычной игре с видом от третьего лица. "Сбор мусора" и его разбрасывание происходит по нажатию "горячей клавиши". Интересная особенность данного теста - возможность включения "ветра" (который с моря дул, видимо). В отсутствии "мусорщика" под воздействием ветра разбросанные объекты неспешно дрейфуют. Если же к делу подключается мусорщик, то объекты собираются вокруг него как и прежде, но траектории движения уже учитывают влияние ветра. Впрочем, что объяснять, лучше посмотрите видеоролик - garbage.avi (11 Мб, 640х480, DivX). Собственно, осталось привести цифры, которые показывают наши "ускорители": "физический" ускоритель Radeon X1900XTX - 55 FPS ВыводКак и прежде, соотношение сил примерно сохраняется. Что касается большого количества объектов, присутствия внешних сил в виде "ветра" и одновременно высоких значений FPS, то это может как объясняться примитивностью объектов (цилиндр, параллелепипед), так и использованными алгоритмами расчета траекторий и столкновений. Впрочем, данные упрощения не спасают CPU в любом случае. Тест №5. Реальный дым как множество точечных объектов.Ну и наконец последний тест. Суть теста в демонстрации расчета "физики" для системы точечных частиц. Главное свойство таких частиц - бесконечная малая масса и пренебрежимо малые размеры. То есть, расчет "физики" сводится к чистой кинематике движения идеальной точки (траекторий), а столкновениями между частицами можно пренебречь. ![]() Место действия то же, что и в предыдущем тесте - территория дока. Только в этот раз наш герой не гоняет пустые банки, а весело бегает по решеткам, из которых валит самый настоящий пар, припевая - "я тучи разгоню руками". В данном тесте выполняется расчет для 2020 частиц. Даже из скриншота видно, что дым выглядит очень натурально. Но никакой скриншот не может передать всю красоту в ее динамичности. Чего стоят отдельные клубы (даже скорее - "клубки") пара, отрывающиеся от главного столба, когда наш герой рассекает поток своим торсом. Или закручивающийся вихрь пара, когда фигура человечка вращается стоя посередине решетки. Лучше взгляните на видеоролик - smoke.avi (13,5 Мб, 640х480б DivX) При съемке ролика мы специально переключали режим между обычным отображением и каркасным, чтобы показать, что дым сделан честно. "Каркас" частицы есть сама частица, поэтому вид клубящегося пара никак не должен изменяться. Что касается цифр, то вот они: "физический" ускоритель Radeon X1900XTX - 100 FPS ВыводРеализация "честного" пара, дыма, тумана, способна поднять визуализацию игр на новый качественный уровень. Снятие с ускорителя "физики" такой части нагрузки, как детектирование столкновений, позволяет с высокой скоростью производить расчеты системы мелких частиц и, по всей видимости, показанные 2000 частиц далеко не предел. ЗаключениеЗнакомство с живыми тестами оставляет самое приятное впечатление и просто заставляет мечтать о тех временах, когда мы наконец увидим настоящую "физику" в играх. Современные видеокарты ATI даже среднего класса вполне способны взять на себя роль "физического" ускорителя и демонстрируют приличную скорость при работе с впечатляющим числом объектов, подчиняющимся "реальным" законам физики. Осталось дело за малым. Надеемся, что разработчики игр сумеют порадовать нас не только красивыми отвлеченными визуализациями, но и умело "вписать" открывающиеся возможности в общую канву геймплея.
Страница сайта http://www.silicontaiga.ru
Оригинал находится по адресу http://www.silicontaiga.ru/home.asp?artId=5660 |