Echtzeit-Transluzenz-Effekt


7

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.

Opazität, Transluzenz und Transparenz

(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.


Ich bin mir nicht sicher, ob ich dich verstehe. Leicht transparent == durchscheinend. Sie verwenden also bereits Transluzenz. Können Sie klarstellen, was Sie versuchen zu tun? Volltransparenter Hintergrund? (Aka, klar / unsichtbar) Oder durchscheinender Hintergrund? (Aka, Sie können einige Sachen dahinter sehen, aber mit der Hintergrundfarbe bedeckt)
RichieSams

@RichieSams Derzeit verwende ich einen einfachen schwarzen Hintergrund mit einer angewendeten Alpha-Transparenz. Die Szene ist also sichtbar, aber immer noch scharf, was die Lesbarkeit des Textes beeinträchtigt. Daher möchte ich die einfache Alpha-Transparenz in Transluzenz ändern. Ein reales Beispiel ist vielleicht der Unterschied zwischen dem Durchschauen von farbigem bzw. gefrorenem Glas.
Nero

@Nero In Grafiken bedeutet "durchscheinend" normalerweise nicht "gefrostet" oder "vereist", daher schlage ich vor, das, wonach Sie suchen, in Ihrer Frage klarer zu machen, da ich auch ziemlich verwirrt war.
Yuriks

@yuriks 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.
Trichoplax

Antworten:


6

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:

iOS-Kontrollzentrum iOS-Benachrichtigungscenter

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 .


1
Ich kenne das Notification Center und das Control Center. Ich bezweifle jedoch, dass diese Unschärfen in Echtzeit berechnet werden, da die aktive App eingefroren wird, während eine davon angezeigt wird (oder zumindest die Benutzeroberfläche nicht mehr aktualisiert). Aber die Links sehen vielversprechend aus. Vielen Dank!
Nero

1
@Nero Ich vermute, das liegt hauptsächlich an Stromgründen. Wenn Sie vom Sprungbrett nach unten wischen, um zu Spotlight zu gelangen, erhalten Sie eine Unschärfe mit variabler Breite, je nachdem, wie weit Sie nach unten gezogen haben, und das ist sicherlich in Echtzeit.
John Calsbeek

4

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.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.