Beim Rendern meiner Szene mit OpenGL füge ich manchmal eine Überlagerung hinzu, die Informationen, Einstellungen und einige ziehbare Elemente enthält. Derzeit hat die Überlagerung einen leicht transparenten Hintergrund, damit der Text leicht lesbar ist und die Szene dennoch durchscheinen kann und der Benutzer die Szene hinter / durch die Überlagerung sehen kann.
Ich möchte den transparenten Hintergrund durch einen durchscheinenden Hintergrund ersetzen, der (soweit ich weiß) erfordert, dass das klare Bild der Szene stark unscharf ist *. Und insbesondere auf Mobilgeräten (z. B. iPad) mit hohen Auflösungen und begrenzter Verarbeitungsleistung funktionieren viele Textur-Lookups und Echtzeit-Rendering nicht gut zusammen.
Gibt es eine Möglichkeit, Echtzeit-Transluzenz auf Mobilgeräten wie dem iPad zu ermöglichen? Oder gibt es eine Möglichkeit, die Notwendigkeit zu vermeiden, die Szene in jedem Bild stark zu verwischen?
Bearbeiten:
Wie in den Kommentaren vorgeschlagen, ist hier ein Bild, das ich gerade in der Wikipedia gefunden habe und das den Unterschied zwischen Transparenz (rechte Spalte) und Transluzenz (mittlere Spalte) beschreibt.
(Bildquelle: Wikipedia )
* Ich weiß, dass es die Zwei-Pass-Unschärfe gibt (zuerst Unschärfe in die eine und dann in die andere Richtung), um Textur-Lookups zu reduzieren. Für die Transluzenz erfordert dies jedoch immer noch eine große Anzahl von Textur-Lookups.
translucent: (of a substance) allowing light, but not detailed shapes, to pass through
. Translucent hat im Allgemeinen die in der Frage verwendete Bedeutung, daher scheint dies klar zu sein.Antworten:
Ich denke, Sie möchten vielleicht einen weiteren Blick auf die iOS-Benutzeroberfläche werfen, wenn Sie Echtzeit-Unschärfen als außerhalb der Reichweite mobiler Hardware liegend betrachten:
Unschärfen sind völlig in Reichweite der mobilen Hardware. Ja, Sie benötigen eine ziemlich große Anzahl von Textur-Samples für eine Unschärfe mit einem großen Kernel, aber die Textur-Samples werden auch sehr gut zwischengespeichert, und Sie können eine trennbare Unschärfe verwenden , was effektiv bedeutet, dass eine MxN-Unschärfe M + N-Samples erfordert. keine M * N-Proben. Sie können auch die bilineare Hardware-Abtastung nutzen, um die Anzahl der für Ihre Unschärfe erforderlichen Abtastungen zu verringern .
quelle
Daran führt kein Weg vorbei. Wenn Sie möchten, dass der Bereich hinter den Textfeldern verschwommen erscheint, müssen Sie ihn verwischen.
Eine Möglichkeit, die Leistungskosten zu senken, besteht darin, eine trennbare Unschärfe mit zwei Durchgängen zu verwenden.
Eine weitere Maßnahme, die wahrscheinlich hilfreich sein wird (abhängig davon, wie viel des Bildschirms Ihre Textfelder abdecken), ist die Verwendung einer Schere oder eines Schablonentests, um nur die Unschärfe in den Bereichen des Bildschirms zu berechnen, die später von Textfeldern abgedeckt werden. Wenn Sie dies tun, müssen Sie eine zusätzliche vertikale Polsterung von mindestens der halben Breite Ihres Unschärfekerns belassen. Andernfalls versucht der zweite Unschärfedurchgang, nicht berechnete Texel in der Zwischentextur abzutasten, was zu Artefakten oder einer Verdunkelung der Unschärfe in der Nähe führt die Kanten der Textfeldbereiche. (Dies ist kein Problem für den ersten Durchgang, da Sie dort von der ursprünglichen nicht maskierten Textur abtasten.)
quelle