Comment puis-je simuler une palette de couleurs limitée (256) dans OpenGL?

16

Sur Twitter, j'ai trouvé cette capture d'écran d'un jeu en développement:

entrez la description de l'image ici

L'image sur le dessus semble être sans aucune limitation de couleur. Mais les deux autres images en bas ont une palette de 256 couleurs.

Je veux obtenir un effet similaire dans mon jeu (j'utilise OpenGL). Comment faire?

oxysoft
la source
EN RELATION
Laurent Couvidou
Voulez-vous dessiner oldschool comme des graphiques 256 couleurs ou voulez-vous que les graphiques 24 bits ressemblent à des graphiques old school? En d'autres termes, souhaitez-vous post-traiter ou réellement utiliser une palette de 256 couleurs? Voici comment faire des graphiques palettisés de 256 couleurs dans WebGL
gman

Réponses:

32

Je suis le créateur de cette image.

L'image de droite est rendue à l'aide d'une texture de recherche de couleur. Dans le shader GLSL final, j'applique le tramage, puis convertis les valeurs RVB en entiers dans la plage 0 <= x <40, les combine en un seul index, puis recherche la valeur de couleur résultante dans cette image:

table de recherche de couleur

La rangée la plus basse est la palette brute.

L'image de gauche est créée uniquement dans le shader en sous-échantillonnant les canaux rouge et vert à 8 valeurs, et le canal bleu à 4 valeurs après application du tramage, ce qui donne RGB332. J'ai également joué avec 7 teintes rouges, 9 vertes et 4 bleues, ce qui ne donne que 252 couleurs, mais en mettant davantage l'accent sur le vert, auquel l'œil humain est le plus sensible.

Entailler
la source
6

Vous pouvez utiliser une table de recherche d'étalonnage des couleurs dans une étape de post-traitement comme décrit ici et probablement ici .

entrez la description de l'image ici

Après avoir implémenté cela, tout ce que vous aurez à faire est de faire une capture d'écran, de superposer la texture de recherche sur celle-ci, puis de la modifier dans un logiciel graphique arbitraire jusqu'à ce que vous l'aimiez - puis de récupérer à nouveau la texture de recherche modifiée. Cela peut inclure ou non la réduction de la table de recherche récupérée à un sous-ensemble de couleurs.

Lors du chargement de la texture de recherche en gardant à l'esprit la limitation des couleurs, assurez-vous simplement de désactiver tout le filtrage, afin qu'il ne produise pas de couleurs supplémentaires.

Adam
la source