Auf Twitter habe ich diesen Screenshot eines Spiels in der Entwicklung gefunden:
Das Bild oben scheint ohne Farbbeschränkung zu sein. Die beiden anderen Bilder unten haben jedoch eine 256-Farben-Palette.
Ich möchte in meinem Spiel einen ähnlichen Effekt erzielen (ich verwende OpenGL). Wie kann ich das machen?
Antworten:
Ich bin der Schöpfer dieses Bildes.
Das Bild auf der rechten Seite wird mit einer Farbsuchtextur gerendert. Im letzten GLSL-Shader wende ich das Dithering an, konvertiere dann die RGB-Werte in Ganzzahlen im Bereich 0 <= x <40, kombiniere sie zu einem einzigen Index und suche den resultierenden Farbwert in diesem Bild nach:
Die unterste Zeile ist die Rohpalette.
Das Bild auf der linken Seite wird ausschließlich im Shader erstellt, indem der rote und der grüne Kanal auf 8 Werte und der blaue Kanal nach dem Anwenden des Dithering auf 4 Werte heruntergerechnet werden, was zu RGB332 führt. Ich habe auch mit 7 Rottönen, 9 Grüntönen und 4 Blautönen herumgespielt, was nur 252 Farben ergibt, aber mit einer stärkeren Betonung auf Grün, auf das das menschliche Auge am empfindlichsten ist.
quelle
Sie können eine Farbkorrektur-Nachschlagetabelle in einem Nachverarbeitungsschritt verwenden, wie hier und möglicherweise hier beschrieben .
Nachdem Sie dies implementiert haben, müssen Sie nur noch einen Screenshot erstellen, die Lookup-Textur darüber legen und ihn in einer beliebigen Grafiksoftware bearbeiten, bis Sie ihn mögen. Anschließend müssen Sie die geänderte Lookup-Textur erneut abrufen. Dies kann das Reduzieren der abgerufenen Nachschlagetabelle auf eine Teilmenge von Farben umfassen oder nicht.
Wenn Sie die Lookup-Textur mit Blick auf die Farbbeschränkung laden, müssen Sie lediglich alle Filter deaktivieren, damit keine zusätzlichen Farben erzeugt werden.
quelle