Нет, это не сон.
Если что, на скриншоте — горизонтальный rgb. Если у вас другая субпиксельная раскладка — попробуйте повернуть на 90, 180 или 270 градусов.
На днях случайно заметил опцию в xrandr --scale
. По сути, это делает виртуальный монитор с разрешением помноженным на физическое. И тут в голове завертелось.
Поставил свежий picom, у него как раз есть опция –window-shader-fg для экспериментального glx (в egl не завелось). Ставлю масштаб дисплея в 3x3. Этакий виртуальный HiDPI. К сожалению, билинейное работает максимум на 2x, начиная с 3x — скатывается в ближайшее. Впрочем, другого и не надо. Как я надеялся, ускорение не отваливается (прям как я мечтал — виртуальный HiDPI монитор, только тут — сразу из коробки).
Подсовываю Picom шейдер, который выполняет размытие — по сути, ту самую lcd фильтрацию, как у freetype. Хотя что-то не так. Если freetype lcdfilter=lcdlight (базовая коробка 3x, в теории — для субпиксельной больше не надо), то шрифты — чётче некуда, хотя с default тоже нормально. У меня — если с коробкой 3x3, то по чёткости недотягивает даже до default.
Или дотягивает? Непонятно.
Пока игрался, решил засунуть и другие фильтры:
- коробка 3x3 в сером (при технике kawase — даже смысла в делении на поосевые этапы нет, и так и так 4 пиксела на один);
- линейный шириной 5 и пара синусов (один с точечным сэмплированием на 5, другой — интегрированием, шириной 7).
Требуются OpenGL 3.3 + GLSL 3.3.
А ещё железо. Хорошее. Возможно игровое. У меня проц с Intel HD 3000, попробовал на нём glxgears. При нормальной работе без масштаба и в исходном размере 300x300 выдаёт 8000fps. После масшатаба (ещё без picom и вообще композитора) упал до 4000-5000, а как развернул… 15fps (steam чтоли поставить… дискретку ещё не запускал). Хотя тут ещё тротлинг из за перегрева. Если на холодном железе — 30fps может выдать, хотя со временем падает.
Picom — если без шейдера и размытия, то ещё нормально (тени почти не нагружают). С шейдером — смотря сколько окон в поле зрения. Вообще, он рассчитан на то, чтобы быть экранным, а не оконным. Там даже есть опция, чтобы пропускать 1/9 пикселей при одном проходе и 4/18 при двух. Сейчас — если её включить, то окна видны только если координаты кратны 3. В общем, вероятность видимости окна с этой опцией 1/9.
Ссылка на шейдер:
https://github.com/yshui/picom/wiki/Shader-Shop#fullscreen-antialiasing-subpixel-filtering-support
>>> Просмотр (1366x768, 264 Kb)