Wie kann ich eine begrenzte (256) Farbpalette in OpenGL simulieren?

16

Auf Twitter habe ich diesen Screenshot eines Spiels in der Entwicklung gefunden:

Bildbeschreibung hier eingeben

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?

oxysoft
quelle
Möchten Sie oldschool wie 256-Farben-Grafiken zeichnen oder möchten Sie 24-Bit-Grafiken wie oldschool-Grafiken aussehen lassen? Mit anderen Worten, möchten Sie eine 256-Farben-Palette nachbearbeiten oder tatsächlich verwenden? Hier erfahren Sie, wie Sie 256-Farben-Grafiken in WebGL
gman am

Antworten:

32

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:

Farbe Nachschlagetabelle

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.

Einkerbung
quelle
6

Sie können eine Farbkorrektur-Nachschlagetabelle in einem Nachverarbeitungsschritt verwenden, wie hier und möglicherweise hier beschrieben .

Bildbeschreibung hier eingeben

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.

Adam
quelle