Подробный гайд: Dynamic Resolution Scaling (DRS)

Подробный гайд по Dynamic Resolution Scaling: как работает динамическое разрешение, настройка, плюсы, минусы и реализация в играх.

2026.08.05                  


Подробный гайд: Dynamic Resolution Scaling (DRS)Подробный гайд: Dynamic Resolution Scaling (DRS) Dynamic Resolution Scaling, или динамическое разрешение рендеринга, — это технология автоматического изменения внутреннего разрешения изображения в реальном времени ради стабильной частоты кадров.

Простыми словами: игра или приложение может рендерить картинку не всегда в одном и том же разрешении. Если сцена тяжёлая — разрешение временно снижается. Если сцена лёгкая — разрешение повышается. Главная цель — удержать стабильный FPS без фиксированного снижения качества.


1. Зачем нужен Dynamic Resolution Scaling

В современных играх и 3D-приложениях нагрузка на GPU сильно меняется от кадра к кадру.



Например:

  • игрок смотрит в стену — нагрузка низкая;
  • игрок смотрит на город, взрывы, частицы, толпу — нагрузка высокая;
  • входит в тёмное помещение — нагрузка падает;
  • начинается битва с эффектами — нагрузка резко растёт.

Если разрешение фиксировано, например 2560×1440, GPU может не справляться в сложных сценах. Из-за этого появляются просадки FPS и рывки.


DRS решает эту проблему: вместо того чтобы всегда рендерить в одном разрешении, система динамически меняет внутреннее разрешение рендеринга.


2. Как это работает на базовом уровне

Обычно есть три величины:

1. Разрешение вывода

Разрешение монитора или окна, например 1920×1080 или 2560×1440.

2. Внутреннее разрешение рендеринга

Разрешение, в котором реально рендерится 3D-сцена.

3. Масштаб разрешения

Коэффициент, например 70%, 85%, 100%.


Пример:

Монитор:        2560×1440
Масштаб DRS:    80%
Рендеринг:      примерно 2048×1152
Вывод:          изображение масштабируется до 2560×1440

Игрок всё равно видит картинку в разрешении монитора, но 3D-сцена рендерится в меньшем разрешении.


3. Главная цель DRS

Основная цель динамического разрешения — стабильный FPS.

Обычно задаётся целевая частота кадров:

Цель: 60 FPS
Целевое время кадра: 16.7 мс

Если кадр рендерится дольше 16.7 мс, DRS снижает разрешение.


Если кадр рендерится быстрее 16.7 мс, DRS может повысить разрешение обратно.


4. Основные компоненты системы DRS

Хорошая реализация DRS состоит не только из простого уменьшения разрешения. Обычно используются следующие элементы.


4.1. Мониторинг времени кадра

Система измеряет время рендеринга кадра.

Например:

Кадр 1: 14.2 мс
Кадр 2: 15.1 мс
Кадр 3: 18.4 мс
Кадр 4: 19.6 мс

Если несколько кадров подряд превышают целевое время, система понимает, что нагрузка высокая.


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


4.2. Целевое время кадра

Обычно DRS настраивается под конкретный FPS:

Целевой FPS Целевое время кадра
30 FPS 33.3 мс
40 FPS 25 мс
60 FPS 16.7 мс
90 FPS 11.1 мс
120 FPS 8.3 мс

Для VR целевое время особенно важно, потому что даже небольшие просадки могут вызывать дискомфорт.


4.3. Минимальное и максимальное разрешение

DRS почти всегда имеет ограничения.

Например:

Минимальный масштаб: 60%
Максимальный масштаб: 100%

Это нужно, чтобы разрешение не упало слишком низко и изображение не стало чрезмерно мыльным или пиксельным.




Пример для 2560×1440:

100% = 2560×1440
80%  = 2048×1152
60%  = 1536×864

4.4. Скорость изменения разрешения

Хороший DRS не меняет разрешение мгновенно и агрессивно. Слишком быстрые изменения заметны и могут вызывать нестабильность.

Поэтому используются параметры:

  • скорость понижения;
  • скорость повышения;
  • задержка реакции;
  • гистерезис;
  • минимальный интервал между изменениями.

Пример:

Понижение: быстро
Повышение: медленно
Проверка стабильности: каждые 100–200 мс

Часто понижение делают быстрее, чем повышение. Это нужно, чтобы система быстро реагировала на просадки FPS, но не дёргала разрешение вверх-вниз.


4.5. Гистерезис

Гистерезис — это защита от постоянных колебаний разрешения.

Без гистерезиса может возникнуть ситуация:

FPS чуть выше цели → разрешение повысилось
FPS чуть ниже цели → разрешение понизилось
FPS снова чуть выше цели → разрешение повысилось
FPS снова чуть ниже цели → разрешение понизилось

В итоге разрешение постоянно скачет, а изображение может мерцать.


Гистерезис добавляет запас:

Повышать разрешение, если кадр быстрее цели на 10%
Понижать разрешение, если кадр медленнее цели на 5%

Пример:

Цель: 16.7 мс

Понижать, если среднее время кадра выше 17.5 мс
Повышать, если среднее время кадра ниже 15.0 мс

5. Какие элементы изображения обычно рендерятся в динамическом разрешении

DRS чаще всего применяется не ко всему изображению целиком, а к отдельным элементам.

Обычно в динамическом разрешении рендерятся:

  • 3D-геометрия;
  • освещение;
  • тени;
  • пост-эффекты;
  • прозрачные эффекты;
  • частицы;
  • отражения.

Но отдельно могут рендериться:

  • интерфейс;
  • HUD;
  • текст;
  • прицел;
  • субтитры;
  • меню;
  • курсор.

Это важно:

Если интерфейс тоже рендерить в пониженном разрешении, текст и HUD станут мыльными. Поэтому хороший DRS часто применяет масштаб только к 3D-сцене, а UI выводит в нативном разрешении.


6. Какие бывают виды масштабирования разрешения

DRS — это не одна конкретная технология, а общий подход. Внутри него могут использоваться разные методы масштабирования.


6.1. Простое билинейное или бикубическое масштабирование

Самый простой вариант. Сцена рендерится в меньшем разрешении, затем растягивается до разрешения экрана.

Плюсы:

  • очень низкая стоимость;
  • легко реализовать;
  • хорошо работает в динамике.

Минусы:

  • изображение может быть мыльным;
  • теряется детализация;
  • могут быть видны артефакты на тонких линиях.

6.2. Масштабирование с резкостью

После апскейла применяется sharpening-фильтр.



Плюсы:

  • изображение выглядит чётче;
  • частично компенсируется мыльность;
  • низкая стоимость.

Минусы:

  • при избытке резкости появляются ореолы;
  • может подчёркивать шум;
  • может ухудшать качество при TAA.

6.3. Temporal Upsampling / Temporal Reconstruction

Использование данных из предыдущих кадров для восстановления изображения.

Такой подход встречается в:

  • TAAU;
  • Unreal Engine Temporal Upsampling;
  • некоторых консольных решениях;
  • собственных движковых технологиях.

Плюсы:

  • лучшее качество, чем простой апскейл;
  • лучшее сохранение деталей;
  • стабильная картинка при движении.

Минусы:

  • требует качественных motion vectors;
  • могут быть артефакты при быстром движении;
  • могут появляться ghosting и shimmering.

6.4. AI-апскейлеры и современные технологии

DRS может сочетаться с:

  • NVIDIA DLSS;
  • AMD FSR;
  • Intel XeSS;
  • консольными апскейлерами;
  • собственными движковыми решениями. В таких случаях DRS может менять не только внутренний render resolution, но и входной масштаб для апскейлера.

Пример:

Монитор: 3840×2160
DLSS Quality: вход примерно 2560×1440
DRS дополнительно снижает вход DLSS до 70–80%
Итоговый рендер может быть ниже 2560×1440

В современных играх часто используется связка:

DRS + TAA + Upscaler + Sharpening

7. DRS и апскейлинг: в чём разница

Иногда путают два понятия:

  • Dynamic Resolution Scaling
  • Upscaling Но это не одно и то же.

Upscaling

Upscaling — это процесс увеличения изображения.

Например:

Рендер: 1920×1080
Вывод: 3840×2160

Изображение увеличивается и может улучшаться алгоритмами.


Dynamic Resolution Scaling

DRS — это логика автоматического изменения разрешения.

Например:

Сейчас рендер: 2560×1440
Через секунду: 2048×1152
Ещё через секунду: 2304×1296

DRS решает, когда и насколько менять разрешение. Upscaler решает, как увеличить изображение. То есть DRS может использовать апскейлинг как часть конвейера.


8. Преимущества Dynamic Resolution Scaling

1. Более стабильный FPS

Главное преимущество. Вместо резких просадок система плавно снижает нагрузку.


2. Лучший опыт по сравнению с фиксированным низким разрешением

Если всегда рендерить в низком разрешении, картинка будет хуже даже в простых сценах. DRS снижает разрешение только при необходимости.


