Mientras leía un poco sobre cómo las aplicaciones en tiempo real manejan el color en OpneGL, noté que algunos ejemplos implementaron Color como una colección de 4 floats
, mientras que otros usaron 4 doubles
. Incluso he visto algunos ejemplos de compresión de vértices en el campo de desarrollo del juego que abogaban por guardar los colores como 4 short
.
Todo esto me puso ansioso por aprender más sobre esto: ¿cuál es la precisión límite que maneja OpenGl (o hardware) para los colores? Más importante aún, ¿cuáles son los límites de precisión por encima de los cuales las diferencias de color se vuelven imposibles de notar?
Tengo la impresión de que aprender más sobre eso me ayudaría a pensar y decidir mejor cómo implementar una clase de Color para diferentes aplicaciones y escenarios (por ejemplo, tomar decisiones de compensación entre memoria, velocidad y variedad de colores).
Gracias por tus ideas sobre esto.
fuente
half
no incurriría en los mismos problemas que mencionó antes, debido a la falta de precisión? Pensé que eso sería particularmente importante en la GPU, debido a los muchos cálculos de color que se realizan con frecuencia en los sombreadoreshalf
tiene 16 bits, incluidos 11 bits efectivos de precisión de mantisa, por lo que, aunque no es tan precisofloat
, sigue siendo suficiente para la mayoría de las operaciones de color. (Tal vez no bastante , suficiente si estás dar salida a una pantalla de alta gama HDR no estoy seguro.)