Влияние тяжёлых и лёгких ассетов Source на производительность

Разработка игр | |

cheap-vs-expensive-assets

Новый вопрос?

Успешно раскрыв древнюю тайну противостояния func_detail и деформаций в предыдущей статье, я получил известия от Верховного Совета по оптимизации Source. Оказывается, есть ещё одна загадка, требующая решения, так что передо мной встал новый вопрос.

Как тяжёлые и лёгкие ассеты влияют на частоту кадров? Есть ли между ними существенная разница в плане фреймрейта (собственно, это два вопроса, но мы это опустим)?

Методика

Статья и на этот раз будет небольшой, но ёмкой; меньше слов, больше цифр и скриншотов. Систематический подход тоже не претерпел особых изменений: у нас будет две одинаковых тестовых карты, только одна с лёгкими версиями ассетов, а другая с тяжёлыми. Сами ассеты будут одинаковыми, как и их расположение.

Новые ассеты из переработанной de_nuke в CSGO отлично нам подойдут, поскольку большую их часть Valve выполнила в лёгком и тяжёлом вариантах. Тяжёлые версии пропов насчитывают больше полигонов. У тяжёлых текстур имеются карты нормалей (вплоть до двух), карты отражений, продвинутые отражения, карты детализации и в ряде случаев затенение по Фонгу. Их лёгкие версии – это просто диффузные текстуры, иногда с картой детализации.

Я замерю fps на каждой карте, и выведу заключение, которое, будем надеяться, удовлетворит Верховный Совет.

Тестирование

Сначала будем тестировать лёгкие ассеты. Карта у нас простая, состоит из четырёх стен, пола и расставленных тут и там пропов и блоков с текстурами. Текстуры, как правило, бетонные, пропы представляют собой ящики, машины, трубы, провода, двери и вентили.

assets-test-cheap

На этой карте мы получаем 330 fps. Вторая карта будет идентичной, но лёгкие версии пропов и текстур мы заменим тяжёлыми.

assets-test-expensive

Здесь у нас 286 fps, что ж, интересненько. Ну всё, пойду свяжусь с Советом, передам им данные.

Постойте, не торопитесь. Мы с вами люди науки, и вы же понимаете, что одной карты для закономерных выводов недостаточно.

Далее мы протестируем нашу карту, увеличив её вчетверо, как в размерах, так и в количестве содержимого (Нобелевка уже ждёт меня). Мы скопируем имеющиеся у нас пропы и браши с текстурами и размножим их на увеличенной площади. Начнём с лёгкой версии тестовой карты 4x (будем называть её так).

assets-test-cheap4x

Частота кадров просела на 279 с 330, поскольку движку приходится отрисовывать больше содержимого. Но главное для нас – сравнить этот показатель с тяжёлой версией. Как вы уже поняли, мы снова берём вчетверо увеличенную версию теперь уже тяжёлой карты.

assets-test-expensive4x

229 fps. Производительность упала приблизительно соразмерно разнице в лёгких версиях. Для наглядности соберём данные в таблицу:

assets-test-fps

Как видите, фреймрейт проседает на 44 fps в простых версиях и на 50 fps в картах 4x.

Из таблицы мы можем сделать два вывода:

Разница между лёгкими и тяжёлыми версиями ассетов существенна (44/50 fps), то же касается и разницы между простыми и четырёхкратными версиями (51/57 fps) с добавлением большого количества потенциально видимого контента.

Наши результаты могут пролить свет на заметную разницу в производительности обновлённой de_nuke и стандартных карт CSGO. Большое количество деталей, видимых с одной позиции усугубляется тяжёлыми ассетами в игровой области (в дополнение к открытому скайбоксу).

В качестве бонуса прилагаю время компиляции тестируемых карт, чтобы вы смогли оценить разницу в лёгких и тяжёлых ассетах с этой точки зрения, особенно в vrad, более зависимом от количества полигонов и сложности текстур.

assets-test-compile

Вы прекрасно видите, насколько время компиляции vrad увеличивается на тяжёлых и на увеличенных версиях карт.

Ну а теперь прошу меня извинить, нужно сделать один звонок. Старейшина больше не может ждать.

Итоги

Тяжёлые ассеты делают карту более приятной глазу, что необходимо в сегодняшних реалиях непрерывно совершенствующейся графики. Низкополигональные модели и простые текстуры невыгодно скажутся на картинке. Однако, тяжёлые ассеты сильнее нагружают рендерный движок и снижают производительность на карте.

Они необходимы, если вы хотите, чтобы карта блистала (в прямом и переносном смысле), главное знать меру, обращаясь к лёгким ассетам при оформлении неигровых областей и мест, которые игрок не увидит настолько близко, чтобы заметить разницу.

Автор will2k, MapCore: Source FPS Cost of Cheap and Expensive Assets.

Изучаем Source

Владимир FrostBite Хохлов frostbite@progamer.ru

Поделиться

Обсудить