LINUX.ORG.RU

Субпиксельное... и полноэкранное!.. тёплый ламповый графониум для X11 (ШГ или нормально?)

 fsaa, , ,


1

1

Нет, это не сон.

Если что, на скриншоте — горизонтальный 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)



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

Если что, на скриншоте - горизонтальный rgb. Если у вас другая - попробуйте повернуть на 90, 180 или 270 &deg.

Другая что?

hobbit ★★★★★
()

Напоминает ранний антиалиасинг freetype. Как по мне, так более ШГ, чем сейчас.

Хотя - что-то не так. Если freetype lcdfilter=lcdlight (базовая коробка 3x, в теории - для субпиксельной больше не надо), то шрифты - чётче некуда, хотя с default тоже нормально. У меня - если с коробкой 3x3, то по чёткости недотягивает даже до default.

Потому что кроме антиалиасинга еще есть хинтинг, который старается подогнать форму глифа под пиксельную решетку. Хотя сейчас его выпиливают отовсюду, откуда могут.

squareroot ★★★★
()

Да, действительно, при повороте на 90 шрифты более чёткие.

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

По оформлению: не тепло и не лампово. Конечно чувствуется значительный прогресс... по сравнению с гном3. Так что в целом хреново. Не понятен метод переключения окон и чем занята половина ширины панели.

kirill_rrr ★★★★★
()
Ответ на: комментарий от squareroot

Хотя сейчас его выпиливают отовсюду, откуда могут.

А чем его предлагается заменить? Нет ведь других механизмов для классических субпикселей в треть квадрата и нет никаких мониторов без субпикселей.

kirill_rrr ★★★★★
()

В крысе настолько тупая скриншотилка, что захватывает окно самой скриншотилки? Бгг.

ox55ff ★★★★★
()
Ответ на: комментарий от squareroot

Хотя сейчас его выпиливают отовсюду, откуда могут.

Наоборот жеж - только совсем недавно впилили полноценный, до недавних пор запатентованный хинтинг.

token_polyak ★★★★
()
Ответ на: комментарий от squareroot

Ну да. Ещё бы линии векторной графики подгонялись.

Но… я не только про вертикальное. Заметил, некоторые специально хинтинг отключают, возможно целиком. Хотя, по моему, даже так лучше. А вообще - такое ощущение, что дело в исходном материале, на который freetype накладывает фильтр.

nick87720z
() автор топика
Ответ на: комментарий от r0ck3r

я вообще ничего не понял

ТС напердолил иксы и получил типичное иксовое ШГ но с видом сбоку на 1366x768 в 2022 году.

Единственное что интересно на скрине – приятная тема оформления в XFCE.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

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

Минимальный цветонесущий элемент изображения обречён занимать несколько позиций, хотя передвигается с точностью до одной. Хотя с некоторыми, типа 2x2 {RB,BG} ещё сложнее (там два синих без чёткой позиции).

https://entropymine.com/imageworsener/subpixel/

По оформлению: не тепло и не лампово.

Ну естественно, не в нём дело. А в графонии, чтоб как на CRT (ну или почти). Вот бы ещё под CRT аналогичное, но там, мне кажется, даже приличная видюшка вспотеет (там полная тригонометрия).

nick87720z
() автор топика
Последнее исправление: nick87720z (всего исправлений: 1)
Ответ на: комментарий от nick87720z

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от hobbit

Субпиксельная раскладка. Но это только для вариантов - bgr и vrgb/vbgr (для квадратов и треугольников нужно полностью новую схему сэмплирования).

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

На всякий случай - убедитесь, что скрин отображается точно в 1x1 к вашему монитору. Я заметил, что например, хром так не делает. А вот то, что на webkit-gtk (surf) делает как надо. Лис не проверял.

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

Ну вы извращенец…

Уж получше адвайты, которая дефолт в Calculate - потому-что компактнее.

Извращенческое - то, что создано под извращёнными настроениями. Ни виндовая, ни маковская, ни даже материал (ванильные) к этому не относятся.

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

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

nick87720z
() автор топика
Ответ на: комментарий от chenbr0

У всех свои критерии. Кто-то специально хинтинг вырубает, предпочитая неиспорченную геометрию. Вот у меня так же, хотя тот же freetype без хинтинга, по моему, лучше. А может и также (ну, почти).

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

Не понятен метод переключения окон и чем занята половина ширины панели.

Внизу панель с новым xfce4-docklike-plugin,я её не показал. А наверху - справа на лево:

  • приложения, places с корзиной
  • Меню окна (windowck), меню окон, заголовок и кнопки окна (опять windowck)
  • дальше как обычно (раскладка, трей и т.д.) хотя не совсем - добавил кнопку xfce4-dict, но не простую, а чтоб из буфера обмена (и без повторных запусков - тоже типа апплета, только полезнее, чем свой панельный).

Вообще, plank более отточен, чем этот docklike, но почему-то bamfdaemon стал падать, а пересборка glib..gtk и самого bamf не помогают (хоть мир пересобирай - кстати, как раз обновление glibc).

nick87720z
() автор топика
Последнее исправление: nick87720z (всего исправлений: 1)
Ответ на: комментарий от kirill_rrr

Конечно, уровень детализации нельзя повысить, но можно повысить гладкость. Похожая проблема - при выборе фильтра для ресайза - усреднение, билинейное или бикубическое (как вариант - косинус). Баланс между гладкостью и чёткостью.

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

nick87720z
() автор топика

Много телодвижений, picom под крысой, а шрифты, как шрифты, ничем не лучше стандартных настроек. Hinting: Slight, Sub-pixel order: RGB

dmitry237 ★★★
()

(ШГ или нормально?)

Радужное ШГ. Уверен, светлый текст на тёмном фоне с таким сглаживанием будет выглядеть ещё хуже.

CrX ★★★
()

Тут не оценят. Тут вообще сначала был консенсус что сглаживание — зло и рулят растровые шрифты, а потом, после смерти растровых, возник консенсус что сглаживание просто не нужно, вообще никому, нужен 4к монитор каждому ноутбуку, а нищеброды с FullHD или меньше должны себя заставить и перестать ими быть и купить таки себе Мак. Потому что тут до сих пор консенсус что идеальный Линукс с идеальными шрифтами на идеальном железе с идеальной матрицей это Макбук с МакОС.

Так что ты не обижайся на то что тебе сейчас расскажут что Ш у тебя Г и Р растут из Ж и вообще, купи нормальный монитор. Главное чтобы твоим глазам нравилось, моим например тоже нравится, у меня уже десяток с лишним лет настроено субпиксельное сглаживание, я привык и менять свой FullHD телевизор с MVA матрицей на современный монитор я не хочу. У него большая диагональ, FullHD даёт устраивающие меня «крупные» значки и элементы, я не сижу уткнувшись в него впритык, так что отдельных пикселей не вижу.

Ну и мне кажется (IMHO) скриншот не может передать «субпиксельную магию», так как пиксель — минимальный захватываемый элемент, а не субпиксель. Поэтому на мониторах с другим разрешением и\или другой организацией пикселей люди будут видеть не то что видишь ты, а то что «Рабинович напел». И им конечно это не понравится.

Jameson ★★★★★
()
Ответ на: комментарий от nick87720z

хром так не делает. А вот то, что на webkit-gtk (surf) делает как надо. Лис не проверял.

Гимп. Браузеры ещё и не вращают.

Ни виндовая, ни маковская, ни даже материал (ванильные) к этому не относятся.

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от nick87720z

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

Насчёт шрифтов - спорно, тут не может быть идеального варианта кроме готового растрового шрифта подогнанного под этот монитор. Лично мне кажется получился абсолютно стандартный вариант.

kirill_rrr ★★★★★
()
Ответ на: комментарий от dmitry237

Захотелось, чтоб не только для шрифтов.
+1, у меня такие же настройки, но я бы ещё добавил lcdfilter: lcdlight (в GUI такого нет, нужно в настройки fontconfig лезть).

nick87720z
() автор топика
Ответ на: комментарий от CrX

Если у вас субпиксельная раскладка монитора - не всписке поддерживаемых fontconfig/freetype (горизонтальное/вертикальное RGB/BGR), то у правильного отображения у вас не будет, к сожалению. Ну и разумеется, BGR - тот же RGB, но на 180deg. Если их перепутать, то… в общем ничего хорошего :D.

nick87720z
() автор топика
Последнее исправление: nick87720z (всего исправлений: 1)
Ответ на: комментарий от Jameson

возник консенсус что сглаживание просто не нужно, вообще никому, нужен 4к монитор каждому ноутбуку

Камон, этой дезе два с половиной года уже, бёрди наверное где-то с новыми набросами бегает.

Или луддитам даже бред нужен бородатый, с выдержкой?

token_polyak ★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от Jameson

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

Нищеброды оценят (я… так думаю ^_^ ;D). Хотя конечно, железо должно соответствовать разрешению. Вот сейчас я попробовал виртуальное 4k. Конечно, будь у меня реальный 4k монитор, то и шейдер не понадобился бы, тогда и были бы стабильные 15fps вместо 2..5 даже на Intel HD 3000.

А ещё - смотрел я цены на такие мониторы, у них цена как у целого компа (или самого дешового ноута - но такой ноут ещё надо найти, около 30..35к).

P.S. Запросы должны оправдываться. Разумеется, то, что у меня, это не для работы, а так - подразнить кого-нибудь замыленной ретиной :D (а вот если тоже самое, да под самим 4k, ну или хотя бы 1080p, что всяко больше 768p, которые у меня… o_O).

P.S2. А, ну да. Теперь то же самое да под самим 4k. Ещё монитор с LCD-раскладкой не в списке freetype - что-нибудь 2x2 или треугольное (что угодно ближе к эталонному CRT), разумеется с адаптированным фильтром. Чтоб совсем поднять потолок, а наконец было бы оправдание «нужна игровая карта, чтоб запустить ворд» :D.

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

Гимп. Браузеры ещё и не вращают.

И правда, «Открыть из сети». Но почему-то гимп не может сохранить. До этого ещё пытался gpicview <(curl https://...png), затем gpicview <(file https://...png), оба одинаково никак.

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

Как я понимаю, качество ограничено качеством даунсэмплинга. Когда-то я делал скрипт на imagemagick, который любое разрешение - сначала приводит к размеру в субпикселях (множитель 3x1 к пиксельному для гор. RGB), а потом - тот же фильтр.

Вот только фильтр - никакая не конволюция не бокс, а самый что ни на есть FFT. Даже бокс не даёт такой детализации, причём я не припомню, чтоб после такого была радуга.

Использовал для своих обоев. Конечно, нагрузка и время ресайза - заоблачные (там монитор 1600x900).

А если разбирать проблему субпиксельной графики до основания - проблема только с линиями, ширина которые после всего масштаба - меньша одного пиксела. Идеальное, как мне кажется, решение - искать такие области и размывать до ровно одного пиксела.

Однако, такая проблема решила бы не только субпиксельную графику, но и обычную - те же гаусс, синус, синк - просто неразборчивые версии того, что я описал (т.е. желательно, чтоб расширяли только то, что нужно, а они расширяют всё, приводя к замыливанию).

nick87720z
() автор топика
Ответ на: комментарий от r0ck3r

Ага, и я тоже. Есть смутное ощущение, что вся эта простыня посвящена шрифтам, но ведь не может же такого быть?

Dog ★★★
()
Ответ на: комментарий от nick87720z

Если у вас субпиксельная раскладка монитора - не всписке поддерживаемых fontconfig/freetype (горизонтальное/вертикальное RGB/BGR), то у правильного отображения у вас не будет, к сожалению. Ну и разумеется, BGR - тот же RGB, но на 180deg. Если их перепутать, то… в общем ничего хорошего :D.

У меня RGB. Если вертеть, то всё, конечно же, становится прям совсем вырвиглазно.

Просто у меня зрение хорошее пока (как ни странно, вроде много за компом сижу, а всё не садится, во всём бы так…). Я заметил на знакомых, что чем хуже зрение, тем более «норм» им кажется сильное субпиксельное сглаживание.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)

У меня от мыла аж голова заболела…

вероятность видимости окна

«Видишь суслика? И я не вижу… А он есть!» © ДМБ.

mord0d ★★★★★
()

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

Gedweb
()
Последнее исправление: Gedweb (всего исправлений: 1)
Ответ на: комментарий от nick87720z

Да я просто сохранил фоксом и открыл гимпом. И там уже покрутил без постобработки (а то некоторые смотрелки любят).

kirill_rrr ★★★★★
()
Ответ на: комментарий от CrX

Я заметил на знакомых, что чем хуже зрение, тем более «норм»

Ага, именно. У меня вот начало садиться, причём не фокусировка а то ли роговица то ли матрица. Так что если я мирился с пикселями на 120dpi FHD (которые отлично видел с вытянутой руки), то сейчас глупо жаловаться даже на 96dpi.

kirill_rrr ★★★★★
()
Ответ на: комментарий от Gedweb

А раньше проблемы не было, скруглённые углы подрисовывали чтобы хорошо смотрелось на большинстве старых мониторов. Хотя... разных типов мониторов тоже было куда меньше.

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

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 1)
Ответ на: комментарий от token_polyak

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

Попробовал я gnuplot, и что вы думаете.

wxt при GDK_SCALE=3 ресайзит не векторный рисунок, а его растр, в результате уже выглядит как на более низком разрешении. Конечно, cairo из кожи лезет со своим сглаживанием, но всё же. Решение - запускать с GDK_SCALE=1.

Но… к вопросу и ненужности сглаживания.
Запускаю с GNUTERM=x11. Конечно, исходный растр не сглажен. Однако, FSAA на то и стоит, что сглаживает по обеим осям. Логично ожидать, что результат с таким исходником будет в разы чётче, прям freetype с настройками для топовой чёткости.

nick87720z
() автор топика
Ответ на: комментарий от Dog

Допустим, но тогда к чему вот это

другая субпиксельная раскладка — попробуйте повернуть на 90, 180 или 270

что повернуть? Изображение? И что тогда с этим делать? Читать лежа? А что значит эта фраза:

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

?? О чем тут вообще говорит ТС?

r0ck3r ★★★★★
()
Ответ на: комментарий от Dog

Конечно не шрифтам. Это же FSAA 3x3, только субпиксельный. Хотя естественно - мне бы не хотелось, что сами шрифты были прям сильно хуже.

nick87720z
() автор топика
Ответ на: комментарий от Gedweb

Это потому, что фильтруется не полноэкранный микс перед XRandr, а отдельные окна. Полностью прозрачный цвет, окружающий RGBA окна, не имеет цвета - по сути, чёрный. Естественная особеность форматов premultiplied. Фильтры окон получают именно такой цвет, а не то, что за ним. Естественно, что правильно они могут выглядеть только на таком-же чёрном цвете. А ещё я отключил пустые области вокруг gtk3 - клиентские тени, с помощью ~/.config/gtk-3.0/gtk.css. Из за этого пикселы, за пределами окна (точнее их субпикселы), принимающие на себя часть яркости после фильтрации, отсекаются.

Короче, нужна настоящая полноэкранная фильтрация. Ну а это так - концепт.

Конечно, picom может выводить с явно создаваемое окно, но такое окно не перенаправляет ввод, и не пригодно не для чего кроме отладки (к тому же сомневаюсь, что на него вообще накладывается пост-обработка, это же как дисплей, окно во внешний мир).

nick87720z
() автор топика
Ответ на: комментарий от kirill_rrr

А, ну если так, тогда понятно. А то я удивился, почему спец. функция «Открыть из сети» в гимпе не работает.

nick87720z
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.