Bitmap-basierte Komponenten

Einige Komponenten wie Unschärfe, Bewegungsunschärfe und Hochpass werden als Bitmap-basiert bezeichnet, weil sie implizit eine interne Bitmap ihrer Eingabequelle rendern, um ihr Ergebnis zu erzeugen. Diese Komponenten bieten zwar Operationen, die in prozeduraler Texturierungssoftware normalerweise nicht verfügbar sind, haben jedoch mehrere Nachteile.

Erstens verbrauchen interne Bitmaps Speicher, was zu einer Auslagerung der Festplatte führen und das Rendering verlangsamen kann. Zweitens können Filter, die Bitmap-basierte Komponenten verwenden, langsam reagieren, wenn ein Benutzer seine Steuerelemente ändert – dieser Effekt ist als "Verzögerung beim ersten Block" bekannt. Bei einem Filter, der die Unschärfe verwendet, erfordert der erste unscharfe Block beispielsweise mindestens neun Quell-Bitmap-Blöcke, um gerendert zu werden, was die Verzögerung verursacht. Und drittens gibt es einen Präzisionsverlust, der durch die Umwandlung des prozedural definierten "Signale" in eine von Natur aus weniger präzise Bitmap-Form entsteht.

Aufgrund dieser Nachteile sollten Bitmap-basierte Komponenten nur dann verwendet werden, wenn es notwendig ist. Versuche immer, die Verwendung von Bitmap-basierten Komponenten zu vermeiden. Wenn du z. B. ein weiches, verschwommenes Perlin Rauschen wünschst, kannst du einfach die Rauhheit verringern, anstatt das Rauschen zu verwischen, was vielleicht der einfachste Weg ist.

Beachte, dass du keine Bitmap-basierten Komponenten in einer Komponentenkette zwischen einer Slave-Komponente und ihrer Master-Komponente, wie Loop oder Bomber Plus, verwenden kannst. Bitmap-basierte Komponenten entfernen die Elementdaten, die von ihrem Master an die Slaves gesendet werden, und können daher nicht in Slave-zu-Master-Verbindungen verwendet werden.

Technische Details

Normalerweise erzeugt der Renderer von Filter Forge keine Zwischen-Bitmaps. Anstatt für jede Komponente im Filterbaum eine Bitmap zu rendern und diese Bitmaps zwischen den Komponenten weiterzugeben, verwendet Filter Forge einen prozeduralen Ansatz – er erstellt eine Bildfunktion auf der Grundlage des Filterkomponentenbaums und wertet sie für jedes Pixel des resultierenden Bildes aus (wenn Kantenglättung aktiviert ist, kann ein einzelnes Pixel mehrere Auswertungen – oder "Samples" – der Bildfunktion erfordern, die gemittelt werden, um die resultierende Pixelfarbe zu erzeugen).

Einige Operationen benötigen jedoch mehrere benachbarte Quell-Samples, um ein einziges resultierendes Sample zu erzeugen. Beispiele für solche Operationen sind Unschärfe, Bewegungsunschärfe und Hochpass. Bei der Unschärfe werden beispielsweise alle Pixel innerhalb ihres Radius genommen und ihre Farben gemittelt, um ein "unscharfes" Pixel zu erhalten. Solche Operationen sind wesentlich schneller, wenn sie auf einer Bitmap anstelle einer direkten Quell-Sample durchgeführt werden, da die Bitmap als Zwischenspeicher dient, der unnötige Mehrfachauswertungen von benachbarten Samples verhindert.

Um die Genauigkeit zu wahren, verwenden die internen Bitmaps ein einfaches Fließkomma-Pixelformat (die internen Bitmaps der Komponenten im Teilbaum Höhe des Ergebnisses und der Komponente Refraktion werden jedoch in doppelter Genauigkeit gespeichert). Allerdings ist selbst eine Fließkomma-Bitmap von Natur aus weniger genau als ein prozedural definiertes Signal, so dass die Verbindung einer Bitmap-basierten Komponente mit einem Verzerrer wie Refraktion, Versatz oder Rauschverzerrung aufgrund der bikubischen Filterung, die während des Samplings der internen Bitmap durchgeführt wird, zu "unscharfen Kanten" führen kann.

Beziehung zu Slave-Komponenten

Im Allgemeinen können Bitmap-basierte Komponenten nicht in Slave-zu-Master-Verbindungen verwendet werden, da sie die Daten zerstören, die von ihrem Master an die Slave-Komponenten gesendet werden, wodurch die Slave-Komponenten daran gehindert werden, ihre Ausgabe entsprechend den Daten, die ihr Master ihnen gesendet hat, zu ändern.

Eine bemerkenswerte Ausnahme hiervon bildet die Komponente Ergebnis. Slave-Komponenten der Komponente Ergebnis wirken sich auf die Ausgabe einer Bitmap-basierten Komponente aus, alle weiteren Komponenten auf dem Pfad zwischen der Ausgabe dieser Bitmap-basierten Komponente und der Eingabe der Oberflächenfarbe von Ergebnis werden jedoch nicht beeinflusst. Weitere Informationen zu diesem Fall findest du im Abschnitt "Slave-Komponenten verwenden" des Hilfeartikels für die Komponente Ergebnis.

Urheberrecht © 2006-2022 Filter Forge, Inc. Alle Rechte vorbehalten.