PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hardwarebeschleunigtes Textrendering


roidal
2012-07-24, 12:01:55
Windows 8 soll es haben, und in bestimmten Produkten (z.B. Browser) soll es integriert werden. Aber was genau ist damit gemeint? Werden da die einzelnen Glyphen als Bitmaps/Texturen in den Grafikspeicher geladen und dort dann "nur" noch mehr positioniert? Oder geht das ganze weiter, so dass mit hilfe von Shadern die TrueType fonts auf der Grafiklarte selbst zu Glyphen gerendert werden?

sputnik1969
2012-07-24, 14:21:43
Da es auch um energieeffizienz geht, da die selben Routinen auch in Windows RT mobil genutzt werden sollen, gehe ich davon aus, dass es "nur" texturen sind. jeden glyphen einzeln rendern zu lassen erhöht den rechenbedarf auf seiten der gpu was da wieder kontroproduktiv ist.
windows 8 / rt ist ein mobilwindows....sieht man ja an der bedienung

ENKORE
2012-07-24, 16:04:55
Es gibt doch längst DirectWrite, was mittels Direct2D auch hardwarebeschleunigt wird: http://msdn.microsoft.com/en-us/library/windows/desktop/dd368038(v=vs.85).aspx

Ansonsten ist es eher nix neues, dass Glyphen als Texturen (bzw. alle genutzen Glyphen eines Fonts) gecached werden und nur noch mit ein paar Polygonen in Position gebracht werden. Das wird in Spielen so seit.... Quake 2 oder 3 gemacht
Ich hab noch nie gehört, dass die Fonts erst auf der GPU gerastert werden, auch wenn das mit OpenVG (was von ner Menge ARM SoCs in Hardware unterstützt wird) ginge. Es ist aber halt wesentlich effizienter, die einmal zu rendern und dann als Textur zu cachen. Schriftrendering ist auch nicht so wirklich rechenintensiv... zumindest nicht in den Quantitäten, die auf einen normalen Bildschirm passen...

Shink
2012-07-24, 16:46:46
Java kann seit 7 Jahren alle AWT/Swing-GUIs natürlich inkl. Text per OpenGL rendern:
http://docs.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html#ogl

2002(?) ging es auch schon, aber nicht mit Bordmitteln:
http://www.cs.umd.edu/hcil/agile2d/

ENKORE
2012-07-24, 18:12:15
Java GUIs ;D ...ein guter Witz... muss ich mir merken...

roidal
2012-07-25, 18:43:47
[...]
jeden glyphen einzeln rendern zu lassen erhöht den rechenbedarf auf seiten der gpu was da wieder kontroproduktiv ist.
[...]
Die Glyphen müssen sowieso gerendert werden, die Frage is halt ob von CPU oder GPU.

Java kann seit 7 Jahren alle AWT/Swing-GUIs natürlich inkl. Text per OpenGL rendern:
http://docs.oracle.com/javase/1.5.0/docs/guide/2d/new_features.html#ogl

2002(?) ging es auch schon, aber nicht mit Bordmitteln:
http://www.cs.umd.edu/hcil/agile2d/
Das erklärt aber noch immer nicht wie HW-beschleunigtes Textrendering im Detail funktioniert.

Coda
2012-07-25, 18:50:19
Soweit ich weiß verwendet Microsoft dafür 1-Bit-Texturen (DXGI_FORMAT_R1_UNORM), in die sie wohl in Subpixel-Auflösung auf der CPU erzeugte Glyphs packen. Das tatsächliche Font-AA machen sie dann wohl im Shader, was dann abhängig vom Subpixel-Muster des Displays ist.

Auf der GPU TrueType-Fonts zu rendern dürfte ziemlich schwierig sein und auch keinen großen Nutzen bringen.

sputnik1969
2012-07-26, 14:03:41
Die Glyphen müssen sowieso gerendert werden, die Frage is halt ob von CPU oder GPU.

Ja, sie müssen EIN mal gerendert werden und anschliessend nur noch "kopiert" werden. Und da ist es sicher egal, ob das CPU oder GPU macht. Allerdings ist da dann CPU sicher weniger aufwändig.

del_4901
2012-07-26, 14:39:04
Vllt. machen sie einfach nur sowas:
http://www.youtube.com/watch?v=CGZRHJvJYIg