Целочисленное масштабирование без размытия

Кратко

Проблема

Full HD на 4K-мониторе выглядит хуже, чем на Full-HD-мониторе.

Это происходит из-за размытия, добавляемого всеми мониторами и подавляющим большинством телевизоров при любом масштабном коэффи­циенте, хотя при увеличении в целое количество раз (например, 2 в случае FHD→4K) этого можно избежать.

В результате в трёхмерных играх снижается резкость, белые линии становятся серыми, а пиксельная графика (pixel art) перестаёт быть пиксельной.

Решение

Можно каждую логическую точку отображать как квадратную группу из целого (2×2, 3×3) количества физических точек одинакового цвета без подме­шивания цветов соседних точек.

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

Смотреть демо

Что делать

  • Пожалуйтесь на размытие в техподдержку производителя вашего монитора или телевизора.
  • Спрашивайте о поддержке масштаби­рования без размытия в коммен­тариях к обзорам мониторов и телевизоров в СМИ.
  • Предложите встроить функцию в игровые движки Unity, CryEngine.
  • Расскажите о проблеме как можно большему количеству людей.

Прогресс

  • AMD: поддержка для видеокарт начиная с архитектуры GCN (2012) в Radeon Software 2020 (19.12.2) () для Windows 10; идёт работа по реализации для ядра Linux 5.4.
  • Intel: поддержка для видеоядер 11-го поколения в драйвере 25.20.100.7155 () для Windows 10; доступно с сентября в ноутбуках с процессорами 10-го поколения.
  • nVidia: ограниченная поддержка для RTX и GTX 16* в драйвере 436.02 () для Windows 10; несовместимо с HDR, пользовательскими разрешениями, DSR, 4:2:0, повышением резкости и ноутбуками с гибридной графической подсистемой.
  • Linux: поддержка в Proton 4.11-10 (); ограниченная поддержка в XRandR 1.5.1 () и видео­драйвере nVidia 384.47 (): во многих играх изображение усекается.
  • Мониторы: анонсировано для 27″ QHD-монитора EVE Spectrum, ожидается в 1-м или 2-м квартале .

Что такое масштабирование

Изображение на компьютерных мониторах и телевизорах состоит из точек (пикселов). Количество точек по горизонтали и вертикали называется разрешением.

Масштабирование — это изменение размеров (разрешения) изображения. Оно необходимо, если физическое разрешение монитора или телевизора отличается от разрешения подаваемого на него видеосигнала: например, если игра в разрешении 1920×1080 (Full HD) запускается в полноэкранном режиме на мониторе с физическим разрешением 3840×2160 (4K).

Проблема — размытие

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

Но на самом деле размытие неизбежно, только если разрешение монитора некратно разрешению сигнала. Например, невозможно одну логическую точку (пиксел) отобразить как 1,5 физических пиксела, поэтому приходится применять интерполяцию, состоящую в пропорциональном усреднении цветов соседних пикселов масштаби­руемого изображения.

Решение — целочисленное масштабирование

Если коэффи­циент масштаби­рования не дробный (например, 1,5), а целочис­ленный (например, 2 или 3), то размытия можно избежать, отобразив каждый логический пиксел как квадратную группу из целого (например, 2×2 или 3×3) количества физических пикселов одинакового цвета — т. е. просто повторив соответствующий пиксел исходного изображения несколько раз без какого-либо влияния цветов соседних пикселов.

Такое масштаби­рование без потерь качества известно как integer (integer-ratio, integer-factor, integral) scaling (масштаби­рование с целочис­ленным коэффи­циентом), pixel-perfect scaling (масштаби­рование с точной привязкой к физическим пикселам), pixel doubling (duplication) (удвоение, или дублирование, пикселов).

Больше, чем интерполяция «По соседним»

Интерполяция «По соседним» («Ближайший сосед», «Nearest Neighbour») работает без потерь качества только при целочисленных соотношениях размеров результирующего и исходного изображений, а при дробных соотношениях приводит к искажениям. Целочис­ленное масштаби­рование свободно от потерь всегда.

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

Например, изображение 1280×1024 можно вывести на экран 3840×2160, отобразив каждый пиксел изображения как группу из 4-х (2×2) одинаковых физических пикселов с чёрными полями по 56 физических пикселов наверху и внизу и по 640 — слева и справа. См. алгоритм.

Примеры

Пиксельная графика

Различия между билинейной интерполяцией с размытием и целочис­ленным масштаби­рованием без потерь качества наглядно видны на примере пиксельной графики, или пиксель-арта (pixel art):

Фото

См. также фотографии одного и того же скриншота программы Reaper, сделанные с использованием трёх способов масштаби­рования:

Демо

Для лучшего понимания сути целочис­ленного масштаби­рования без размытия см. демо-страницу. Есть возможность сравнить изображение, отмасштаби­рованное с целочи­сленным коэффи­циентом без размытия, и обычное размытое изображение. Поддер­живаются просмотр произвольных изображений и коррекция соотношения сторон.

Сценарии использования

Работа в разрешении ниже физического разрешения дисплея имеет смысл для следующих целей:

  • повышение быстродействия в современных трёхмерных играх на дисплеях 4K+, особенно на ноутбуках;
  • возможность на дисплеях 4K+ играть в игры, не рассчитанные на HiDPI-дисплеи:
    • не масштабирующие свой пользова­тельский интерфейс;
    • в разрешениях 4K и выше работающие неправильно;
  • при масштаби­ровании без размытия — сохранение пикселизации в старых и pixel-art-играх.

Почему это важно

  • На 4K-мониторах при диагонали 24—27″ при разрешении Full HD отдельные пикселы изображения почти неразличимы, и размытие не даёт никакого эффекта сглаживания, а просто бессмысленно снижает резкость, приводя к неоправданной потере качества.
  • С точки зрения быстродействия целочис­ленное масштаби­рование повторением пикселов работает гораздо быстрее, чем масштаби­рование с использованием билинейной или бикубической интерполяции, поэтому применение целочис­ленного масштаби­рования может уменьшить или устранить задержку (lag), вносимую масштаби­рованием.
  • Пользователь имеет право на отсутствие неоправданных потерь качества при работе в разрешениях, отличных от физического разрешения дисплея.
  • Более быстродействующая видеокарта имеет большее тепловыделение (TDP) и увеличенный шум системы охлаждения. Это отрицательно влияет на комфорт пользователя и в долгосрочной перспективе может приводить к необратимому снижению слуха. В той же мере это относится к видеокарте, вычислительные ресурсы которой задействуются в более высокой степени, чем могли бы в более низком разрешении.
  • Более быстродействующая видеокарта проблему не решает, т. к. дело не только в быстродействии (см. далее).

Ещё важнее с ростом физического разрешения

Чем выше физическое разрешение экрана, тем важнее и эффективнее целочис­ленное масштаби­рование.

  • Чем выше физическое разрешение экрана, тем труднее достичь комфортного быстродействия игр при его использовании. Разрешение 4K вчетверо выше Full HD. Разрешение 8K (7680×4320) ещё в 4 раза выше.
  • Чем выше физическое разрешение экрана, тем менее заметен логический пиксел при тех же размере экрана и масштабном коэффи­циенте, и тем менее оправдано размытие как своего рода сглаживание. Например, на 4K-мониторе логическую точку (пиксел) при разрешении Full HD (1920×1080) ещё при желании можно разглядеть при определённом сочетании размера экрана, расстояния до экрана и качества сглаживания в игре. Но при физическом разрешении 8K и разрешении сигнала 4K логический пиксел в типичных условиях использования будет совершенно неразличим.
  • Появляется возможность более полно использовать площадь экрана при целочис­ленном масштаби­ровании. Например, при типичном для DOS-игр разрешении 320×240 высота экрана Full HD (1920×1080) при целочис­ленном масштабе заполняется лишь на 89% (используется 960 из 1080 точек, увеличение четырёхкратное), а на 4K-мониторе высота используется полностью (масштабный коэффи­циент — ровно 9).

    Исходное разрешение Разрешение после масштабирования Примечание
    FHD 4K 8K
    Масштаб Потеря высоты Масштаб Потеря высоты Масштаб Потеря высоты
    256×224
    SNES
    4,8 17% 9,64 6,7% 19,3 1,5% На 4K потеря высоты в 2,6 раза меньше, чем на FHD. На 8K — в 4,5 раза меньше, чем на 4K, и в 11,5 раз меньше, чем на FHD
    320×240
    qVGA
    4,5 11,1% 9 0 18 0
    640×480
    VGA
    2,25 11,1% 4,5 11,1% 9 0 Потери высоты на FHD и 4K одинаковы
    800×600
    SVGA
    1,8 44,4% 3,6 16,7% 7,2 2,8% На FHD умещается только при масштабе 100% (без увеличения). На 4K потеря высоты в 2,67 раза меньше, чем на FHD; на 8K — в 6 раз меньше, чем на 4K, и в 16 раз меньше, чем на FHD
    1024×768
    XGA
    1,4 28,9% 2,81 28,9% 5,63 11,1% На FHD умещается только при масштабе 100% (без увеличения). На 8K потеря высоты в 2,6 раз меньше, чем на 4K и FHD
  • Появляется возможность ещё полнее использовать площадь экрана путём использования логических пикселов с переменным размером с разницей в размере соседних пикселов в 1 физический пиксел. Чем больше физических пикселов в логическом пикселе, тем менее заметна разница в 1 физический пиксел.

    Например, для разрешения 256×224, характерного для 16-битных игровых приставок, на экране Full HD максимальный целочис­ленный коэффи­циент составляет 4 (полный дробный коэффи­циент — 4,82), по умолчанию по вертикали пропадают 184 пиксела, или 17% высоты экрана. Но если увеличить высоту каждого второго логического пиксела на 1 физический пиксел (4×5 вместо 4×4), то потерянная высота сократится в 2,5 раза — пропадут уже всего 72 физических пиксела, или 7% высоты экрана. (Для сохранения соотношения сторон изображения следует дополнительно пропорционально растянуть изображение по ширине.)

    Однако разница 25% в высоте пикселов в соседних строках на FHD-экране может бросаться в глаза. На 4K-экране относительное увеличение высоты пиксела составляет всего 11% (9×9 → 9×10) — и значительно менее заметно. На 8K-экране в аналогичных условиях разница в высоте пикселов составляет всего 5% (19×19 → 19×20), при этом увеличение высоты пиксела в каждой 4-й строке сокращает потерянную высоту в 8 раз — с 64 до 8 пикселов.

  • Экраны с разрешением 8K при челочисленном масштаби­ровании позволят использовать без потерь качества или площади экрана любое из типичных разрешений:

    • HD (1280×720, 6x);
    • FHD (1920×1080, 4x);
    • QHD (2560×1440, 3x);
    • 4K (3840×2160, 2x).