3. Лучшее использование ресурсов GPU

В лёгких сценах разрешение повышается, и GPU используется эффективнее.


4. Подходит для консолей

На консолях фиксированное железо, и DRS помогает удерживать целевой FPS в разных играх.


5. Может работать вместе с апскейлерами

DRS хорошо сочетается с TAA, DLSS, FSR, XeSS и другими методами.


9. Недостатки и риски

1. Мыльность

При слишком низком разрешении изображение теряет чёткость.


2. Нестабильность разрешения

Если DRS слишком агрессивный, разрешение может постоянно меняться, что заметно глазу.


3. Артефакты temporal-методов

Могут возникать:

  • ghosting;
  • shimmering;
  • мерцание тонких деталей;
  • артефакты на прозрачных эффектах;
  • проблемы с motion vectors.

4. Проблемы с UI

Если интерфейс масштабируется вместе со сценой, текст становится нечётким.


5. Сложность настройки

Хороший DRS требует тонкой настройки:

  • порогов;
  • скорости реакции;
  • минимального масштаба;
  • гистерезиса;
  • взаимодействия с пост-эффектами.

6. Конфликт с frame pacing

Если DRS меняет разрешение слишком часто, это может влиять на стабильность времени кадра.


10. Типичные режимы DRS

На практике DRS может работать в нескольких режимах.


10.1. Консервативный режим

Разрешение меняется редко и плавно.

Пример:

Минимальный масштаб: 80%
Максимальный масштаб: 100%
Скорость изменения: низкая
Гистерезис: высокий

Плюсы:

  • стабильное изображение;
  • меньше заметных изменений;
  • меньше артефактов.

Минусы:

  • хуже удерживает FPS в очень тяжёлых сценах.

10.2. Агрессивный режим

Разрешение меняется быстрее и в более широком диапазоне.

Пример:

Минимальный масштаб: 55%
Максимальный масштаб: 100%
Скорость изменения: высокая
Гистерезис: низкий

Плюсы:

  • лучше удерживает FPS;
  • быстрее реагирует на нагрузку.

Минусы:

  • возможны заметные скачки качества;
  • выше риск мыльности;
  • может быть нестабильная картинка.

10.3. Адаптивный режим

Комбинированный вариант: система учитывает не только FPS, но и:

  • загрузку GPU;
  • время GPU;
  • время CPU;
  • температуру;
  • энергопотребление;
  • тип сцены;
  • историю кадров. Это самый сложный, но часто лучший вариант.

11. Как DRS принимает решение

Упрощённый алгоритм может выглядеть так:

Каждый кадр:
    измерить время кадра
    обновить скользящее среднее

Если среднее время кадра выше целевого:
    уменьшить масштаб разрешения

Если среднее время кадра ниже целевого с запасом:
    увеличить масштаб разрешения

Применить минимальный и максимальный лимит
Применить ограничение скорости изменения
Применить гистерезис
Обновить render target

12. Пример простой логики

Допустим:

Целевой FPS: 60
Целевое время кадра: 16.7 мс
Минимальный масштаб: 70%
Максимальный масштаб: 100%
Шаг понижения: 5%
Шаг повышения: 2%
Гистерезис: 1 мс

Логика:

Если среднее время кадра > 17.7 мс:
    уменьшить масштаб на 5%

Если среднее время кадра < 15.7 мс:
    увеличить масштаб на 2%

Пример состояния:

Сцена 1: 14.0 мс → масштаб 100%
Сцена 2: 18.2 мс → масштаб 95%
Сцена 3: 19.0 мс → масштаб 90%
Сцена 4: 16.0 мс → масштаб 90%
Сцена 5: 14.5 мс → масштаб 92%
Сцена 6: 14.1 мс → масштаб 94%

13. Почему нельзя менять разрешение каждый кадр без ограничений

Если менять разрешение каждый кадр, система может начать «дышать»:

Кадр 1: 100%
Кадр 2: 92%
Кадр 3: 100%
Кадр 4: 93%
Кадр 5: 100%

Это плохо по нескольким причинам:

  • изображение может мерцать;
  • temporal-апскейлеры могут терять стабильность;
  • игрок замечает постоянное изменение чёткости;
  • нагрузка может стать менее предсказуемой;
  • возможна нестабильность frame pacing.

Поэтому нужны:

  • задержка;
  • усреднение;
  • гистерезис;
  • ограничение частоты изменений.

14. DRS в играх: как это обычно выглядит

