...модил DLSS в игру, которая совсем-совсем этого не хотела...
Твист: я его запустил.
Твист покрупнее: это ничего не изменило.
Всё началось как положено — в 2 ночи, глядя на счётчик кадров, с мыслью «моей видеокарте скучно. ИИ-апскейлер всё исправит».
Круто. Просто. Что могло пойти не так?
Всё. Всё пошло не так.
Во-первых, мод-лоадер игры оказался пустой функцией. return; в плаще. «Вставляйте моды сюда», — гласил комментарий. И тишина. Пришлось протаскивать код через чёрный ход, до того как игра проснулась.
Потом был Неймспейс. Одна не та буква — одна(!!11!) — и вся система патчинга делает вид, что тебя не существует. Я читал лог-файл час, прежде чем заметил. Как искать опечатку в телефонной книге. С завязанными глазами.
В день, когда апскейлер наконец запустился, экран погас полностью. Не «слегка сломалось». Чёрный. «Я только что угробил монитор?» — чёрный. Причина? Один пропущенный флаг текстуры. Один boolean. Это стоило мне вечера и большей части достоинства.
Потом — триумф. Настоящий апскейл, кадр за кадром. Я видел, как это работает. Я был сертифицированным гением. Даже открыл бутылку пива. Счастье. Секунд на десять.
Потому что счётчик FPS не шелохнулся. Вообще. Я опустил разрешение до одной девятой от нативного — рендерил почтовую марку — счётчик даже не моргнул.
Тут дошло: GPU никогда не был проблемой. Он стоял там, мурлыкал, едва прогрелся, пока CPU делал всю тяжёлую работу. Движок просто… CPU-bound. Ему плевать, насколько умный у меня апскейлер.
Я собрал полную, работающую интеграцию DLSS — захват, апскейл, презентация, весь пайплайн — и это не меняет ровным счётом ничего. Я оптимизировал не ту половину компьютера. 😅
Настоящий урок?
«Скорее всего, это CPU» — самое скучное и самое правдивое предложение в работе с производительностью. Прежде чем тратить дни на геройство, потрать две минуты на вопрос: а какое узкое место ты вообще атакуешь? Самое хитрое решение в мире не поможет компоненту, который не является узким местом.
Теперь я знаю об этом рендерере больше, чем допустимо с медицинской точки зрения, у меня появилось глубокое уважение к профилированию перед сборкой, и моё достоинство всё ещё где-то там — последний раз видели в лог-файле, потерянное.
Вперёд, к следующему приключению по улучшению игр, которые я люблю. Лучше. (Лучше?!) 🚀
Моддинг игр, веб-производительность или full-stack приложение — я помогу найти правильное решение. Бесплатная консультация.