Мощная видеокарта — не решение

Приобретение более быстродействующей видеокарты не решает проблему:

  • если экраном повышенного разрешения оснащён ноутбук, установка мощной видеокарты практически невозможна из-за естественных ограничений по габаритам, энергопотреблению и тепловыделению;
  • многие игры содержат растровые (точечные) элементы (например, меню в «Half-Life 2» и панели инструментов в «Cities XL Platinum»), которые в разрешении 4K становятся мелкими, и играть в игру почти невозможно;
  • некоторые игры работают в разрешении 4K неправильно (например, в «Bionic Commando Rearmed» не видны элементы головоломок на мини-уровнях «Hack enemy network»);
  • некоторые игры (например, «Duck Tales Remastered») имеют фиксированное разрешение (например, Full HD), а поддержка остальных разрешений достигается масштаби­рованием с размытием;
  • в играх на основе пиксельной графики (pixel art) быстродействие не является проблемой, а важен пикселизованный характер изображения без неуместного размытия, не соответст­вующего замыслу авторов игры.

Видеокарта с более высоким быстродействием здесь бессильна.

Частичные решения

Масштабирование, встроенное в игры

В некоторые современные игры масштаби­рование без размытия встроено. В основном это характерно для игр на основе пиксельной графики (pixel art), но встречается и в некоторых трёхмерных играх.

  • Масштабирование без размытия встроено в игру Owlboy () (приключенческий платформер на основе пиксельной графики).
  • В игру QuakeSpasm (Quake на более современном движке) начиная с версии 0.93.0 () встроена возможность целочис­ленного масштаби­рования без размытия с коэффи­циентами до 400% с помощью конфигурационного параметра r_scale. Для использования этой возможности следует в подпапку ID1 папки игры поместить текстовый файл autoexec.cfg, содержащий параметр вида r_scale 4, где 4 указывает на масштабный коэффи­циент. Например, при выбранном в игре разрешении 3840×2160 игра отрисовывается в разрешении 960×540 и масшта­бируется до 3840×2160 без размытия путём отображения каждого логического пиксела как квадратной группы из 16-ти (4×4) физических пикселов одинакового цвета.
  • В игру Dusk () (3D-шутер в ретростиле) встроена возможность целочис­ленного масштаби­рования без размытия с коэффи­циентами до 800%. Для этого служит параметр «Pixelization» → «1x-8x» в разделе «Advanced Display Settings» настроек игры. По некоторым данным, по умолчанию параметр установлен в значение «2x», что, например, при физическом разрешении 4K соответствует логическому разрешению Full HD.

Программы масштабирования

  • Для масштаби­рования Windows-игр, поддерживающих оконный режим, можно использовать программу IntegerScaler.
  • Для масштаби­рования 3D-игр можно использовать программу GeDoSaTo. Недостатки:

    • поддерживает только относительно старые игры, использующие DirectX 9 и ниже;
    • работает лишь с некоторыми из них;
    • современные версии программы на некоторых системах не работают вообще, у автора этих строк заработала одна из предыдущих версий — Beta 10 Poltergeist.

Эмуляторы Glide и DirectX

Glide — программный интерфейс (API), использовавшийся в видеокартах 3dfx. Glide-эмуляторы позволяют играть в игры с поддержкой Glide на компьютерах, поддерживающих современные API DirectX и OpenGL.

  • Glide-эмулятор nGlide начиная с версии 2.10 () поддерживает целочис­ленное масштаби­рование без размытия (Options → Aspect ratio → Integer scaling).
  • DgVoodoo (эмулятор Glide и «обёртка» для DirectX 8 и ниже) и DXGL (OpenGL-реализация DirectDraw) поддерживают алгоритм масштаби­рования без размытия «По соседним» («Nearest Neighbour») (источники: 1, 2).

