Jak mogę zasymulować ograniczoną (256) paletę kolorów w OpenGL?


16

Na Twitterze znalazłem zrzut ekranu gry w fazie rozwoju:

wprowadź opis zdjęcia tutaj

Obraz na górze wydaje się być bez żadnych ograniczeń kolorystycznych. Ale dwa pozostałe zdjęcia na dole mają 256 kolorów.

Chcę osiągnąć podobny efekt w mojej grze (używam OpenGL). Jak mogę to zrobić?



Czy chcesz narysować oldschoolową grafikę w stylu 256 kolorów, czy chcesz, aby grafika 24-bitowa wyglądała jak grafika szkolna? Innymi słowy, czy chcesz wysłać lub przetworzyć paletę 256 kolorów? Oto jak zrobić paletę grafiki 256 kolorów w WebGL
gman

Odpowiedzi:


32

Jestem twórcą tego obrazu.

Obraz po prawej stronie jest renderowany przy użyciu tekstury do wyszukiwania kolorów. W końcowym module cieniującym GLSL stosuję dither, następnie przekształcam wartości RGB na liczby całkowite z zakresu 0 <= x <40, łączę je w pojedynczy indeks, a następnie sprawdzam wynikową wartość koloru na tym obrazie:

tabela kolorów

Najniższym rzędem jest surowa paleta.

Obraz po lewej stronie jest tworzony wyłącznie w module cieniującym poprzez próbkowanie w dół kanałów czerwonego i zielonego do 8 wartości, a kanału niebieskiego do 4 wartości po zastosowaniu ditheru, co daje RGB332. Grałem też z 7 czerwonymi, 9 zielonymi i 4 niebieskimi odcieniami, co daje tylko 252 kolory, ale z większym naciskiem na zieleń, na którą ludzkie oko jest najbardziej wrażliwe.


6

Możesz użyć tabeli wyszukiwania gradacji kolorów w kroku przetwarzania końcowego, jak opisano tutaj i prawdopodobnie tutaj .

wprowadź opis zdjęcia tutaj

Po zaimplementowaniu tego, wszystko co musisz zrobić, to zrobić zrzut ekranu, nałożyć na niego teksturę odnośnika, a następnie edytować go w dowolnym oprogramowaniu graficznym, aż ci się spodoba - a następnie ponownie pobrać zmodyfikowaną teksturę odnośnika. Może to obejmować, ale nie musi, zmniejszenie pobranej tabeli odnośników do podzbioru kolorów.

Podczas ładowania tekstury odnośnika z myślą o ograniczeniu kolorów pamiętaj tylko o wyłączeniu wszystkich filtrów, aby nie generowało to dodatkowych kolorów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.