Como posso simular uma paleta de cores limitada (256) no OpenGL?

16

No Twitter, encontrei esta captura de tela de um jogo em desenvolvimento:

insira a descrição da imagem aqui

A imagem na parte superior parece não ter nenhuma limitação de cor. Mas as outras duas imagens na parte inferior têm uma paleta de 256 cores.

Quero obter um efeito semelhante no meu jogo (estou usando o OpenGL). Como posso fazer isso?

oxysoft
fonte
Relacionados: gamedev.stackexchange.com/questions/43294/...
Laurent Couvidou
Deseja desenhar oldschool como gráficos coloridos de 256 ou deseja fazer com que os gráficos de 24 bits pareçam gráficos old school? Em outras palavras, você deseja publicar o processo ou usar uma paleta de 256 cores? Veja como fazer paletted 256 gráficos coloridos em WebGL
gman

Respostas:

32

Eu sou o criador dessa imagem.

A imagem à direita é renderizada usando uma textura de pesquisa de cores. No shader GLSL final, aplico o pontilhamento, depois converto os valores RGB em números inteiros no intervalo 0 <= x <40, combine-os em um único índice e, em seguida, procure o valor de cor resultante nesta imagem:

tabela de cores

A linha mais baixa é a paleta bruta.

A imagem à esquerda é feita puramente no sombreador através da redução da amostragem dos canais vermelho e verde em 8 valores e do canal azul em 4 valores após a aplicação do pontilhamento, resultando em RGB332. Também brinquei com 7 tons de vermelho, 9 verde e 4 azuis, resultando em apenas 252 cores, mas com uma ênfase maior no verde, ao qual o olho humano é mais sensível.

Entalhe
fonte
6

Você pode usar uma tabela de pesquisa de classificação de cores em uma etapa de pós-processamento, conforme descrito aqui e provavelmente aqui .

insira a descrição da imagem aqui

Depois de implementar isso, tudo o que você precisará fazer é fazer uma captura de tela, sobrepor a textura de pesquisa sobre ela e editá-la em software gráfico arbitrário até que você goste - e recuperar a textura de pesquisa modificada novamente. Isso pode ou não incluir a redução da tabela de pesquisa recuperada para um subconjunto de cores.

Ao carregar a textura de pesquisa com a limitação de cores em mente, desabilite toda a filtragem, para que não produza cores adicionais.

Adão
fonte