Эмуляторы игровых приставок и движки для старых игр

  • SNES-эмулятор Snes9x начиная с версии 1.56.2 () поддерживает целочис­ленное масштаби­рование (Video → Display Configuration (Display Settings) → General → Integer Scaling). При этом для предотвращения размытия следует снять галку Video → Bilinear Filtering, а во избежание других искажений исходного изображения — в обоих выпадающих списках Video → Display Configuration (Display Settings) → Output Image Processing выбрать значение None. В качестве способа вывода (Video → Display Configuration (Display Settings) → General → Output Method) необходимо выбрать «Direct3D» или «OpenGL»; в режиме «DirectDraw» функция не работает. Ограничение: при использовании фильтра «Scanlines» используется чётный масштабный коэффи­циент, из-за чего высота экрана может использоваться менее полно, чем без фильтра «Scanlines»: например, на 4K-мониторе используется коэффи­циент 8 вместо 9.
  • SNES-эмулятор Snes9x EX+ для Android начиная с версии 1.4.4 () поддерживает целочис­ленное масштаби­рование (Options → Video → Zoom → Integer-only). При этом для предотвращения размытия следует установить параметр Options → Video → Image Interpolation в значение None вместо используемого по умолчанию Linear.
  • SNES-эмулятор Mesen-S поддерживает целочис­ленное масштаби­рование: Options → Video → General → Use integer scale values when entering fullscreen mode. При этом для предотвращения размытия должна быть снята галка Picture → Use bilinear interpolation when scaling (снята по умолчанию). Поддерживается отсечение заданного количества пикселов исходного изображения по отдельности для каждой из сторон, благодаря чему можно полнее использовать площадь экрана: Options → Video → Overscan.
  • Эмулятор 8/16-битных игровых приставок higan для Windows начиная с версии 104 () поддерживает целочис­ленное масштаби­рование (Settings → Video → Windowed Mode / Fullscreen Mode → Integral scaling). При этом для предотвращения размытия следует снять галку Settings → Video Emulation → Blurring, а параметр Settings → Video Shader установить в значение None вместо используемого по умолчанию Blur.
  • В SNES-эмуляторе bsnes для Windows начиная с версии 107 () в режиме центрированного вывода (Settings → Output → Center) автоматически применяется целочис­ленное масштаби­рование. При этом для предотвращения размытия следует параметр Settings → Shader установить в значение None вместо используемого по умолчанию Blur. Ограничение: при использовании фильтра «Scanlines» и нечётном масштабном коэффи­циенте (например, 9 при физическом разрешении 4K) в сочетании с механизмом отрисовки «OpenGL 3.2» (Settings → Drivers → Video → Driver) scanline-линии отрисовываются неравномерно: например, на 4K-мониторе каждая 7-я линия на 1 пиксел толще остальных.
  • NES-эмулятор Mesen начиная с версии 0.9.1 () поддерживает целочис­ленное масштаби­рование: «Опции» → «Видео» → «Общие» → «Use integer scale values when entering fullscreen mode» (Options → Video → General → Use integer scale values when entering fullscreen mode). При этом для предотвращения размытия должна быть снята галка «Изображение» → «Билинейная интерполяция» (Picture → Use bilinear interpolation when scaling) (снята по умолчанию). Поддерживается отсечение заданного количества пикселов исходного изображения по отдельности для каждой из сторон, в том числе индивидуально для каждой игры, благодаря чему можно полнее использовать площадь экрана: «Опции» → «Видео» → «Overscan» (Options → Video → Overscan).
  • NES-эмулятор puNES начиная с версии 0.105 () поддерживает целочис­ленное масштаби­рование: Settings → Video → Misc → Use integer scaling in full­screen. При этом для предотвращения размытия следует снять галку Interpolation.
  • mGBA — эмулятор карманных игровых систем Game Boy, Game Boy Color и Game Boy Advance — начиная с версии 0.6 () поддерживает целочис­ленное масштаби­рование: Audio/Video → Force integer scaling. При этом для предотвращения размытия галка Audio/Video → Bilinear filtering должна быть снята (по умолчанию снята).
  • SameBoy — эмулятор карманных игровых систем Game Boy и Game Boy Color — начиная с версии 0.9 () поддерживает целочис­ленное масштаби­рование (Graphic Options → Scaling Mode → Retain Integer Factor). При этом для предотвращения размытия следует установить параметр Graphic Options → Scaling Filter в значение Nearest Neighbor. Эмулятор формально несовместим с HiDPI (не является DPI-aware), поэтому для гарантии отсутствия размытия и для максимального использования площади экрана рекомендуется отключить DPI-виртуализацию в свойствах его исполняемого файла.
  • Эмулятор множества игровых систем и старых компьютеров MAME поддерживает целочис­ленное масштаби­рование без размытия. Для включения целочис­ленного масштаби­рования служит параметр командной строки -nounevenstretch или его краткий вариант -noues. Выключить размытие можно параметром командной строки -nofilter, либо установив параметр Configure Options → Video Options → Bilinear Filtering в настройках MAME в значение Off.

    Алгоритм целочис­ленного масштаби­рования в MAME использует пикселы одинакового размера, поэтому при малых масштабных коэффи­циентах соотношение сторон отмасштаби­рованного изображения может не точно соответствовать необходимому, если игре требуется коррекция соотношения сторон (aspect-ratio correction). Например, в аркадной версии игры «Mortal Kombat 3» (исходное разрешение — 400×254, целевое соотношение сторон — 4:3) на FHD-дисплеях изображение заметно сужено по горизонтали (размер логического пиксела — 3×4 физических пиксела, погрешность — 11,42%), а на 4K-дисплеях нарушение пропорции незаметно (размер пиксела — 7×8, погрешность — 3,34%).

  • Cemu — экспериментальный эмулятор игровой приставки Wii U для Windows — начиная с версии 1.15.2 () поддерживает алгоритм масштаби­рования «По соседним» («Nearest Neighbour») (Options → General settings → Graphics → Upscale filter / Downscale filter → Nearest Neighbor). Произвольное разрешение можно установить для каждой конкретной игры с помощью графических пакетов (Options → Graphic packs).
  • Оболочка RetroArch для эмуляторов игровых приставок поддерживает челочис­ленное масштаби­рование (Settings → Video → Integer Scale → On). Для отключения размытия следует установить параметр Settings → Video → Bilinear Filtering в значение Off.
  • Оболочка BizHawk для эмуляторов игровых приставок поддерживает челочис­ленное масштаби­рование (Config → Display → Scaling & Filtering → Expand pixels by integers only (e.g no 1.3333x)). Для отключения размытия следует установить параметр Final Filter в значение None (по умолчанию). Но периодически изображение выводится с ошибочным соотношением сторон и искажёнными пропорциями пикселов.
  • Программа ScummVM, современная среда для запуска множества старых игр типа «Broken Sword», начиная с версии 2.1 () поддерживает целочис­ленное масштаби­рование: «Настройки» → «Графика» → «Режим р…гивания» → «Масштаби­рование пиксель-в-пиксель» («Options» → «GFX» → «Stretch mode» → «Pixel-perfect scaling». Отключить размытие можно снятием галки «Фильтрование графики» («Filter graphics»).

    В оконном режиме доступна также возможность вывода с фиксированными целочис­ленными масштабами 2x (200%) и 3x (300%) («Настройки» → «Графика» → «Граф. режим») («Options» → «GFX» → «Graphics mode»), но глобальная настройка применяется только к играм с разрешением не более 320×240, а для игр с более высоким разрешением требуется задавать эту настройку с помощью индивидуального для игры набора настроек: «Настройки игры» → «Графика» → «Перекрыть глобальные установки графики» («Edit Game» → «Graphics» → «Override global graphic settings»).

    Программа формально несовместима с HiDPI (не является DPI-aware), поэтому для гарантии отсутствия размытия и для максимального использования площади экрана рекомендуется отключить DPI-виртуализацию в свойствах её исполняемого файла.

    В графическом режиме «OpenGL» программа может переключать 4K-монитор в разрешение Full HD, что может приводить к размытию из-за масштаби­рования средствами монитора или видеокарты. Помогает переключение программы в другой графический режим — например, «3x».

    ScummVM также доступна как ядро libretro, которое можно использовать с таким оболочками, как RetroArch или BizHawk, в которые встроены собственные реализации целочис­ленного масштаби­рования.

Виртуализация ОС

  • Для запуска DOS-программ — эмулятор DOSBox ECE — улучшенная неофициальная версия программы DOSBox, поддерживающая целочис­ленное масштаби­рование без размытия. В отличие от обычной версии DOSBox, в ECE-версии реализовано полноценное масштаби­рование без использования фильтров, благодаря чему поддерживается масштаби­рование без размытия в полноэкранном режиме, масштабный коэффи­циент вычисляется автоматически и не ограничен малыми значениями (3x в официальных сборках DOSBox).

    В качестве значения параметра output в разделе [sdl] конфигурационного файла (*.conf) для игры следует использовать значение openglpp или surfacepp либо не задавать этот параметр вовсе. Для отключения коррекции соотношения сторон (например, растяжения 320×200 до высоты 240, соответствующей соотношению 4:3) и включения строго квадратных пикселов служит параметр aspect=false в разделе [render] конфигурационного файла. Включить вертикальную синхронизацию (V-Sync) при output=openglpp можно параметром glfullvsync=true в разделе [sdl]. Дополнительную информацию см. в readme-файле pixel-perfect-патча, включённом также и в дистрибутив DOSBox ECE (README for pixel-perfect patch.txt).

    Пример конфигурационного файла DOSBox ECE для игры «Epic Pinball»:

    [sdl]
    fullscreen=true
    output=openglpp
    glfullvsync=true

    [cpu]
    cycles=4000

    [autoexec]
    mount C "."
    C:
    cd \EPICPIN
    PINBALL.EXE
    exit

  • Среда виртуализации VirtualBox поддерживает масштаби­рование экрана виртуальной машины без размытия в диапазоне 100—300%: Машина → Настроить → Дисплей → Экран → Коэффи­циент масштаби­рования (Machine → Settings → Display → Screen → Scale Factor).

Просмотр изображений и видео

  • Для просмотра изображений — программа XnView со снятой галкой Инструменты → Опции → Вид → Высокое качество при масштаби­ровании → При увеличении (Tools → Options → View → High quality zoom → Enlarge). Ограничение: настройка применяется ко всем просматриваемым изображениям вне зависимости от кратности их размеров размеру окна программы и использования полноэкранного режима.
  • Для просмотра видео — плеер MPC-HC с настройкой Вид → Настройки → Воспроизведение → Вывод → Интерполяция → Ближайший сосед (View → Options → Playback → Output → Resizer → Nearest neighbor). Настройка доступна при использовании движков отрисовки «Video Mixing Renderer 9 (renderless)», «Расширенный рендер видео (EVR custom presenter)» («Enhanced Video Renderer (custom presenter)») и «Sync Renderer». Движок отрисовки можно выбрать с помощью выпадающего списка «Вывод DirectShow» («DirectShow Video») на той же странице настроек. Ограничение: настройка применяется ко всем видео вне зависимости от кратности размеров видеокадра размеру окна программы и использования полноэкранного режима.

Встроенные средства Windows

  • Для оконных программ — экранная лупа Windows (Windows Magnifier). Недостатки:

    • неудобный интерфейс — трудно точно совместить масштаби­руемую область с границами подлежащего масштаби­рованию объекта;
    • при некратных размере подлежащего масштаби­рованию объекта и разрешении монитора область вокруг объекта не заполняется однотонной заливкой, поэтому помимо подлежащего масштаби­рованию объекта видны посторонние объекты;
    • в оконном режиме — задержка (lag) и подёргивание;
    • в режиме вывода на полный экран — подёргивание как минимум в некоторых играх (например, WRC 6) (возможно, только в Windows 7) и возможная задержка (lag).
  • Для оконных Windows-программ, несовместимых с HiDPI — использование Windows 10, где, в отличие от Windows 7, старые программы при целочис­ленных системных масштабах автоматически масшта­бируются без размытия.
  • В Windows 10 для игр с поддержкой псевдо­полно­экранного режима «Borderless» возможно масштаби­рование без размытия с масштабом, равным системному масштабу.

    «Borderless» — особый вариант оконного режима, который отличается от обычного оконного режима тем, что использует окно без рамок и заголовочной панели, и вся площадь окна представляет собой область отрисовки игры. В зависимости от конкретной игры или её настроек такое окно может занимать весь экран без возможности задать разрешение в настройках игры, либо иметь фиксированный размер, равный внутриигровому разрешению.

    Для масштаби­рования с помощью Borderless-режима:

    • игра должна быть запущена в режиме DPI-виртуализации (DPI scaling) — встроенном в Windows режиме масштаби­рования устаревших программ, не рассчитанных на экраны с высокой плотностью точек;
    • в настройках игры должен быть выбран режим «Borderless». В разных играх этот режим может называться по-разному, например, «Borderless Full Screen», «Borderless Windowed», «Borderless», «Windowed Fullscreen», «Fullscreen Windowed». В некоторых играх режим, называемый полноэкранным («Full Screen»), на самом деле представляет собой режим «Borderless» вместо настоящего (exclusive) полноэкранного режима;
    • разрешение в игре должно быть в точности настолько меньше системного, какой масштаб задан в Windows.

    Например, если для монитора разрешением 3840×2160 (4K) в Windows 10 задан масштаб 200% (коэф­фициент — 2), разрешение в настройках игры должно быть 1920×1080 (Full HD):

    3840 / 1920 = 2
    2160 / 1080 = 2

    Принудительно включить DPI-виртуализацию для игры, даже если она объявлена как совместимая с HiDPI (DPI-aware), в Windows 10 можно через свойства исполняемого файла (*.exe) игры, подробнее см. ниже.

DPI-режим программ в Windows

К программам и играм, не объявленным как совместимые с HiDPI (DPI-aware), Windows автоматически применяет DPI-виртуализацию (DPI scaling). При DPI-виртуализации интерфейс программы увеличивается как растровое (точечное) изображение с коэффициентом, соответствующим системному масштабу. Например, при системном масштабе 200% такие программы увеличиваются вдвое по горизонтали и вдвое по вертикали.

Чтобы предотвратить размытие или пикселизацию из-за DPI-виртуализации в играх, важно убедиться, что игра работает в HiDPI-совместимом (DPI-aware) режиме. Определить это легко: размер окна игры в физических пикселах (точках) должен соответствовать разрешению, выбранному в настройках игры. Например, окно игры, работающей в разрешении Full HD, при системном масштабе 200% на 4K-мониторе должно занимать не весь экран, а примерно четверть экрана (половину по горизонтали и половину по вертикали).

Для игр, формально несовместимых с HiDPI, требуется отключить DPI-виртуализацию (DPI scaling) для исполняемого файла игры, чтобы окно игры имело правильный размер и было свободно от размытия, возможного вследствие масштаби­рования, которое Windows автоматически применяет к HiDPI-несовместимым приложениям.

Отключить DPI-виртуализацию для отдельно взятой игры можно в свойствах (пункт «Свойства» контекстного меню файла) её исполняемого файла (*.exe):

Windows 10
Пункт «Свойства» → вкладка «Совместимость» → секция «Параметры» → кнопка «Изменить параметры высокого DPI» → секция «Переопределение масштаби­рования с высоким разрешением» → галка «Переопределите режим масштаби­рования высокого разрешения. Масштаби­рование выполняется» → пункт «Приложение» выпадающего списка.
Windows 10 (устаревшие версии)
Пункт «Свойства» → вкладка «Совместимость» → секция «Параметры» → галка «Переопределите режим масштаби­рования высокого разрешения. Масштаби­рование выполняется» → пункт «Приложение» выпадающего списка.
Windows 7
Пункт «Свойства» → вкладка «Совместимость» → секция «Параметры» → галка «Отключить масштаби­рование изображения при высоком разрешении экрана».

Для некоторых игр, не объявленных как DPI-aware, Windows отключает DPI-виртуализацию автоматически. Обычно это происходит при первом переключении из полноэкранного режима в оконный.

Телевизоры

  • Есть информация, что некоторые 4K-телевизоры Panasonic поддерживают возможность вывода Full-HD-сигнала без размытия. Например, в модели TX-55CX802B это реализуется параметром «1080p Pixel by 4 pixels» в меню «Picture → Option Settings». Судя по всему, эта возможность касается исключительно разрешения Full HD (1920×1080) и не работает при иных разрешениях входного видеосигнала (например, 1280×720). При этом аналогичная модель меньшей диагонали — TX-50CX802 — судя по официальной инструкции, такой функции лишена. Функция также доступна в моделях TH-65AX900A, TX-50AX802 и TX-58DX750.
  • По некоторым данным, функция масштаби­рования без размытия доступна в режиме «Graphics» в некоторых моделях 4K-телевизоров Sony — например, X900E.

Прочее

  • Для отключения неоправданного размытия изображений на веб-страницах — расширение SmartUpscale для браузеров Firefox и Chrome.
  • Есть сведения, что размытие отсутствует при масштаби­ровании с целочис­ленными коэффи­циентами средствами официального видеодрайвера Intel для операционной системы Linux.
  • Операционная система Raspbian для мини-компьютеров Raspberry Pi начиная с  поддерживает масштаби­рование без размытия с коэффи­циентом 200% с помощью параметра настроек «Pixel Doubling» на вкладке «System» в приложении «Raspberry Pi Configuration».

Потенциальные решения

  • Масштабирование средствами монитора. Преимущество по сравнению с масштаби­рованием средствами видеодрайвера — экономия пропускной способности видеоинтерфейса и потенциальное снижение электромагнитного излучения от сигнального кабеля.
  • Устройство для масштаби­рования, подключаемое в разрыв между источником видеосигнала и дисплеем. Преимущество по сравнению с масштаби­рованием средствами видеодрайвера — возможность использования с любым источником сигнала (например, игровой приставкой или видеоплеером), а не только компьютером. Потенциальные недостатки:

    • может вносить дополнительную задержку (lag);
    • может пострадать совместимость с технологией HDCP, необходимой для воспроизведения защищённого контента. Решаемо с помощью переключателя для временного включения режима прямой передачи видеосигнала без изменений. Переключатель может быть физическим или управляемым с компьютера по USB.

    Существуют похожие устройства:

    • mCable — HDMI-кабель со встроенной микросхемой для повышения качества входного сигнала в реальном времени с применением шумоподавления, сглаживания и повышения резкости с заявленной задержкой (лагом) менее 1 мс;

    • DCHDMI для вывода видеосигнала игровой приставки Sega Dreamcast по HDMI в формате Full HD с поддержкой целочис­ленного масштаби­рования с двукратным увеличением изображения (640×480 → 1280×960);
    • UltraHDMI для вывода видеосигнала игровой приставки Nintendo 64 по HDMI без потерь качества (обзор).

    Возможно, подобное устройство можно реализовать на основе программируемых вентильных матриц FPGA: 1, 2.

Что делать

Обычные пользователи

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

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

  • Встраивайте целочис­ленное масштаби­рование в разрабатываемые вами игры. В трёхмерных (3D-) играх это можно реализовать с помощью рендеринга в текстуру (Render To Texture) с последующим её масштаби­рованием аппаратными средствами видеокарты с использованием алгоритма «По соседним» («Nearest Neighbour»). В игровом движке Unreal Engine доступна встроенная возможность масштаби­рования без размытия с помощью консольной переменной r.Upscale.Quality со значением 0.
  • Лоббируйте встраивание целочис­ленного масштаби­рования в популярные игровые движки Unity, CryEngine и проч., чтобы автоматически сделать эту функцию доступной в будущих играх на их основе.

Алгоритм

Готовый алгоритм реализации целочис­ленного масштаби­рования без размытия. Алгоритм — последовательность действий для достижения нужного результата.

Кратко

Без коррекции соотношения сторон

Делим ширину и высоту экрана на ширину и высоту изображения соответственно. У меньшего из результатов отбрасываем дробную часть. Это искомый целочисленный масштаб.

С коррекцией соотношения сторон

  1. Делим ширину и высоту экрана на ширину и высоту изображения соответственно. Отбрасываем дробные части. Это максимальные целочис­ленные масштабы по горизонтали и вертикали соответственно.
  2. Умножаем их на ширину и высоту изображения соответственно, получаем размеры области, куда будет вписано отмасштабированное изображение.
  3. Если соотношение сторон области равно целевому, искомые целочисленные масштабы равны максимальным.
  4. В зависимости от того, меньше или больше соотношение сторон области по сравнению с целевым, принимаем искомый целочис­ленный масштаб по горизонтали или вертикали равным максимальному по этой оси.
  5. Масштаб по второй оси прибли­зительно вычисляем исходя из масштаба по первой оси и целевого соотношения сторон. Результат округляем вверх или вниз исходя из минимизации погрешности соотношения сторон.

Подробно

  1. Делим ширину SW и высоту SH экрана в физических пикселах соответственно на ширину W и высоту H подлежащего масштаби­рованию изображения, получаем соответственно соотношения RW и RH.
  2. Если коррекция соотношения сторон изображения не требуется (пикселы квадратные, масштабные коэффициенты по горизонтали и вертикали одинаковы):

    1. Отбрасываем дробную часть у меньшего из соотношений RW и RH, получаем целочис­ленный масштабный коэффициент R.
    2. Отображаем каждый пиксел исходного изображения как квадратную группу из R×R физических пикселов одинакового цвета, равного цвету пиксела исходного изображения.
    3. Вычисляем ширину UW и высоту UH отмасшта­бированного изображения умножением соответственно ширины W и высоты H исходного изображения на масштабный коэффициент R.
  3. Если коррекция соотношения сторон изображения требуется (пикселы потенциально прямоугольные, масштабные коэффициенты по горизонтали и вертикали потенциально разные):

    1. Отбрасываем дробные части у соотношений RW и RH, получаем максимальные целочис­ленные коэффициенты MRX по горизонтали и MRY по вертикали соответственно.
    2. Умножаем ширину W и высоту H изображения на MRX и MRY соответственно, получаем ширину MW и высоту MH области, в которую будет вписано отмасшта­бированное изображение.
    3. Делим ширину MW этой области на её высоту MH, получаем соотношение сторон MA этой области.
    4. Если соотношение MA равно целевому соотношению сторон TA:

      1. Масштабные коэффициенты RX по горизонтали и RY по вертикали принимаем равными MRX и MRY соответственно.
      2. Переходим к центрированию отмасшта­бированного изображения (шаг 4.1).
    5. Если соотношение MA меньше целевого соотношения сторон TA:

      1. Масштабный коэффициент RX по горизонтали принимаем равным MRX.
      2. Делим максимальную ширину MW на целевое соотношение сторон TA, получаем приблизительную отмасшта­бированную высоту AUH.
    6. Если соотношение MA больше целевого соотношения сторон TA:

      1. Масштабный коэффициент RY по вертикали принимаем равным MRY.
      2. Умножаем максимальную высоту MH на целевое соотношение сторон TA, получаем приблизительную отмасшта­бированную ширину AUW.
    7. Приблизительный отмасшта­бированный размер AUW или AUH делим на исходный размер изображения W или H по этой оси. Округляем результат в направлении, при котором погрешность соотношения сторон минимальна. Если погрешности в обоих направлениях одинаковы, округляем результат в направлении, при котором соотношение сторон ближе к исходному. Полученное целое число — масштабный коэффициент по этой оси — RX (по горизонтали) или RY (по вертикали).
    8. Вычисляем ширину UW и высоту UH отмасшта­бированного изображения умножением ширины W и высоты H исходного изображения на масштабные коэффициенты RX по горизонтали и RY по вертикали соответственно.
  4. Выравниваем отмасшта­бированное изображение по центру экрана:

    1. Из ширины SW и высоты SH экрана вычитаем соответственно ширину UW и высоту UH отмасшта­бированного изображения, результаты делим на 2, отрасываем дробную часть, полученные числа обозначаем X и Y соответственно.
    2. Отмасшта­бированное изображение выводим на расстоянии X по горизонтали и Y по вертикали от верхнего-левого угла экрана.
  5. Оставшееся экранное пространство вокруг отмасшта­бированного изображения заполняем чёрным цветом.

Пример без коррекции соотношения сторон

Требуется вывести изображение 640×480 (VGA) на экране 1920×1080 (Full HD):

1920 / 640 = 3
1080 / 480 = 2,25

2,25 меньше, чем 3. Отбрасываем дробную часть 0,25, получаем 2. Значит, выводим каждый пиксел исходного изображения как группу 2×2 физических пиксела.

Ширина и высота отмасшта­бированного изображения — 1280 (640 * 2) и 960 (480 * 2) соответственно. Значит, для центрирования на экране выводим отмасшта­бированное изображение на расстоянии 320 ((1920 - 1280) / 2) пикселов по горизонтали и 60 ((1080 - 960) / 2) пикселов по вертикали от верхнего-левого угла экрана.

Пример с коррекцией соотношения сторон

Требуется вывести изображение 400×254 с целевым соотношением сторон 4:3 на экране 3840×2160 (4K):

3840 / 400 = 9,6
2160 / 254 ≈ 8,5

Отбрасываем дробную часть у полученных соотношений, получаем максимальные целочис­ленные коэффициенты 9 по горизонтали и 8 по вертикали соответственно.

Умножаем ширину 400 и высоту 254 изображения на 9 и 8 соответственно, получаем ширину 3600 и высоту 2032 области, в которую будет вписано отмасшта­бированное изображение.

Соотношение сторон области 1,77 больше целевого соотношения сторон 4:3 (≈ 1,333). Поэтому:

  • масштабный коэффициент по вертикали принимаем равным 8;
  • умножаем максимальную высоту 2032 на целевое соотношение сторон 4:3 (≈ 1,333), получаем приблизительную отмасшта­бированную ширину 2709,333.

Делим 2709,333 на исходную ширину 400 изображения, получаем 6,773, округляем, получаем масштабный коэффициент 7 по горизонтали. Таким образом, размер пиксела — 7×8.

Ширина и высота отмасшта­бированного изображения — 2800 (400 * 7) и 2032 (254 * 8) соответственно. Фактическое соотношение сторон — около 1,378 (2800 / 2032), погрешность относительно целевого соотношения 4:3 (≈ 1,333) — около 3,35%.

Для центрирования на экране выводим отмасшта­бированное изображение на расстоянии 520 ((3840 - 2800) / 2) пикселов по горизонтали и 64 ((2160 - 2032) / 2) пиксела по вертикали от верхнего-левого угла экрана.

Эталонная отрисовка

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

Во избежание влияния искажений, вносимых веб-браузером, рекомендуется сохранить изображения на компьютер и просматривать их сторонней самостоятельной программой в масштабе 100%. Вы также можете скачать все изображения в виде единого архива (80 КБ).

Изображения Масштаб Чёрный фон Примечание
Исходное В масштабе Полный Целоч. Слева +
справа
Сверху +
снизу
320×240
qVGA, 4:3
3840×2160
4K UHD, 16:9
9
900%
480+480 0 Изображение на всю высоту, чёрный фон только слева/справа
640×480
VGA, 4:3
1920×1080
Full HD, 16:9
2,25
225%
2
200%
320+320 60+60
1280×720
HD, 16:9
1920×1080
Full HD, 16:9
1,5
150%
1
100%
320+320 180+180 Идентично режиму центрирования
1280×720
HD, 16:9
2560×1600
WQXGA, 16:10
2
200%
0 80+80 Изображение на всю ширину, чёрный фон только сверху/снизу
1920×1080
Full HD, 16:9
3840×2160
4K UHD, 16:9
2
200%
0 0 Разрешения кратны, поэтому чёрного фона нет

Пользовательский интерфейс

Введение

Простейший интерфейс для управления масштаби­рованием без размытия может быть представлен единственной галкой (флажком) «Предот­вращать размытие при масштаби­ровании», включающей целочис­ленное масштаби­рование без размытия.

Более гибкий вариант — раздельное управление размытием и целочис­ленностью масштаба. Тогда нужны две настройки:

  1. для отключения размытия вне зависимости от целочис­ленности или дробности масштабного коэффи­циента — в результате просто используется алгоритм «По соседним» вместо билинейной интерполяции;
  2. для использования строго целочис­ленных масштабных коэффи­циентов с целью предотвращения искажений изображения в режиме масштаби­рования без размытия.

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

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

Галка + выбор переменности размера пиксела

Потенциально наиболее интуитивно-понятный пользовательский интерфейс мог бы содержать галку (флажок) «Предотвращать размытие при масштаби­ровании».

Включение галки включало бы алгоритм масштаби­рования «По соседним» и одно­временно делало бы доступной дополни­тельную настройку «Размер пиксела» с двумя вариантами на выбор:

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

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

Раздельные настройки для фильтрации и целочис­ленного масштаба

Пользова­тельский интерфейс мог бы быть аналогичным интерфейсу RetroArch, в видео­настройках которого есть два булевых (вкл./выкл.) параметра:

  • «Билинейная фильтрация»;
  • «Целочисленный масштаб».

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

Такой интерфейс допускает сочетание размытия с целочис­ленным масштабом, но на практике это не имеет смысла.

Термины «билинейная фильтрация» и «целочис­ленный масштаб» могут быть недостаточно понятны непродвинутым пользователям.

Два новых пункта в линейном списке режимов масштабирования

Можно добавить два новых пункта в существующий список класси­ческих режимов масштаби­рования («По центру», «Растянуть», «Растянуть с сохранением соотношения сторон»):

  • «Предотвращать размытие (максимальное использование экрана, возможны искажения)»;
  • «Предотвращать размытие и искажения (возможны чёрные полосы вокруг изображения)».

Этот вариант пользовательского интерфейса представляет собой компромисс между понятностью для пользователя и простотой технической реализации интерфейса.

Вопросы и ответы

Это то же самое, что «Nearest Neighbour»?

Лишь частично. Результаты применения алгоритма «Nearest Neighbour» («По соседним», «Ближайший сосед») и целочис­ленного масштаби­рования одинаковы только при целочисленных масштабных коэффи­циентах — например, 2 или 3.

  • При дробных масштабных коэффи­циентах (например, 4,5 при масштаби­ровании 640×480 до 4K) «Nearest Neighbour» приводит к искажению изображения.
  • При целочис­ленном масштаби­ровании масштабный коэффи­циент всегда целочис­ленный (например, ровно 4 для случая 640×480→4K) — вне зависимости от соотношения физического и логического разрешений. Пространство, которое может остаться пустым из-за некратности разрешений, заполняется чёрным, как в режиме центрирования.
Чем это отличается от DSR/VSR?

DSR/VSR и целочис­ленное масштаби­рование изменяют размер изображения в разных направлениях, разными способами и с разными целями.

  • При использовании DSR/VSR изображение отрисо­вывается в разрешении выше физиче­ского разрешения дисплея и затем умень­шается (downscaling) до разрешения дисплея. По сути это просто сглаживание методом SuperSampling (SSAA), которое можно использовать в играх, не имеющих встроенной поддержки сглаживания этого типа.
  • При целочис­ленном масштаби­ровании изображение отрисовывается в разрешении ниже физиче­ского разрешения дисплея и затем увеличи­вается (растягивается) (upscaling) без размытия до разрешения, не превышающего разрешение дисплея при максимально возможном целочис­ленном масштабном коэффициенте.

Единственное, что объединяет DSR/VSR и целочис­ленное масштаби­рование — универсальная виртуа­лизация разрешения, прозрачная для опера­ционной системы и программ и совместимая со всеми полноэкранными программами.

Чем это отличается от «Resolution Scaling»?
Функция «Resolution Scaling» (масштаби­рование разрешения), доступная в некоторых играх, предназначена для управления масштабом встроенными средствами игры. В отличие от исполь­зования одного из предопре­делённых разрешений, она позволяет более тонко подбирать сочетание детализации и быстродействия: например, если при разрешении 2560×1440 быстродействие недостаточно, а при 1920×1080 — избыточно, то можно выбрать в игре разрешение 2560×1440 и с помощью «Resolution Scaling» уменьшить его, например, до 2400×1350. В подавляющем большинстве игр эта функция работает с размытием даже при целочис­ленном коэффи­циенте масштаби­рования разрешения. Целочис­ленное масштаби­рование без размытия свободно от потерь качества, вызываемых размытием, и при правильной реализации должно быть совместимо со всеми полноэкранными программами.
Чем это отличается от шахматного рендеринга?
Как и использование меньшего разрешения, метод отрисовки «Checkerboard Rendering» (шахматный рендеринг) позволяет повысить быстродействие. Но к масштаби­рованию шахматный рендеринг отношения не имеет: трёхмерная сцена отрисо­вывается в половинном разрешении путём просчёта пикселов, расположенных в шахматном порядке, затем цвета недостающих пикселов вычисляются усреднением цветов соседних пикселов. Такой подход подобен чересстрочной развёртке, обычно используемой в телевещании для кодирования видео, и позволяет в играх добиться качества, близкого к таковому при отрисовке в полном разрешении (например, 4K), но с почти вдвое более высоким быстродействием. При целочис­ленном масштаби­ровании без размытия полноценно просчитываются все пикселы изображения, которое затем увеличи­вается без внесения в него каких-либо изменений и вычисления каких-либо усреднённых цветов.
Чем это отличается от повышения резкости (sharpening)?
Целочис­ленное масштаби­рование без размытия не имеет отношения к повышению контурной резкости (sharpening). Целочис­ленное масштаби­рование предотвращает потери качества, обусловленные размытием, а повышение резкости призвано повысить разборчивость уже размытого изображения.
Имеется в виду отключение сглаживания?
Нет. Размытие не имеет отношения к сглаживанию (antialiasing). Сглаживание применяется при отрисовке (рендеринге) трёхмерной сцены, а размытие добавляется при увеличении уже отрисо­ванного растрового изображения как набора точек. Целочис­ленное масштаби­рование можно (и следует) использовать в сочетании со сглажи­ванием. Вы включаете сглаживание в игре, выключаете размытие при масштаби­ровании в видео­драйвере и получаете изображение Full HD на 4K-мониторе с таким же качеством, как на мониторе с физическим разрешением Full HD.
Может ли это улучшить качество 1440p на 4K-мониторе?

Нет. Для использования целочис­ленного масшта­бирования на разрешении QHD (2560×1440) нужен экран разрешением 5K (5120×2880) или 8K (7680×4320):

5120 / 2560 = 2880 / 1440 = 2,0
7680 / 2560 = 4320 / 1440 = 3,0

При использовании экрана 4K (3840×2160) максимальным логическим разрешением, при котором возможно целочис­ленное масшта­бирование, является Full HD (1920×1080):

3840 / 1920 = 2160 / 1080 = 2,0

При разрешении QHD соотношение физического и логического разрешений составляет 1,5:

3840 / 2560 = 2160 / 1440 = 1,5

Группы размером 1,5×1,5 пиксела физически невозможны. Максимальный целочисленный масштаб составляет 1,0, что эквивалентно обычному режиму центри­рования в масштабе 100% с широкими чёрными полосами вокруг изображения.

Разве без размытия пикселы не будут заметны?

Это не всегда так, а когда так — не обязательно плохо.

  • Заметность пикселов зависит от сочетания разрешения дисплея, разрешения исходного изображения, расстояния до экрана и качества сглаживания в игре. Например, в разрешении Full HD на 4K-мониторе диагональю 24″ на типичном расстоянии 50-60 см от экрана при качест­венном сглаживании в игре логические пикселы почти неразличимы, и размытие лишь бессмысленно снижает резкость. Автор этих строк регулярно играет в FHD-игры с помощью IntegerScaler и смотрит FHD-видео с помощью MPC-HC на 24″ 4K-мониторе Dell P2415Q. Теперь представьте себе масштаби­рование 4K в 8K или 8K в 16K в тех же условиях. Плотность точек, соответствующая 8K при диагонали 27″, имеет место уже сейчас в 13,3″ 4K-ноутбуках.
  • Уместность заметной пикселизации зависит от типа исходного изображения: например, для пиксельной графики (pixel art) пикселизация — задуманный эффект, и размытие искажает авторский замысел.
Это только для пиксельной графики, эмуляторов и старых игр?
Нет. Другой важнейший сценарий использования целочис­ленного масштаби­рования — повышение быстродействия в современных трёхмерных играх в разрешении Full HD на 4K-мониторе без связанных с размытием потерь качества по сравнению с мониторами с физическим разрешением Full HD.
Но мне нравится размытие!
Без проблем. Целочис­ленное масштаби­рование задумано как включаемо-выключаемая (опциональная) функция. Если вам нравится размытие, вы сможете просто не включать целочис­ленное масштаби­рование в настройках видео­драйвера или дисплея.
Разве в OpenGL и DirectX это не встроено?
В программных интерфейсах отрисовки трёхмерной графики типа OpenGL (режим GL_NEAREST) и DirectX алгоритм «Nearest Neighbour» действительно доступен, но предназначен для масштаби­рования текстур. Хотя разработчики отдельно взятой игры могут косвенно использовать эту возможность для целочис­ленного масштаби­рования в конкретной игре, масштаби­рование текстур не имеет прямого отношения к универ­сальному полно­экранному масштаби­рованию, прозрачному для операционной системы и программ.
Зачем 4K-монитор, если играть всё равно в Full HD?
  • Компьютеры используются не только для игр:

    • комфорт при любой работе с текстом (просмотр веб-страниц, текстовые редакторы, программирование, веб-разработка), схемами, чертежами, графиками на 4K-мониторе несоизмеримо выше, чем на FHD-мониторе, благодаря увеличенной детализации, невидимой межпиксельной сетке и значительно сниженному «мельтешащему» попеременному мерцанию субпикселов;
    • более высокое физическое разрешение позволяет с более высоким качеством просматривать фотографии;
    • более высокое физическое разрешение позволяет увеличить глубину (разрядность) цвета без мерцания — путём отображения усреднённых оттенков с помощью соседних пикселов, отображающих слегка разные оттенки.
  • Даже если компьютер достаточно быстр для запуска игр в разрешении 4K, не все игры работают в этом разрешении правильно: например, в «Cities XL Platinum» элементы управления становятся слишком мелкими, а в «Bionic Commando Rearmed» не видны элементы головоломок на мини-уровнях «Hack enemy network».
  • Чем выше физическое разрешение, тем полнее может исполь­зоваться экран при целочис­ленном масштаби­ровании. Например, при масштаби­ровании 320×240 до Full HD теряется (заполняется чёрным) 1/9 (11%) высоты экрана (1080/240 = 4,5), а на 4K-дисплее коэффи­циент составляет ровно 9, и изображение занимает всю высоту экрана. На 8K-дисплеях то же будет применимо к разрешению 640×480; кроме того, можно будет без потерь качества или экранного пространства использовать любое из типичных разрешений: HD (1280×720, 6x), FHD (1920×1080, 4x), QHD (2560×1440, 3x), 4K (3840×2160, 2x).
Это задача дисплея или видеокарты?
Поддержка масштаби­рования видео­картой не противоречит поддержке со стороны дисплея, и наоборот. Даже если новые дисплеи начнут поддерживать масштаби­рование без размытия, владельцам существующих дисплеев это не поможет, а масштаби­рование средствами видео­драйвера — поможет. Но масшта­бирование видеокартой недоступно, если источник сигнала — не компьютер, а, например, игровая приставка или видео­плеер, тогда неизбежно используется собственное масштаби­рование монитора или телевизора.
Разве это не задача операционной системы?
У Windows нет доступа к содержимому экрана в реальном (exclusive) полно­экранном режиме. Для возможности реализации полно­экранного масштаби­рования средствами Windows нужно было бы принци­пиально изменить модель видео­драйверов Windows (WDDM), и даже в этом случае не исключалась бы дополни­тельная задержка (lag) по сравнению с масштаби­рованием собственными средствами видеодрайвера.
Не лучше ли использовать DLSS?

Метод DLSS не является универсальным решением:

  • доступен только на современных видеокартах nVidia;
  • требует индивидуальной поддержки со стороны каждой конкретной игры;
  • может приводить к разнообразным непредсказуемым артефактам изображения;
  • предназначен для трёхмерных игр и неприменим к играм других типов — например, основанным на пиксельной графике (pixel art).

Прогресс

AMD — поддержка для GCN+ под Windows 10

В видеодрайвере AMD для Windows целочис­ленное масштаби­рование без размытия доступно начиная с Radeon Software 2020 (19.12.2) () для Windows 10. Функция доступна для видеокарт многих предыдущих поколений начиная с архитектуры GCN (2012), что является выгодным отличием от реализаций Intel и nVidia.

Включить целочисленное масштабирование можно установкой параметра «Integer Scaling» в значение «Enabled» на странице «Display», открываемой выбором одноимённого пункта меню, открывающегося при нажатии кнопки с пиктограммой в виде шестерёнки (⚙️) в верхней-правой части окна Radeon Software. Кроме того, можно переопределить режим масштабирования для отдельно взятой игры в свойствах игры на странице «Gaming».

Совместимо с повышением резкости и VSR

Есть информация, что в реализации AMD целочисленное масштабирование можно использовать совместно с повышением резкости (RIS) и VSR, что наряду с поддержкой видеокарт предыдущих поколений является преимуществом по сравнению с реализацией nVidia.

Использование VSR совместно с целочисленным масштабированием потенциально позволяет, например, полностью использовать высоту экрана разрешением Full HD при логическом разрешении 320×240 (чистое соотношение — 4,5) ценой некоторого размытия границ пикселов в результате превращения физического разрешения Full HD в виртуальное 4K (соотношение — ровно 9).

Ограничения

  • Один из пользователей сообщил о недоступности целочис­ленного масштаби­рования под Windows 7. Но сам видеодрайвер существует и в версии для Windows 7. Кроме того, в разделе «Известные проблемы» («Known Issues») примечаний к выпуску Radeon Software 2020 20.1.1 говорится, что целочис­ленное масштаби­рование может быть недоступно на некоторых системах под управлением Windows 7, из чего можно сделать вывод, что функция в драйвере AMD для Windows 7 реализована и в большинстве случаев должна работать.
  • В примечаниях к выпуску Radeon Software 2020 19.12.2 говорится, что в некоторых случаях при использовании целочис­ленного масштаби­рования возможно мерцание.
  • Некоторые пользователи сообщают, что при видеозахвате содержимого экрана (например, с помощью программы OBS) при включённом целочис­ленном масштаби­ровании захватывается область отмасшта­бированного изображения в верхнем-левом углу экрана, размер которой соответствует исходному (до масшта­бирования) разрешению, при этом остальная часть кадра в видеозаписи чёрная.
  • Один из пользователей видеокарты Radeon RX 5700 XT () сообщил, что при использовании Radeon Software 19.12.3 целочис­ленное масштаби­рование работает в играх, но не работает в самой Windows. В то же время у пользователя Radeon RX Vega 64 () при использовании Radeon Software 19.2.2 и 4K-телевизора TCL S425 проблема не наблюдается.
  • Один из пользователей видеокарты Radeon RX 480 () сообщил, что имеют место задержка (лаг) и падение быстродействия при использовании целочис­ленного масштаби­рования в сочетании с вертикальной синхронизацией (VSync) и разрешениями, при которых над и под отмасшта­бированным изображением выводятся чёрные полосы (letterboxing). Проблема имеет место и в режиме центрирования, в том числе с предыдущей версией драйвера, не имевшей поддержки целочис­ленного масштабирования.
  • Один из пользователей сообщил, что целочис­ленное масштаби­рование не работает с видеокартой Radeon HD 7950 (), хотя формально возможность для этих видеокарт поддерживается и параметр «Integer Scaling» в настройках Radeon Software доступен.

Опросы

Реализации функции в драйвере AMD предшествовали два опроса, проводившихся в течение 2019 года. В обоих опросах пункт «GPU Integer Scaling Support» («Поддержка целочис­ленного масштаби­рования средствами видеокарты») был на первом месте по количеству голосов (около 50% голосов), и количество голосов продолжает расти.

AMD — работа по реализации для ядра Linux 5.4

Идёт работа по реализации поддержки целочис­ленного масштаби­рования без размытия в рамках специфичную для графики AMD части ядра Linux находящейся в разработке версии 5.4, выпуск стабильной версии которой запланирован на конец 2019 года.

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

Intel — поддержка для процессоров Ice Lake (Gen10) под Windows 10

Анонс и статья

Поддержка полно­экранного целочис­ленного масштаби­рования без размытия доступна в видео­драйвере Intel для Windows начиная с бета-версии 25.20.100.7155 (). Стабильная версия 26.20.100.7212 вышла . Изначально поддержку возможности Intel анонсировала . на сайте Intel опубликовали статью с подробностями.

Функция доступна с помощью параметра «Retro Scaling» в программе «Центр управления графикой Intel» (Intel Graphics Command Center). У параметра три возможных значения:

  • Off
  • Scaled width
  • Fixed width
Скриншот параметра «Retro Scaling» в Intel Graphics Command Center

«Scaled width» означает исполь­зование алгоритма масштаби­рования «По соседним», а значение «Fixed width» соответ­ствует сочетанию алгоритма «По соседним» с исполь­зованием только целочис­ленных масштабных коэффи­циентов для предот­вращения искажений — т. е. собственно целочис­ленное масштаби­рование (integer scaling).

Системные требования

Требуется графическое ядро 11-го поколения (Gen11), которое будет исполь­зоваться в процессорах Intel 10-го поколения (Ice Lake). Выход первых процессоров Ice Lake ожидается в конце , первыми устройствами будут ноутбуки.

Для работы видеодрайвера Intel и программы «Центр управления графикой Intel» требуется операционная система Windows 10 версии 1709 или выше.

Аппаратная поддержка и быстродействие

Видеоядра Intel начиная с 11-го поколения имеют аппаратную поддержку алгоритма масштаби­рования «По соседним» («Nearest Neighbour»). Благодаря этому включение масштаби­рования без размытия средствами видеодрайвера Intel не будет оказывать отрицательного влияния на быстродействие.

В видеоядрах Intel предыдущих поколений (10-го и ниже) аппаратная поддержка «Nearest Neighbour», пригодная для полно­экранного масштаби­рования, отсутст­вовала. Поэтому поддержка возможности для них была бы возможна только на чисто программном уровне, из-за чего реализация была бы нетривиальной, а быстродействие — низким.

Поддержка целочисленных и дробных масштабов

Доступны оба варианта масштаби­рования без размытия:

  • масштабирование с целочисленным коэффи­циентом, одинаковыми размерами пикселов и без искажений изображения, но с возможными чёрными полосами вокруг изображения;
  • алгоритм «По соседним» с максимально полным использованием площади экрана ценой некоторых искажений изображения из-за неодинаковых размеров соседних пикселов.

Их можно включить с помощью значений «Fixed width» и «Scaled width» параметра «Retro Scaling» соответственно.

Минимальное разрешение

Минимальное разрешение, которое будет поддерживаться первой реализацией — 640×480. Поддержка более низких или заданных пользователем разрешений может появиться в последующих версиях графического ПО Intel.

nVidia — поддержка для поколения Turing под Windows 10

Поддержка целочис­ленного масштаби­рования доступна в Windows-драйвере nVidia начиная с версии 436.02 от 20 августа 2019 года, но только при использовании видеокарт nVidia поколения Turing (RTX и GTX 16*) и только в Windows 10 начиная с версии 1803 (Redstone 4) от апреля 2018 года. Под Windows 7 функция недоступна, хотя сам драйвер доступен. Текущая реализация позицио­нируется как экспери­ментальная и имеет бета-статус.

Функция также доступна в видеодрайвере для профессиональных видеокарт nVidia Quadro начиная с версии R440 U1 (440.97) ().

Функция включается выбором пункта «Целочис­ленное масштаби­рование» («Integer scaling») в списке «Дисплей» → «Регулировка размера и положения рабочего стола» → «Масштаби­рование» → «Выберите режим масштаби­рования» («Display» → «Adjust desktop size and position» → «Scaling» → «Select a scaling mode») в панели управления nVidia. При этом для масштаби­рования средствами видеокарты необходимо выбрать пункт «ГП» («GPU») в выпадающем списке «Выполнить масштаби­рование на» («Perform scaling on»).

Ограничения

Функция недоступна:

  • в режиме «Surround»;
  • при объединении нескольких дисплеев (tiled displays);
  • при использовании пользова­тельских разрешений;
  • при цветовой субдискретизации 4:2:0 (YUV420) (поддерживаемые цветовые форматы: RGB, YUV444, YUV422);
  • при активной функции DSR;
  • при активной функции повышения резкости nVidia Image Sharpening (441.08+, );
  • на ноутбуках с гибридной (MSHybrid) графической подсистемой (встроенное графическое ядро + дискретная видеокарта), в которых настройками экрана управляет встроенное графическое ядро. По некоторым данным, одним из таких ноутбуков является MSI GS65 Stealth 9SG, сочетающий видеоядро Intel UHD Graphics 630, встроенное в процессор Intel i7-9750H, и мобильную дискретную видеокарту nVidia GeForce RTX 2080. По некоторым данным, ограничение не должно проявляться при использовании внешнего дисплея вместо собственного экрана ноутбука.

Кроме того, согласно примечаниям к выпуску (release notes), смена разрешения при сочетании режима целочис­ленного масштаби­рования с режимом расширенного динами­ческого диапазона (HDR) может приводить к «падению» системы («синему экрану смерти», или BSOD) или зависанию компьютера.

Согласно nVidia, несовместимость с HDR и пользовательскими разрешениями — непреодолимое фундаментальное ограничение программируемого фильтра, использованного для реализации целочис­ленного масштаби­рования, и это невозможно исправить как минимум для видеокарт nVidia поколения Turing. Представители nVidia говорят, что целочис­ленное масштаби­рование невозможно задействовать параллельно с так называемым Scan Out Compositor, используемым, например, для реализации DSR или пользовательских разрешений.

Недоступно для видеокарт предыдущих поколений

Для видеокарт предыдущих поколений в Windows-версии драйвера nVidia GeForce функция недоступна. 25 марта 2019 года представитель nVidia сообщил, что реализация масштаби­рования без размытия в видеодрайвере для Windows не планируется, признав при этом, что сам алгоритм тривиален.

В качестве причины называется невозможность такой реализации, которая не потребовала бы постоянного сопровождения («ongoing continuous support») на фоне регулярных изменений WDDM-спецификации видеодрайверов в Windows 10.

При этом представители nVidia игнорируют вопросы о том, не требует ли такого же постоянного сопровождения существующая технология DSR, тоже реализующая виртуализацию разрешения, прозрачную для операционной системы и полноэкранных программ.

nVidia — ограниченная поддержка в Linux-драйвере

В видеодрайвере nVidia GeForce для операционных систем Linux, Solaris и FreeBSD начиная с версии 384.47 () доступен алгоритм масштаби­рования «По соседним»Nearest Neighbour») в рамках функциональности фильтров трансформации (transform filter). Включается командой следующего вида:

nvidia-settings -a CurrentMetaMode="DP-1: 3840x2160_60 {ViewPortIn=1920x1080, ViewPortOut=3840x2160, ResamplingMethod=Nearest }"

где:

  • DP-1 — видеовыход, к которому подключён монитор;
  • 3840x2160 — разрешение сигнала, получаемого монитором; должно быть равно физическому разрешению монитора, иначе будет размытие из-за масштаби­рования средствами монитора;
  • ViewPortIn — размер области отрисовки (рендеринга) в логических точках (пикселах);
  • ViewPortOut — размер изображения в физических точках после масштаби­рования;
  • ResamplingMethod — алгоритм масштаби­рования (значение по умолчанию — Bilinear).

Результат масштаби­рования может быть меньше физического разрешения монитора. Например, для вывода изображения размером 1280×720 с двукратным увеличением (пикселами 2×2) по центру экрана монитора с физическим разрешением 3840×2160 нужна следующая команда:

nvidia-settings -a CurrentMetaMode="DP-1: 3840x2160_60 {ViewPortIn=1280x720, ViewPortOut=2560x1440+640+360, ResamplingMethod=Nearest }"

где 640 и 360 — сдвиги в физических пикселах от верхнего левого угла по горизонтали и вертикали соответственно, необходимые для центрирования отмасшта­бированного изображения.

