Вы имеете в виду аддитивное смешение цветов?
В этом случае добавляется только свет. Итак, это просто сложение и вычитание интенсивности света, так что RGB - это хорошо. Но вам нужно линейное цветовое пространство. Поэтому вам необходимо «отменить» гамму, добавить или вычесть и снова применить гамму.
См. https://en.wikipedia.org/wiki/SRGB#Specification_of_the_transformation для формулы для применения Гаммы и отмены ее применения: C
является каналом (R, G, B, каждый), C_linear
является линейным пространством (где вы можете добавлять и вычитать интенсивности) C_srgb
- это значение канала, которое мы используем на компьютерах. Примечание: вы должны разделить и умножить на 255, чтобы нормализовать значения от 0 до 1.
Для обычного смешения цветов (краски, чернила, красители и т. Д.) Это сложно, но в таком случае предпочтительнее было бы использовать CIExyz: на самом деле в таком пространстве результат смешения находится на линии между двумя оригинальные цветности. К сожалению, модель не говорит вам, где будет результат в пределах этой линии. Обычно требуется больше данных о каждом цвете (часто вместо триплета RGB, вектор из около 60 элементов [поэтому данные каждые 5 нм))