Влияние тяжёлых и лёгких ассетов Source на производительность
Новый вопрос?
Успешно раскрыв древнюю тайну противостояния func_detail и деформаций в предыдущей статье, я получил известия от Верховного Совета по оптимизации Source. Оказывается, есть ещё одна загадка, требующая решения, так что передо мной встал новый вопрос.
Как тяжёлые и лёгкие ассеты влияют на частоту кадров? Есть ли между ними существенная разница в плане фреймрейта (собственно, это два вопроса, но мы это опустим)?
Методика
Статья и на этот раз будет небольшой, но ёмкой; меньше слов, больше цифр и скриншотов. Систематический подход тоже не претерпел особых изменений: у нас будет две одинаковых тестовых карты, только одна с лёгкими версиями ассетов, а другая с тяжёлыми. Сами ассеты будут одинаковыми, как и их расположение.
Новые ассеты из переработанной de_nuke в CSGO отлично нам подойдут, поскольку большую их часть Valve выполнила в лёгком и тяжёлом вариантах. Тяжёлые версии пропов насчитывают больше полигонов. У тяжёлых текстур имеются карты нормалей (вплоть до двух), карты отражений, продвинутые отражения, карты детализации и в ряде случаев затенение по Фонгу. Их лёгкие версии – это просто диффузные текстуры, иногда с картой детализации.
Я замерю fps на каждой карте, и выведу заключение, которое, будем надеяться, удовлетворит Верховный Совет.
Тестирование
Сначала будем тестировать лёгкие ассеты. Карта у нас простая, состоит из четырёх стен, пола и расставленных тут и там пропов и блоков с текстурами. Текстуры, как правило, бетонные, пропы представляют собой ящики, машины, трубы, провода, двери и вентили.
На этой карте мы получаем 330 fps. Вторая карта будет идентичной, но лёгкие версии пропов и текстур мы заменим тяжёлыми.
Здесь у нас 286 fps, что ж, интересненько. Ну всё, пойду свяжусь с Советом, передам им данные.
Постойте, не торопитесь. Мы с вами люди науки, и вы же понимаете, что одной карты для закономерных выводов недостаточно.
Далее мы протестируем нашу карту, увеличив её вчетверо, как в размерах, так и в количестве содержимого (Нобелевка уже ждёт меня). Мы скопируем имеющиеся у нас пропы и браши с текстурами и размножим их на увеличенной площади. Начнём с лёгкой версии тестовой карты 4x (будем называть её так).
Частота кадров просела на 279 с 330, поскольку движку приходится отрисовывать больше содержимого. Но главное для нас – сравнить этот показатель с тяжёлой версией. Как вы уже поняли, мы снова берём вчетверо увеличенную версию теперь уже тяжёлой карты.
229 fps. Производительнос
Как видите, фреймрейт проседает на 44 fps в простых версиях и на 50 fps в картах 4x.
Из таблицы мы можем сделать два вывода:
Разница между лёгкими и тяжёлыми версиями ассетов существенна (44/50 fps), то же касается и разницы между простыми и четырёхкратными версиями (51/57 fps) с добавлением большого количества потенциально видимого контента.
Наши результаты могут пролить свет на заметную разницу в производительнос
В качестве бонуса прилагаю время компиляции тестируемых карт, чтобы вы смогли оценить разницу в лёгких и тяжёлых ассетах с этой точки зрения, особенно в vrad, более зависимом от количества полигонов и сложности текстур.
Вы прекрасно видите, насколько время компиляции vrad увеличивается на тяжёлых и на увеличенных версиях карт.
Ну а теперь прошу меня извинить, нужно сделать один звонок. Старейшина больше не может ждать.
Итоги
Тяжёлые ассеты делают карту более приятной глазу, что необходимо в сегодняшних реалиях непрерывно совершенствующей
Они необходимы, если вы хотите, чтобы карта блистала (в прямом и переносном смысле), главное знать меру, обращаясь к лёгким ассетам при оформлении неигровых областей и мест, которые игрок не увидит настолько близко, чтобы заметить разницу.
Автор will2k, MapCore: Source FPS Cost of Cheap and Expensive Assets.
Изучаем Source
- Играем в Source SDK, руководство по маппингу для начинающих
- Играем в Source SDK, триггеры
- Играем в Source SDK, освещение и отражение
- Играем в Source SDK, как создавать текстуры
- Деформации против func_detail – влияние на fps в Source
- Гайд по Counter-Strike: Global Offensive. Создание профессиональных карт
- Контр-картография: CSGO возрождает de_cbble