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 |