Команды можно исполнить в терминале, который можно открыть сочетанием клавиш Ctrl+Alt+T.

Программная реализация и быстродействие

На аппаратном уровне в видеокартах nVidia реализована только билинейная интерполяция с размытием, поэтому алгоритм масштаби­рования «По соседним» реализован программно и задействует часть вычислительных ресурсов графического процессора. Теоретически это может несколько снизить максимальное быстродействие видеокарты. На практике быстродействие примерно одинаково вне зависимости от типа интерполяции: «По соседним» (Nearest) или билинейная (Bilinear).

К сожалению, в некоторых играх к серьёзному падению быстродействия приводит сам факт использования фильтра трансформации. Например, в игре «F1 2017» в разрешении 1280×720 при использовании фильтра трансформации быстродействие ниже, чем в разрешении 1920×1080 в обычном полноэкранном режиме. При масштаби­ровании игры при её работе в оконном режиме быстродействие заметно выше, чем при полноэкранном масштаби­ровании средствами фильтра трансформации, но всё равно ниже, чем в обычном полноэкранном режиме.

Только оконные и псевдополноэкранные игры

К сожалению, функция работает только с оконными и псевдополноэкранными (выводимыми поверх рабочего стола ОС) играми. К реально полноэкранным играм, переключающим разрешение монитора (например, «Euro Truck Simulator 2») масштаби­рование не применяется.