Во многих играх DRS называется:

  • Dynamic Resolution;
  • Dynamic Resolution Scaling;
  • Adaptive Resolution;
  • Dynamic Render Resolution;
  • Resolution Scaling;
  • Adaptive Rendering;
  • Dynamic 4K / Dynamic 1080p.

На консолях часто указывается:

Разрешение: динамическое 4K

Это означает, что игра может рендерить не всегда в 3840×2160, а изменять внутреннее разрешение в зависимости от нагрузки.


Например:

Обычная сцена: 3840×2160
Тяжёлая сцена: 3200×1800
Очень тяжёлая сцена: 2880×1620

Потом изображение масштабируется до 4K.


15. DRS на консолях

Консоли особенно активно используют DRS, потому что у них фиксированная производительность.

Почему DRS важен на консолях

  • Нельзя просто понизить настройки графики, как на ПК.
  • Нужно удерживать целевой FPS.
  • Нужно соблюдать требования сертификации.
  • Нужно одинаково работать на разных телевизорах и мониторах.
  • Нужно учитывать режимы 30 FPS, 60 FPS, 120 FPS, VRR.

Типичные консольные сценарии

Режим качества

Цель: 30 FPS
Разрешение: выше
DRS: менее агрессивный

Режим производительности

Цель: 60 FPS
Разрешение: ниже
DRS: более активный

Режим 120 Hz

Цель: 120 FPS
Разрешение: заметно ниже
DRS: очень важен

16. DRS на ПК

На ПК DRS может быть:

  • встроен в игру;
  • включаться в настройках графики;
  • управляться движком;
  • комбинироваться с DLSS/FSR/XeSS;
  • ограничиваться пользователем вручную.

На ПК пользователь часто может выбрать:

Минимальный масштаб DRS
Максимальный масштаб DRS
Целевой FPS
Режим апскейлера
Резкость
Ограничение FPS

Если DRS реализован хорошо, он помогает даже на мощных ПК, потому что снижает вероятность резких просадок.


17. DRS в движках

Ниже — общий практический обзор для популярных движков.


17.1. Unreal Engine

В Unreal Engine динамическое разрешение может настраиваться через параметры движка и scalability settings.

Обычно связаны:

  • r.DynamicRes.MinScreenPercentage
  • r.DynamicRes.MaxScreenPercentage
  • r.DynamicRes.TargetedGPUHeadroomPercentage
  • параметры TAA;
  • параметры TSR;
  • параметры screen percentage;
  • параметры апскейлеров.

В современных версиях Unreal часто используются:

  • Temporal Super Resolution;
  • Dynamic Resolution;
  • Screen Percentage;
  • Upscaling methods.

Важные моменты для Unreal:

  • UI желательно рендерить отдельно;
  • нужно следить за качеством TAA/TSR;
  • важно корректно настроить motion vectors;
  • нужно проверять поведение в тяжёлых сценах;
  • не стоит ставить минимальный масштаб слишком низким без хорошего апскейлера.

17.2. Unity

В Unity DRS может быть реализован через:

  • Render Pipeline;
  • Universal Render Pipeline;
  • High Definition Render Pipeline;
  • Scriptable Render Pass;
  • кастомный рендеринг в Render Texture;
  • динамический масштаб Render Texture.

Общая схема:

  1. Рендерить 3D-сцену в текстуру меньшего разрешения.
  2. Изменять размер или масштаб этой текстуры.
  3. Масштабировать изображение до экрана.
  4. Рендерить UI отдельно в нативном разрешении.

Важные параметры:

  • целевой FPS;
  • минимальный и максимальный масштаб;
  • скорость адаптации;
  • качество фильтрации;
  • совместимость с пост-эффектами.

18. Практическая реализация DRS: пошаговая схема

Если вы разработчик и хотите добавить DRS, базовая схема выглядит так.


Шаг 1. Определите целевое время кадра

Например:

Цель: 60 FPS
TargetFrameTime = 1000 / 60 = 16.7 мс

Шаг 2. Задайте границы масштаба

Например:

MinScale = 0.7
MaxScale = 1.0

Шаг 3. Задайте скорость адаптации

Например:

DownScaleSpeed = 0.05
UpScaleSpeed = 0.02

Понижение быстрее, повышение медленнее.


Шаг 4. Добавьте гистерезис

Например:

IncreaseThreshold = TargetFrameTime * 0.90
DecreaseThreshold = TargetFrameTime * 1.05

То есть:

Повышать разрешение, если кадр быстрее 15.0 мс
Понижать разрешение, если кадр медленнее 17.5 мс

Шаг 5. Используйте скользящее среднее

Не реагируйте на один кадр.

