Читая о том, как приложения реального времени обрабатывают цвет в OpneGL, я заметил, что некоторые примеры реализовали Color как набор из 4 floats
, а другие использовали 4 doubles
. Я даже видел несколько примеров сжатия вершин в области разработки игр, которые рекомендовали сохранять цвета как 4 short
.
Все это заставило меня стремиться узнать больше об этом: какова предельная точность, которую OpenGl (или аппаратные средства) обрабатывают для цветов? Более важно, однако, каковы пределы точности, выше которых цветовые различия становятся невозможными заметить?
У меня сложилось впечатление, что более тщательное изучение этого поможет мне лучше подумать и решить, как реализовать класс Color для различных приложений и сценариев (например, выбор компромисса между памятью, скоростью и разнообразием цветов).
Спасибо за ваши идеи по этому поводу.
источник
half
не приведет к тем же проблемам, о которых вы упоминали ранее, из-за отсутствия точности? Я думаю, что это было бы особенно важно в графическом процессоре из-за множества вычислений цвета, которые часто выполняются в шейдерахhalf
- 16 бит, включая 11 эффективных битов точности мантиссы, поэтому, хотя он и не такой точныйfloat
, его все же достаточно для большинства операций с цветом. (Может быть , не совсем , достаточно , если вы выводите на дисплей высокой цветовой гаммы , HDR я не уверен.)