При этом во многих псевдополноэкранных играх функция работает неправильно: изображение отрисовывается в разрешении, выбранном в настройках игры (например, 1920×1080), затем масшта­бируется с размытием до разрешения ViewPortOut (например, 3840×2160), затем из него вырезается верхняя-левая или нижняя-левая часть, соответствующая размеру ViewPortIn (например, 1920×1080), и лишь эта часть выводится на монитор.

Проблема не зависит от конкретного окружения рабочего стола (desktop environment) и проявляется как минимум в Unity (Ubuntu 17.04) и GNOME (Ubuntu 17.10).

Чтобы при работе в оконном режиме была видна максимально возможная часть полезного пространства окна игры, можно включить автоматическое скрытие панели задач (Dock) в настройках Ubuntu (Параметры → Панель задач → Автоматически скрывать панель задач), а для автоматического скрытия верхней панели использовать GNOME-расширение Hide Top Bar. Для минимизации высоты заголовочной панели окна игры имеет смысл переключиться на системный масштаб 100%.

Мышь и разрешение

Сопутствующая проблема — даже если результат отрисовки игры виден целиком, её меню, кнопки и другие элементы управления могут быть недоступны для наведения указателя и щелчков мышью, если не переключиться на нужное логическое разрешение (ViewPortIn) в настройках игры до включения Nearest-режима в видеодрайвере.