Например:

AverageFrameTime = (last N frames average)

Хороший диапазон:

30–120 кадров

или:

200–800 мс

Шаг 6. Ограничьте частоту изменений

Например:

Менять масштаб не чаще, чем раз в 100–250 мс

Это уменьшает заметность и нестабильность.


Шаг 7. Обновляйте render target

Если текущий масштаб scale, то:

renderWidth = outputWidth * scale
renderHeight = outputHeight * scale

Например:

Output: 1920×1080
Scale: 0.8

Render: 1536×864

Шаг 8. Рендерите UI отдельно

UI должен оставаться чётким.

3D scene: dynamic resolution
UI/HUD: native resolution

Шаг 9. Добавьте резкость или апскейлер

  • Если используете простой upscale, добавьте аккуратный sharpening.
  • Если используете TAA/TAAU/TSR/DLSS/FSR, настраивайте их совместно с DRS.

Шаг 10. Профилируйте

Проверяйте:

  • FPS;
  • время GPU;
  • время CPU;
  • стабильность frame time;
  • минимальный FPS;
  • 1% low;
  • визуальное качество;
  • артефакты;
  • температуру и энергопотребление.

19. Пример псевдокода

targetFrameTime = 16.7
minScale = 0.70
maxScale = 1.00
currentScale = 1.00

frameTimeHistory = []

every frame:
    frameTime = measureFrameTime()
    frameTimeHistory.push(frameTime)

    if frameTimeHistory.size() > 60:
        frameTimeHistory.pop_front()

    avgFrameTime = average(frameTimeHistory)

    if timeSinceLastChange < 0.2 seconds:
        return

    if avgFrameTime > targetFrameTime * 1.05:
        currentScale -= 0.05

    else if avgFrameTime < targetFrameTime * 0.90:
        currentScale += 0.02

    currentScale = clamp(currentScale, minScale, maxScale)

    if currentScale changed:
        updateRenderTarget(currentScale)
        timeSinceLastChange = 0

20. Какие метрики использовать для оценки качества DRS

20.1. Средний FPS

Показывает общую плавность, но недостаточен сам по себе.


20.2. 1% low и 0.1% low

Показывают просадки. Хороший DRS должен улучшать именно 1% low, а не только средний FPS.


20.3. Frame time variance

Стабильность времени кадра важнее, чем просто высокий FPS.


Плохо:

60, 60, 45, 70, 50, 65

Хорошо:

60, 60, 59, 60, 58, 60

20.4. GPU utilization

Если GPU постоянно загружен на 99%, DRS может быть нужен. Если GPU загружен слабо, проблема может быть в CPU, памяти или синхронизации.


20.5. Минимальный масштаб

Если DRS почти всегда находится на минимальном масштабе, значит:

  • минимальный масштаб слишком низкий;
  • настройки графики слишком высокие;
  • целевой FPS слишком амбициозный;
  • апскейлер не справляется;
  • сцена слишком тяжёлая.

20.6. Время реакции

Как быстро система реагирует на взрывы, загрузку эффектов, смену сцены.


21. Настройка DRS для разных сценариев

21.1. Одиночная игра с акцентом на качество

Рекомендуется:

Минимальный масштаб: 75–85%
Максимальный масштаб: 100%
Скорость изменения: низкая или средняя
Гистерезис: высокий
Апскейлер: качественный temporal

Цель — минимально заметное изменение качества.


21.2. Динамичный шутер

Рекомендуется:

Минимальный масштаб: 65–75%
Максимальный масштаб: 100%
Скорость изменения: средняя или высокая
Гистерезис: средний
Приоритет: стабильный FPS

В шутерах стабильный FPS часто важнее максимальной чёткости.


21.3. Гоночные игры

Рекомендуется:

Минимальный масштаб: 70–80%
Максимальный масштаб: 100%
Скорость изменения: быстрая
Гистерезис: средний

Гонки часто имеют высокую скорость движения камеры, поэтому важны стабильность и низкая задержка.


21.4. VR

VR требует особенно аккуратного DRS.

Рекомендуется:

Минимальный масштаб: не слишком низкий
Скорость изменения: плавная
Гистерезис: высокий
Приоритет: frame pacing и latency

В VR просадки FPS переносятся хуже, но слишком агрессивный DRS может вызвать визуальный дискомфорт.


21.5. Мобильные устройства

На мобильных устройствах DRS особенно полезен, потому что:

  • ограничен энергобюджет;
  • важен нагрев;
  • заряд батареи ограничен;
  • GPU может троттлить.

