![]() |
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://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6156 |