Как управлять разрешением экрана (площадью отрисовки)

Сообщение Как управлять разрешением экрана (площадью отрисовки)
» 17 мар 2020, 14:07

Этот способ - крайняя мера, которая поможет снизить нагрузку на графический процессор (GPU) и повысить FPS ценой ухудшения качества изображения. Но если вы хотите получить высокую производительность на очень слабых устройствах (напр., мобильных), и в силу специфики вашей игры никакой другой способ оптимизации графики вам не подходит, то можете использовать этот способ.


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

Наверняка вы уже знаете, что наиболее частая причина падения FPS — это высокая нагрузка при отрисовке графики. То есть, центральный процессор успевает сделать все вычисления за отведённое время (1/60 секунды, т.е. 0.016 сек), но графичекий процессор не успевает вовремя отрисовать кадр.

► Как решить проблему

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

За это отвечает параметр "canvas size". То есть, вы просто программно уменьшите площадь отрисовки, что снизит нагрузку на графический процессор. Если вы играли в компьютерные игры, то это то же самое, что изменить разрешение экрана в настройках игры. Жертвуя качеством картинки вы выигрываете в производительности.

► Как это сделать:

▪ В свойствах проекта обязательно ставим Fullscreen scaling > Low quality.







 Что такое Fullscreen scalling





Hight quality — отрисовка кадра происходит по всей площади экрана. Например, если в параметрах проекта указан размер окна 1280x720 (параметр Window Size), а у пользователя экран 1920x1080, то графический процессор будет отрисовывать кадр площадью 1920x1080 (и, соответственно, увеличится нагрузка, требуемая для отрисовки кадра).

Low quality — отрисовка кадра происходит в соответствии с размером окна в настройках проекта, а после кадр просто растягивается по всему экрану. При этом, если, например, разрешение экрана пользователя 640x360, а в настройках проекта 1280x720, то графический процессор будет отрисовывать кадр площадью 640x360.




1. Изменение разрешения на старте уровня. On start of layout > set canvas size. Важно чтобы вы меняли разрешение экрана пропорционально, иначе часть экрана просто будет обрезана.

Одно из решений — это сделать специальную переменную, значением от 0.25/0.5/1 (назовём её Scale). И умножать эту переменную на размер экрана пользователя.

    ▪ On start of layout > set canvas size :
    Scale*ViewportRight(0);
    Scale*ViewportBottom(0)

И обязательно добавляем ниже ещё одно действие:
    ▪ Set Layout scale to Scale*1

2. Другой вариант — это динамическое изменение разрешения в процессе игры. То есть, вы отслеживаете показатель FPS по ходу игрового процесса и если он начинает падать, то понижаете разрешение экрана.

Например, событие "Every X seconds", а ниже подсобытие с условием "fps < 45" и действиями "set canvas size", "set layout scale" аналогично тому, как это было показано выше. А также, действие, которое меняет значение переменной Scale. То есть, вы сможете изменять разрешение прямо по ходу игры, в зависимости от того, как сильно падает fps.

Только не увлекайтесь и не делайте эту проверку слишком часто, потому как при изменении canvas size графический процессор полностью перерисовывает экран, что на короткое время вызывает вызывает замирание экрана (так называемые "фризы").

► Другие способы применения

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

► Исходник

ResizePerfomance.capx
(268.38 КБ) Скачиваний: 130
Версия C2 r277


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







 Показать события





Изображение


У цьому полі, синьому, як льон
Де тільки ти і ні душі навколо...
Аватара пользователя

Редактор
Сообщений: 394
Я тут с 01 авг 2017, 10:55
Откуда: Україна