![]() |
ATI Physics-тесты
В июне месяце, во время тайваньской компьютерной выставки Computex, компания ATI демонстрировала фирменную систему расчета физики, использующую в качестве "физического ускорителя" видеокарту Radeon X1900XTX. Тогда мы рассмотрели базовую концепцию технологии ATI Physics и теоретические предпосылки для использования видеокарт в качестве ускорителя физических расчетов. Тестовый стенд ![]() На предоставленной нам системе использовалась сугубо технологическая версия видео-драйверов. По словам представителей ATI это даже не бета-версия, а "альфа". Поэтому, чтобы не вносить путаницу, мы не будем приводить номер версии драйверов, поскольку свежие драйверы ATI Catalyst наверняка получат более высокий порядковый номер версии, и у кого-нибудь может возникнуть ощущение, что они будут "включать в себя" и поддержку ATI Physics, а это не обязательно так. Предварительные замечания Тест №1. Падающие камни. Один взгляд лучше, чем сто слов. Предлагаем вашему вниманию видеоролик 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 умножить на два). Вывод Идем дальше. Тест №2. Поддон. Кстати, обратите внимание, демка построена на движке Havok FX. ![]() На скриншоте изображена сцена в состоянии "покоя". Покой в кавычках, потому что даже лежа на дне поддона все объекты мелко подрагивают, меняя свое положение и сталкиваясь друг с другом. Как видите, второй тест имеет много общего с первым тестом - неровная поверхность дна/склона, большое количество мелких объектов, объекты разных видов. Но есть и существенные отличия - все объекты имеют довольно сложную форму, при этом границы объектов, по которым проводится обнаружение столкновений, очень близко совпадают с видимыми границами объектов. Типы объектов существенно сложнее, чем в первом тесте, видимо поэтому количество объектов заметно меньше - 1505 штук. Возможности теста позволяют привести объекты в движение, при этом они закручиваются вокруг синей стрелочки (чей кончик виден в середине кучи). Саму стрелку, являющейся "центром вращения тайфуна" также можно двигать в пределах поддона, тем самым усложняя задачу для физического ускорителя. Что касается скорости, то разброс значений FPS при движении объектов конечно больше, хотя "на глаз" среднее значение примерно одинаково со значением в "покое". Встроенные возможности по вычислению среднего FPS в тесте отсутствуют, поэтому мы решили излишне не усложнять задачу и сняли результаты в состоянии "покоя". Вот что получилось в итоге: "физический" ускоритель Radeon X1900XTX - 80 FPS Как видите, несмотря на существенные отличия от первого теста, соотношения скорости, показываемые разными ускорителями "физики", очень похожи на те, что мы видели в первом тесте. Вывод Тест №3. Шахматные фигуры. ![]() Как и в предыдущем тесте, шахматные фигуры "подрагивают", как говорится - покой нам только снится. Если в первом тесте большое внимание уделялось расчету траектории движения объектов, то в этом тесте акцент делается на детектировании столкновений, а как таковой расчет траекторий практически отсутствует из-за относительной статичности сцены. ![]() Интересное начинается дальше. По нажатию кнопки можно высыпать на стол порцию фигур. Количество объектов в сцене при этом, естественно, увеличивается, а значение FPS - падает. Поскольку "порции" фигур сравнительно небольшие, по 640 штук, можно построить подробный график зависимости FPS от числа фигур в сцене. Что мы и сделали. ![]() При минимальном количестве объектов значения FPS для обоих радеонов равны. Скорее всего, производительность упирается в возможности основного видеоускорителя, или же ограничивается другими факторами (например - частотой взаимодействия основного и "физического" ускорителей, но это лишь догадки). А вот CPU неплохо показывает себя в начале теста. Впрочем, первая же порция шахматных фигурок быстро расставляет все по местам. Скорости CPU уже недостаточно, чтобы показать минимально приемлемые 30 кадров/сек. Radeon X1600XT тоже теряет в скорости практически вдвое, но затем производительность падает уже не так сильно. Вообще, данный тест создает более серьезную нагрузку на "физические" ускорители, и оказывается довольно "тяжелым" даже X1900XTX. Вывод Для видеокарт в роли ускорителей "физики" типичное значение объектов, которое они могут просчитать с нормальной скоростью, по прежнему остается на уровне примерно 1000-1500 шт. Тест №4. "Повелитель мусора" Действительно, на док похоже, только вот корабликов не видно, а мусора очень много. Пустые бутылки, жестяные банки и какие-то коробки, общим количеством 4080 штук, то есть объектов. Но у нас есть воин коммунальной службы, который знает, что со всем этим беспорядком делать. Наш герой, чью фигурку вы видите на скриншоте, способен притягивать мусор. ![]() После чего становится похожим на пирамиду или елочку и полностью скрывается под притянутым мусором. На этом скриншоте вы его уже не видите. Если говорить серьезно, то эта демка тоже построена на движке Havok FX и гораздо больше напоминает игровую сцену, чем рассмотренные нами ранее "синтетические" тесты. Человечек может свободно передвигаться по территории дока как в любой обычной игре с видом от третьего лица. "Сбор мусора" и его разбрасывание происходит по нажатию "горячей клавиши". Интересная особенность данного теста - возможность включения "ветра" (который с моря дул, видимо). В отсутствии "мусорщика" под воздействием ветра разбросанные объекты неспешно дрейфуют. Если же к делу подключается мусорщик, то объекты собираются вокруг него как и прежде, но траектории движения уже учитывают влияние ветра. Впрочем, что объяснять, лучше посмотрите видеоролик - garbage.avi (11 Мб, 640х480, DivX). Собственно, осталось привести цифры, которые показывают наши "ускорители": "физический" ускоритель Radeon X1900XTX - 55 FPS Вывод Тест №5. Реальный дым как множество точечных объектов. ![]() Место действия то же, что и в предыдущем тесте - территория дока. Только в этот раз наш герой не гоняет пустые банки, а весело бегает по решеткам, из которых валит самый настоящий пар, припевая - "я тучи разгоню руками". В данном тесте выполняется расчет для 2020 частиц. Даже из скриншота видно, что дым выглядит очень натурально. Но никакой скриншот не может передать всю красоту в ее динамичности. Чего стоят отдельные клубы (даже скорее - "клубки") пара, отрывающиеся от главного столба, когда наш герой рассекает поток своим торсом. Или закручивающийся вихрь пара, когда фигура человечка вращается стоя посередине решетки. Лучше взгляните на видеоролик - smoke.avi (13,5 Мб, 640х480б DivX) При съемке ролика мы специально переключали режим между обычным отображением и каркасным, чтобы показать, что дым сделан честно. "Каркас" частицы есть сама частица, поэтому вид клубящегося пара никак не должен изменяться. Что касается цифр, то вот они: "физический" ускоритель Radeon X1900XTX - 100 FPS Вывод Заключение Современные видеокарты ATI даже среднего класса вполне способны взять на себя роль "физического" ускорителя и демонстрируют приличную скорость при работе с впечатляющим числом объектов, подчиняющимся "реальным" законам физики. Осталось дело за малым. Надеемся, что разработчики игр сумеют порадовать нас не только красивыми отвлеченными визуализациями, но и умело "вписать" открывающиеся возможности в общую канву геймплея.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=5659 |