Это связано с тем, что по умолчанию игра может запускаться в выходном (ViewPortOut) разрешении видеодрайвера вместо логического (ViewPortIn). Это же может приводить к серьёзному снижению быстродействия: игра будет сначала отрисовываться в высоком разрешении, затем масштаби­роваться в низкое, а затем — снова в высокое с интерполяцией «По соседним».

Официальные комментарии nVidia

Один из разработчиков Linux-драйвера Аарон Платтнер (Aaron Plattner) считает, что проблема не в драйвере, а в том, что игры неправильно трактуют данные, предоставляемые программной подсистемой RandR.

Он признаёт, что, учитывая количество неправильно работающих игр, имело бы смысл универсальное решение, не зависящее от конкретной игры. В качестве возможной реализации такого решения он упоминает гипотетическую LD_PRELOAD-библиотеку, которая могла бы перехватывать вызовы функций библиотеки libXrandr и подменять результаты. При этом он не сообщает, планирует ли сама nVidia разрабатывать и распространять такое решение вместе с видеодрайвером.

Проверенные игры

В таблице — результаты проверки некоторых игр в виртуальном разрешении Full HD (1920×1080) на мониторе Dell P2415Q с физическим разрешением 4K (3840×2160) в операционной системе Ubuntu версий 17.10 и 18.04.

Linux — ограниченная поддержка в XRandR

Системная Linux-программа XRandR для управления графической подсистемой позволяет включить масштаби­рование без размытия вне зависимости от производителя графического чипа. Функция доступна начиная с версии 1.5.1 () и включается такой командой:

xrandr --output DP-1 --scale 0.5x0.5 --filter nearest

где:

  • DP-1 — условное обозначение видеовыхода, к которому подключён монитор;
  • 0.5 — понижающий коэффи­циент: например, 0.5 на 4K-мониторе (3840×2160) включит виртуальное разрешение Full HD (1920×1080);

Увидеть обозначение видеовыхода можно в панели управления видеокартой либо в списке, выводимом командой:

xrandr | grep " connected " | awk '{ print$1 }'

Во многих дистрибутивах Linux, в том числе Ubuntu 19.10, по-прежнему по умолчанию поставляется устаревшая версия XRandR 1.5.0. Эта версия поддерживает масштаби­рование, но не поддерживает параметр --filter, поэтому отключение размытия в ней недоступно. При попытке использования параметра --filter выводится такое сообщение об ошибке:

xrandr: unrecognized option '--filter'

Установка экспериментальной версии XRandR

Внимание: установка экспериментальных версий фундаментальных системных программ в Linux может повлиять на работо­способность всей системы, отдельных её функций или сторонних программ.

Установить экспериментальную версию XRandR можно такой последовательностью команд:

git clone git://anongit.freedesktop.org/xorg/app/xrandr xr
cd xr
./autogen.sh
sudo make install

Перед этим может потребоваться установить дополнительные пакеты или экспериментальные версии уже установленных пакетов. Например, в только что установленной Ubuntu 18.10 достаточно установить пакеты git, xorg-dev, xutils-dev, autoconf следующими командами:

sudo apt install git
sudo apt install xorg-dev
sudo apt install xutils-dev
sudo apt install autoconf

Только оконные и псевдополноэкранном игры

Совместимость с играми и ограничения аналогичны таковым у фильтров трансформации в Linux-драйвере nVidia: масштаби­рование возможно только для игр, работающих в оконном или псевдополноэкранном (borderless) режиме.

Некоторые игры в псевдополноэкранном режиме выводятся в усечённом виде: например, при внутриигровом разрешении Full HD на 4K-мониторе обычно видна нижняя левая или верхняя левая четверть изображения. В реальном (exclusive) полноэкранном режиме видна ещё меньшая часть изображения, т. к. не только часть исходного изображения масшта­бируется до физического разрешения монитора, но и монитор переключается в меньшее разрешение.

Linux — поддержка в Proton

Proton начиная с версии 4.11-10 () поддерживает целочис­ленное масштаби­рование без размытия. Включить можно с помощью переменной среды:

WINE_FULLSCREEN_INTEGER_SCALING=1

Proton — улучшенная версия WINE. Proton используется в функции “Steam Play”, позволяющей запускать Windows-игры в Linux напрямую через программу-клиент Steam без необхо­димости ручной установки и настройки WINE.

По сравнению с фильтрами трансформации nVidia и масштаби­рованием средствами XRandR, встроенное в Proton целочис­ленное масштаби­рование потен­циально удобнее:

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

Мониторы — анонсировано для EVE Spectrum

Поддержка целочис­ленного масштаби­рования без размытия планируется в компью­терном мониторе, разраба­тываемом в рамках проекта EVE Spectrum с учётом обратной связи от сообщества.

Такое масштаби­рование планируется включить по умолчанию, о чём сказано в разделе «Feature requests» на странице обновлённых технических характеристик от .

Первая модель монитора будет иметь разрешение 2560×1440 (QHD) при диагонали 27″. ЖК-матрица — LG 27GL850 типа «Nano IPS» со временем отклика 1 мс и частотой обновления до 165 Гц. Поддер­живается технология переменной частоты обновления (variable refresh rate, VRR) «FreeSync 2» с минимальной частотой 48 Гц.

Ориентировочный срок выпуска монитора — 1-й или 2-й квартал .