Рекомендуется учитывать:

  • температуру;
  • заряд батареи;
  • throttling;
  • разрешение экрана;
  • режим энергосбережения.

22. Типичные ошибки при реализации DRS

Ошибка 1: Слишком низкий минимальный масштаб

Если минимальный масштаб 40–50%, изображение может стать очень нечётким.

Лучше:

60–80% для большинства игр

Если нужно ниже, используйте хороший апскейлер.


Ошибка 2: Слишком частая смена разрешения

Если масштаб меняется каждые 1–2 кадра, изображение будет нестабильным.

Нужно добавить:

  • усреднение;
  • гистерезис;
  • задержку между изменениями.

Ошибка 3: Масштабирование UI

UI должен быть чётким. Не применяйте DRS к тексту, HUD, прицелу и меню, если это не необходимо.


Ошибка 4: Игнорирование CPU

Иногда просадки вызваны не GPU, а CPU. DRS не поможет, если узкое место — процессор.

Признаки CPU-bottleneck:

  • GPU загружен не полностью;
  • время кадра высокое;
  • DRS снижает разрешение, но FPS почти не растёт.

Ошибка 5: Отсутствие профилирования

Нельзя настроить DRS только по среднему FPS. Нужно смотреть:

  • frame time;
  • 1% low;
  • GPU time;
  • CPU time;
  • поведение в конкретных сценах.

Ошибка 6: Конфликт с VSync и frame limiter

Если включён VSync или ограничитель FPS, DRS должен учитывать это корректно.


Например, при цели 60 FPS и включённом VSync система должна избегать ситуаций, где кадр не успевает и переносится на следующий вертикальный интервал.


23. DRS и артефакты изображения

DRS может вызывать или усиливать некоторые визуальные проблемы.


23.1. Мыльность

Причины:

  • слишком низкое разрешение;
  • плохой апскейлер;
  • сильный TAA;
  • недостаточная резкость.

Решения:

  • повысить минимальный масштаб;
  • улучшить апскейлер;
  • добавить аккуратный sharpening;
  • уменьшить силу TAA;
  • использовать DLSS/FSR/XeSS.

23.2. Мерцание тонких деталей

Причины:

  • низкое внутреннее разрешение;
  • нестабильный temporal upsampling;
  • плохая геометрия или текстуры.

Решения:

  • повысить минимальное разрешение;
  • улучшить temporal stability;
  • использовать mipmaps;
  • уменьшить shimmering-детали;
  • улучшить motion vectors.

23.3. Ghosting

Причины:

  • ошибки motion vectors;
  • temporal-апскейлер использует старые данные;
  • быстрые объекты или прозрачные эффекты.

Решения:

  • улучшить motion vectors;
  • исключить или корректировать прозрачные объекты;
  • уменьшить temporal-накопление;
  • настроить маскирование.

23.4. Скачки чёткости

Причины:

  • слишком частая смена разрешения;
  • отсутствие гистерезиса;
  • заметный порог изменения.

Решения:

  • уменьшить скорость изменения;
  • увеличить гистерезис;
  • использовать более плавный upscale;
  • ограничить частоту изменений.

24. DRS и temporal-эффекты

Многие современные игры используют temporal-методы:

  • TAA;
  • TAAU;
  • TSR;
  • temporal reflections;
  • temporal GI;
  • motion blur;
  • temporal upscaling. DRS может хорошо работать с ними, но требует аккуратности.

Важно:

  • temporal-эффекты должны корректно работать при смене разрешения;
  • история кадров должна сбрасываться или адаптироваться;
  • motion vectors должны быть корректными;
  • резкие изменения разрешения могут ломать temporal-стабильность.

25. DRS и post-processing

Пост-эффекты могут рендериться в разных разрешениях.

Например:

Эффект Разрешение
Base pass DRS
Lighting DRS
Shadows отдельное разрешение
SSAO пониженное разрешение
Bloom сильно пониженное разрешение
Motion blur полный или пониженный
UI нативное
Depth of field зависит от качества

DRS не должен ломать пост-эффекты. Нужно проверять:

  • bloom;
  • depth of field;
  • motion blur;
  • screen-space reflections;
  • ambient occlusion;
  • volumetrics;
  • chromatic aberration;
  • film grain.

26. DRS и VRAM

Изменение разрешения влияет на использование видеопамяти.

При увеличении разрешения растут:

  • размер render targets;
  • размер буферов;
  • нагрузка на bandwidth;
  • использование памяти под history buffers.

При проектировании DRS нужно учитывать максимальное разрешение:

