Пишу трассировщик лучей. Пока что у меня есть диффузное и зеркальное освещение, а также я планирую реализовать отражение и преломление.
До сих пор я использовал белый свет и рассчитывал цвет поверхности следующим образом: surface_color * light_intensity
, деленный на соответствующие значения расстояния ^ 2, поскольку я использую точечные источники света. Для зеркального отражения это light_color * light_intensity
. Afaik, зеркальное отражение не меняет цвет света, поэтому это также должно работать с источниками света разных цветов.
Как мне рассчитать цвет, отраженный от диффузной поверхности, если источник света не белый? Например, (0,7; 0,2; 0) свет попадает в поверхность (0,5; 0,5; 0,5). Кроме того, имеет ли значение фактор расстояния по-другому в этом случае?
Кроме того, как мне добавить в одну точку световые эффекты от источников света разных цветов? Например, поверхность (1, 0,5, 1) освещается лампами (0,5, 0,5, 1) и (1, 0,7, 0,2). Могу ли я просто рассчитать оба значения (включая расстояния) и сложить их вместе?