Ich arbeite derzeit an einem einfachen Pixel-Shader in HLSL. Ich sende eine Shader-Textur und möchte sie bunter machen (so etwas wie im Bild unten).
In Bild 1 gibt es Originaltextur. Bild 2 zeigt einen Effekt, den ich erzielen möchte. Gibt es dafür eine mathematische Formel? Meine Eingabe ist der RGBA-Wert jedes Pixels.
EDIT: Ich werde versuchen, konkreter zu schreiben.
Angenommen, ich möchte diese Gartentextur roter machen. Ich nehme an, was ich tun muss, ist:
OutputR = InputR * X,
OuputG = InputG * Y,
OutputB = InpputB * Z
Aber wie finde ich X, Y und Z?
texture
algorithm
image-processing
hlsl
pixel-shader
bartosz.baczek
quelle
quelle
Antworten:
Die Antwort von Kostas Anagnostou ist eine häufig verwendete Formel für die Entsättigung
Dies trägt der Tatsache Rechnung, dass unterschiedliche Farbtöne von einem menschlichen Beobachter mit unterschiedlicher Intensität wahrgenommen werden.
Wenn Sie dem Beispiel weiter folgen, definieren Sie eine Farbfarbe, die mit dem entsättigten Wert multipliziert wird. Sie können das getönte Bild auch mit Ihrem Original mischen, um einen weniger drastischen Effekt zu erzielen. In diesem Fall mischen wir 80% des mit (1,0, 0,2, 0,2) getönten entsättigten Bildes mit 20% des Originals:
quelle
(XYZ) kann die RGB-Farbe sein, mit der Sie Ihre Szene tönen möchten. Für die obige Szene kann es eine rote Farbe (1,0, 0,0, 0,0) oder etwas Ähnliches mit einer starken roten Komponente sein.
Denken Sie daran, dass die Farbe, da Sie sie multiplikativ anwenden, als Filter fungiert, der die ursprünglichen Farbkomponenten unterdrückt. Wenn Ihre Szene also größtenteils grün ist, Sie jedoch einen Rotfilter (1,0,0) anwenden (dh damit multiplizieren), ist die resultierende Szene sehr dunkel.
Ein Trick, den Sie in solchen Fällen möglicherweise ausführen könnten, besteht darin, die ursprüngliche Szene zu entsättigen und sie dann mit der Farbtonfarbe zu multiplizieren. Auf diese Weise behalten Sie die Gesamtbildintensität bei und erzielen den gewünschten Farbton.
Hier ist zum Beispiel das Bild multipliziert mit (1, 0, 0), (1, 0,2, 0,2) und (1, 0,5, 0,5) von links nach rechts:
quelle
Wählen Sie die Farbe RGB Ihre bunten Gläser und wählt , wie transparent sie durch die Wahl eines Alpha - Wert A. Dann sind Alpha - Verbund die Brille auf der Oberseite des Eingangsbildes:
quelle