Если DRS может подняться до 100%,
память должна быть рассчитана на 100%.

Нельзя выделять память только под текущий масштаб без запаса.


27. DRS и bandwidth

На мобильных и консольных устройствах bandwidth часто критичен.

Уменьшение разрешения снижает:

  • нагрузку на память;
  • энергопотребление;
  • нагрев;
  • требования к пропускной способности. Но пост-эффекты, transparency, volumetrics и fullscreen passes всё равно могут потреблять много bandwidth.

28. DRS и энергосбережение

На ноутбуках и мобильных устройствах DRS может использоваться не только для FPS, но и для экономии энергии.

Например:

Если температура высокая:
    снизить максимальный масштаб DRS

Если заряд батареи низкий:
    снизить целевой FPS
    снизить максимальный масштаб

Если устройство перегревается:
    ограничить разрешение

Это уже адаптивное управление производительностью, где DRS — один из инструментов.


29. Связь DRS с другими настройками графики

DRS не существует отдельно от других настроек.

Если DRS постоянно держит минимальное разрешение, возможно, нужно снизить:

  • тени;
  • глобальное освещение;
  • отражения;
  • объёмные эффекты;
  • дальность прорисовки;
  • плотность травы;
  • качество частиц;
  • качество пост-эффектов. И наоборот, если DRS почти всегда на 100%, возможно, можно повысить качество графики.

30. Как пользователю оценивать DRS в игре

Если вы игрок, обращайте внимание на следующие вещи.

Хороший DRS:

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

Плохой DRS:

  • картинка постоянно меняет чёткость;
  • изображение сильно мылится;
  • текст нечёткий;
  • видны скачки разрешения;
  • FPS нестабильный;
  • появляются артефакты;
  • в тяжёлых сценах качество падает слишком сильно.

31. Когда DRS стоит включать

DRS полезен, если:

  • игра часто проседает в тяжёлых сценах;
  • нужно удержать 60/120 FPS;
  • у вас слабая или средняя видеокарта;
  • игра на консоли;
  • используется VR;
  • важно время отклика;
  • нужно уменьшить нагрев;
  • нужно снизить энергопотребление.

32. Когда DRS лучше отключить

DRS может быть не нужен, если:

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

33. DRS против ручного снижения разрешения

Ручное снижение разрешения

Пользователь сам ставит, например:

1920×1080 вместо 2560×1440

Плюсы:

  • предсказуемо;
  • легко настроить;
  • стабильное качество.

Минусы:

  • разрешение всегда понижено, даже в простых сценах;
  • нет автоматической адаптации;
  • может быть избыточная потеря качества.

DRS

Плюсы:

  • повышает разрешение в лёгких сценах;
  • снижает разрешение только при необходимости;
  • лучше использует доступную производительность.

Минусы:

  • сложнее;
  • может менять качество изображения;
  • требует хорошей реализации.

34. DRS против фиксированного внутреннего разрешения

Игра может рендерить всегда в одном внутреннем разрешении, например 100%.

Пример:

Всегда 2560×1440

Плюсы:

  • стабильная чёткость;
  • меньше артефактов;
  • проще настроить.

Минусы:

  • возможны сильные просадки FPS;
  • в тяжёлых сценах качество всё равно может падать из-за других настроек;
  • не использует запас производительности в лёгких сценах.

DRS же пытается получить баланс:

Простая сцена → высокое разрешение
Тяжёлая сцена → пониженное разрешение

35. Лучшие практики для разработчиков

35.1. Начинайте с консервативных значений

Не делайте DRS слишком агрессивным сразу.

Хороший старт:

Минимальный масштаб: 75–85%
Максимальный масштаб: 100%
Изменение: плавное

Потом можно расширять диапазон.


35.2. Делайте понижение быстрее, чем повышение

Это помогает быстро реагировать на просадки и избегать лишнего дёргания вверх.

Пример:

Понижение: 5% за шаг
Повышение: 1–2% за шаг

35.3. Используйте гистерезис

Без него DRS может постоянно колебаться.


35.4. Разделяйте сцену и UI

UI должен быть чётким всегда.


35.5. Проверяйте тяжёлые сцены

Тестируйте:

  • взрывы;
  • дым;
  • частицы;
  • дождь;
  • снег;
  • толпы;
  • большие открытые пространства;
  • ночные города с источниками света;
  • отражения;
  • прозрачные эффекты.

35.6. Проверяйте разные GPU

На разных видеокартах DRS может вести себя по-разному.

Особенно важно для:

  • слабых GPU;
  • мобильных GPU;
  • встроенной графики;
  • консолей;
  • ноутбуков с ограничением мощности.

