Na Twitterze znalazłem zrzut ekranu gry w fazie rozwoju:
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ć?
Odpowiedzi:
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:
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.
źródło
Możesz użyć tabeli wyszukiwania gradacji kolorów w kroku przetwarzania końcowego, jak opisano tutaj i prawdopodobnie 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.
źródło