Vorvervielfachtes Alpha, ja oder nein?

10

Sollte ich vormultipliziertes Alpha verwenden? Wenn man Tom Forsyths Artikel liest, scheint es ein Nobrainer zu sein. Vormultipliziertes Alpha (AKA Additive Blending) ist in jeder Hinsicht überlegen.
Vormultipliziertes Alpha scheint jedoch einen großen Nachteil zu haben, es wird mit Tools nicht gut unterstützt.

Haben Sie vorvervielfachtes Alpha verwendet?

Wie ist die Toolunterstützung?

Insbesondere glaube ich nicht, dass Gimp vorvervielfachte Alpha-Bilder gut bearbeiten kann. Gibt es Gimp-Plugins zum Exportieren von vormultipliziertem Alpha? Wie wäre es mit einem externen Tool?

deft_code
quelle
Ich bin in genau der gleichen Position wie Sie - ich möchte es überall verwenden, bin mir aber nicht sicher, wie einfach ich meine Assets damit bearbeiten kann, wenn ich zusätzliche Tools dafür entwickeln muss.
Kylotan

Antworten:

4

Ich verwende derzeit XNA 3.1 mit vormultipliziertem Alpha (native Unterstützung für vormultipliziertes Alpha wurde in 4.0 hinzugefügt).

Meistens spart es mir Zeit, durchzugehen und sicherzustellen, dass die transparenten Bereiche meiner Bilder die richtigen Farben haben. Ich portiere auch auf Silverlight, das standardmäßig eine Vormultiplikation durchführt.

XNA verfügt über eine Inhaltspipeline, die das Hinzufügen einer vormultiplizierten Alpha-Vorverarbeitung zum Kinderspiel macht .

Dieser Link enthält den Code für die Konvertierung. Für jedes Pixel:

c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);

Es gibt viel zu sagen, wenn man eine Content-Pipeline hat. Wenn Sie nicht XNA verwenden, sondern Visual Studio verwenden, können Sie selbst eines zusammenwerfen . Alle anderen IDEs / Build-Prozesse sollten ebenfalls in der Lage sein.

Und schließlich, wenn Sie keinen Schritt zur Inhaltsverarbeitung in Ihrem Build haben (und wahrscheinlich ohnehin nicht viel Inhalt haben), können Sie die Vormultiplikation zur Laufzeit genauso einfach durchführen, wenn Sie Ihre Texturen laden. Dadurch wird die Ladezeit Ihrer Textur um einen konstanten Faktor erhöht.

(Wenn die Implikation nicht klar war: Sie sollten wahrscheinlich keine vormultiplizierten Alpha-Bilder bearbeiten. Exportieren Sie sie vormultipliziert, wenn Sie können, oder verarbeiten Sie sie besser noch vor.)

Andrew Russell
quelle
Vielen Dank. Es sollte so aussehen, als ob vormultipliziertes Alpha in XNA gut genug unterstützt wird (oder bald wird). Ich suche immer noch nach Nicht-XNA-Tools, mit denen ich meine Pipeline erstellen kann.
Deft_code
3

Wenn Sie zufällig XNA verwenden, gibt es eine Menge Unterstützung für vormultipliziertes Alpha. Normalerweise erfolgt die Konvertierung in der Inhaltspipeline, aber nichts hindert Sie daran, sie selbst durchzuführen.

drxzcl
quelle
1

Ich verwende standardmäßig vormultipliziertes Alpha in meiner Engine (der Künstler kann nicht vormultipliziertes Alpha in der Materialdefinitionsdatei erzwingen, wenn dies für einen speziellen Effekt erforderlich ist).

Wie Sie bemerkt haben, können Werkzeuge nicht gut mit vormultipliziertem Alpha umgehen - der Künstler kann die Farb- und Alphakanäle völlig unabhängig voneinander einstellen. Ich habe die Einstellungen so vorgenommen, dass mein Künstler die Texturbilder mit nicht-vorzeitigem Alpha erstellen kann (was für das Gehirn des Künstlers einfacher zu sein scheint), und das Tool, das in das Texturformat der Engine konvertiert, multipliziert das Alpha standardmäßig. Es gibt einen Schalter, mit dem nicht vorvervielfachte Schalter generiert werden können, wenn dies unbedingt erforderlich ist.

Branan
quelle