35.7. Не полагайтесь только на средний FPS

Смотрите:

  • 1% low;
  • 0.1% low;
  • frame time variance;
  • минимальный масштаб;
  • частоту изменений масштаба.

35.8. Давайте пользователю контроль

Хорошо, если игрок может настроить:

  • включить/выключить DRS;
  • минимальный масштаб;
  • максимальный масштаб;
  • целевой FPS;
  • резкость;
  • режим апскейлера.

36. Рекомендуемые стартовые параметры

Для универсального PC/консольного проекта можно начать примерно с таких значений:

Целевой FPS:                  60
Минимальный масштаб:          0.75
Максимальный масштаб:         1.00
Шаг понижения:                0.04–0.06
Шаг повышения:                0.01–0.03
Гистерезис повышения:         8–12%
Гистерезис понижения:         3–6%
Окно усреднения:              30–90 кадров
Минимальный интервал смены:   150–250 мс
UI:                           нативное разрешение

Для более агрессивного режима:

Минимальный масштаб:          0.60
Шаг понижения:                0.06–0.10
Шаг повышения:                0.02–0.04
Минимальный интервал смены:   100–150 мс

Для максимального качества:

Минимальный масштаб:          0.85
Шаг понижения:                0.02–0.04
Шаг повышения:                0.01
Минимальный интервал смены:   250–400 мс

37. Как тестировать DRS

Тест 1: Тяжёлая сцена

Запустите сцену с высокой нагрузкой и проверьте:

  • падает ли FPS ниже цели;
  • до какого масштаба опускается DRS;
  • насколько заметно ухудшение качества;
  • нет артефактов.

Тест 2: Лёгкая сцена

Проверьте:

  • возвращается ли разрешение к максимуму;
  • не остаётся ли DRS в низком разрешении без причины;
  • нет лишнего повышения нагрузки.

Тест 3: Быстрая смена нагрузки

Например:

Простая сцена → взрыв → дым → частицы → возврат в помещение

DRS должен реагировать быстро, но без резких скачков.


Тест 4: UI и текст

Проверьте:

  • чёткость текста;
  • чёткость HUD;
  • прицел;
  • субтитры;
  • элементы интерфейса.

Тест 5: Длительная игра

Проверьте:

  • не перегревается ли устройство;
  • нет постепенного падения качества;
  • нет утечек памяти;
  • DRS не застревает в одном состоянии.

38. Чек-лист качества DRS

Хороший DRS должен:

  • удерживать целевой FPS;
  • улучшать 1% low;
  • не менять разрешение слишком часто;
  • не опускаться ниже разумного минимума;
  • не делать UI мыльным;
  • не вызывать заметного мерцания;
  • не создавать сильные артефакты;
  • корректно работать с VSync;
  • корректно работать с frame limiter;
  • корректно работать с апскейлерами;
  • корректно реагировать на CPU/GPU bottleneck;
  • быть тестируемым и настраиваемым.

39. Краткая шпаргалка

Что такое DRS?

Автоматическое изменение внутреннего разрешения рендеринга для стабильного FPS.


Зачем нужен?

Чтобы уменьшить просадки FPS в тяжёлых сценах и использовать запас GPU в лёгких сценах.


Что он меняет?

Внутреннее разрешение 3D-рендера, например с 2560×1440 до 2048×1152.


Что он не должен портить?

Интерфейс, текст, стабильность изображения, frame pacing.


Главные параметры:

Target FPS
Min scale
Max scale
Speed
Hysteresis
Averaging window
Change interval

Главные риски:

Мыльность
Мерцание
Ghosting
Частые скачки разрешения
CPU bottleneck
Плохая работа с TAA/temporal upsampling

40. Итог

Dynamic Resolution Scaling — это мощный инструмент для балансировки между качеством изображения и производительностью. Он особенно полезен в играх, где нагрузка на GPU сильно меняется от сцены к сцене. Вместо фиксированного снижения разрешения DRS позволяет сохранять максимально возможное качество там, где это возможно, и снижать его только тогда, когда это необходимо.


Хороший DRS должен быть:

  • плавным;
  • стабильным;
  • не слишком агрессивным;
  • с правильным гистерезисом;
  • с чётким UI;
  • с качественным апскейлом;
  • с настройками и ограничениями;
  • с упором не только на средний FPS, но и на стабильность frame time. Если DRS настроен правильно, игрок замечает не скачки разрешения, а просто более плавный и стабильный игровой процесс.

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


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (5)(531)(30)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта