Portál AbcLinuxu, 1. května 2025 15:24
Poněkud podivný nadpis obsah tohoto blogpostu příliš nevysvětluje. Věřte tomu nebo ne, řeč bude o antialiasingu.
Jak asi každý ví, pixel LCD displaye není jednobarevný. Skládá se ze tří proužků, které odpovídají třem základním barvám. Díky tomu lze antialiasing počítat o něco přesněji, než kdyby byl pixel považován za nedělitelný celek. Otázka je, v kterém směru se „subpixelový“ antialiasing ve skutečnosti počítá a zda to, co si naklikáme v grafickém prostředí, skutečně funguje. Nebudu chodit kolem horké kaše a hned přičiním tři poznámky o tom, co mi vadí.
Tak zaprvé je to nutnost jednotného nastavení pro multi-head zobrazení. Mám display od notebooku vodorovně a vedle toho externí display svisle. „Barevný“ antialiasing ovšem může být správně zobrazen jen na jednom z nich. (Toto technické omezení zcela chápu v případě, že má člověk nastavený jeden obrovský display přes obě obrazovky, na kterém lze libovolně přetahovat okna. V ostatních případech však pro tento nesmysl pochopení nemám... (Mnoho driverů umožňuje spravovat v rámci jednoho X-serveru dva displaye zvlášť, každý třeba s jiným rozlišením.))
Zadruhé, když otočím externí display do vodorovné polohy, musím zároveň překonfigurovat antialiasing! Otočení celého obrazu (pomocí xrandr
) totiž tuto samozřejmou věc nezařídí. Natočení zpět do svislé polohy znamená zopakování téhož nudného úkonu... (Asi by na to šel udělat nějaký skript, ale je to každopádně špatné řešení.) Je to jako v Kocourkově... Antialiasing by se měl nastavovat vzhledem k nějaké základní poloze toho zařízení, nikoliv vzhledem k aktuálnímu otočení obrazu na něm... Pochop, kdo můžeš.
Třetí poznámka se týká konkrétně KDE. V jeho Ovládacím centru se dá samozřejmě antialiasing nastavit. Mám ovšem podezření, že režimy Vertikální RGB a Vertikální BGR jsou vzájemně prohozené. Nemám pro tuto domněnku žádný důkaz kromě intuice a programu KMag. I přesto jsem přesvědčen, že bych s rozumnou pravděpodobností mohl mít pravdu. Ptám se tedy: Skutečně jsou vertikální režimy antialiasingu v klikátku pro KDE zaměněné?
Tiskni
Sdílej:
Takovou bych asi zvolil taky. Pozorováním spousty textu přes KMag jsem dospěl k závěru, že je to naopak. Ale těžko říct... Ještě bych musel display důkladně prozkoumat lupou, abych si byl jistý.
Z Kmag nejde poznat, jestli je monitor RGB nebo BGRTo nejde, ale zato z kmag jde poznat, co so o usporadani pixelu mysli renderovatko fontu :–) .
Opravdu??? Tak jak je potom možné, že Microsoft Internet Exporer 6 spuštěný pod Wine má antialiasing, a to dokonce subpixelový? To trochu nesedí, co?
Systémově vyřešený antialiasing by totiž vypadal tak, že klient pošle serveru vektorový popis scény, kde souřadnice jsou ve fyzických jednotkách (např. v mikrometrech), nikoliv v pixelech, a server následně scénu vyrastruje. Bylo by tak možné adresovat jak rozměry pod velikostí aktuálního pixelu, tak i kreslit bez ohledu na hustotu pixelů. Takže vykreslit skutečně kulatou kružnici se subpixelě vyhlazenou křivkou přes více xineramou spojených monitorů by nebyl nemožný úkol. Zarověň by došly opodstatnění všelijaké lupy a zvětšení, které za současné situace jsou kostičkovaným (v případě OpenGL rozmazaným) výsměchem.Podle mě už je nejvyšší čas, aby začala taková nějaká architektura vznikat. Kompozitní správci oken, zvětšování a xinerama si o to přímo řvou.
Systémově vyřešený antialiasing by totiž vypadal tak, že klient pošle serveru vektorový popis scény, kde souřadnice jsou ve fyzických jednotkách (např. v mikrometrech), nikoliv v pixelech, a server následně scénu vyrastruje.Problem je, ze dokud nebudou mit displeje aspon 300 DPI, tak nelze renderovat bez ohledu na fyzicke rozliseni. Popis sceny je treba zaokrouhlit tak, aby hrany byly na hranicich pixelu, jinak to bude hnusne. A to je treba udelat na hodne vysoke urovni (treba u textu uz na urovni sazby textu). A informace z teto vysoke urovne ma k dispozici jen aplikace. Krom toho pro tyto ucely neni milimetr o moc lepsi jednotka nez pixel. Pokud zadavam vzdalenost v milimetrech, tak je to sice nezavisle na DPI, ale zavisle na vzdalenosti uzivatele od displeje, kde je znacny rozdil treba mezi LCD monitorem a projektorem. Spravna jednotka je uhlovy stupen, nebo proste neco nespecifickeho relativniho.
Docela me pobavilo, co vsechno povazujes za samozrejme featury
No, já na tom nic až tak zábavného nevidím. Je spousta věcí, které mi při běžné práci chybí a tohle jsou prostě některé z nich. Technicky nemožné to není.
Vykresleni textu s ruznym antialiasingem na dvou obrazovkach znamena mit dve nastaveni antialiasingu, kazdou pro jeden displej, a pokud ma aplikace dve okna na dvou displejich, tak kazde okno ho musi mit zvlast a pri presunu z okna do okna prepnout.
V konfiguraci, o které jsem hovořil, aplikace jednoduše nemůže mít okna na obou displayích současně. (To by byla konfigurace typu Xinerama a u té samozřejmě nelze mít rozdílný antialiasing.) V mnou zmiňované konfiguraci aplikace existuje pouze na tom displayi, kde se spustí, a o druhém nemá ani zdání. (X server tam běží jen jeden, ale například kdesktop a kwin existují pro každý display zvlášť.)
Že v konfiguracích typu Xinerama (které dnes umí většina driverů i bez Xineramy) nelze mít různé rozlišení či různý antialiasing, to je mi naprosto jasné. Ale v oddělených konfiguracích (tj. v těch, které mají oddělenou sekci Device i Display a které mají v ServerLayout dvě položky Screen) něco takového dává smysl a nevidím tam žádné technické překážky. Jen nevím, jak něco takového nakonfigurovat. V KDE to určitě nejde.
Otoceni antialiasingu pri otoceni obrazovky znamena prepnout antialiasing a poslat zpravu vsem aplikacim, aby vsechno prekreslily s jinym antialiasingem, protoze uzivatel otocil displej. Taky to neni technicky az takova legrace.
Nikoliv. Přepnutí antialiasingu se samozřejmě netýká již běžících aplikací. Takové prasárny dělá snad jedině Gnome a občas při tom i odletí, když zrovna nemá den. Řeč byla o KDE, kde se přepnutí objeví až u nově spuštěných aplikací. V mém případě otočení displaye prakticky vždy znamená zavření téměř všech aplikací a spuštění jiných, pro které je daná orientace vhodná.
Překreslení celého displaye zabere nanejvýš řádově desetiny vteřiny. Aplikace o antialiasingu nepotřebují vědět nic, pouze by prostě překreslily své texty. Fakt, že například Gtk a Qt aplikace sdílejí nastavení antialiasingu, jasně svědčí o tom, že antialiasing se neděje na úrovni aplikace a dokonce ani na úrovni toolkitu.
Fakt, že například Gtk a Qt aplikace sdílejí nastavení antialiasingu, jasně svědčí o tom, že antialiasing se neděje na úrovni aplikace a dokonce ani na úrovni toolkitu.O cem to svedci nevim, ale to, ze antialiasing se resi na urovni X klienta (aplikace, toolkitu) je fakt.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.