En lisant la façon dont les applications en temps réel gèrent les couleurs sous OpneGL, j'ai remarqué que certains exemples implémentaient Color en tant que collection de 4 floats
, tandis que d'autres en utilisaient 4 doubles
. J'ai même vu quelques exemples de compression de sommets dans le domaine du développement de jeux qui préconisaient d'enregistrer les couleurs comme 4 short
.
Tout cela m'a donné envie d'en savoir plus: quelle est la précision limite que OpenGl (ou les matériels) gère pour les couleurs? Plus important encore, quelles sont les limites de précision au-dessus desquelles les différences de couleur deviennent impossibles à remarquer?
J'ai l'impression qu'apprendre plus à ce sujet m'aiderait à mieux réfléchir et à décider comment implémenter une classe de couleur pour différentes applications et différents scénarios (par exemple, faire des choix entre mémoire, vitesse et variété de couleurs).
Merci pour vos idées à ce sujet.
la source
half
ne poserait pas les mêmes problèmes que ceux que vous avez mentionnés précédemment, en raison du manque de précision? Je pensais que cela serait particulièrement important au niveau du GPU, en raison des nombreux calculs de couleurs qui sont fréquemment effectués dans les shadershalf
est de 16 bits, dont 11 bits effectifs de précision de mantisse, donc bien qu'il ne soit pas aussi précis quefloat
cela, il reste suffisant pour la plupart des opérations de couleur. (Peut-être pas tout à fait suffisant si vous effectuez une sortie vers un écran HDR à gamme élevée; je ne suis pas sûr.)