2014-11-01 4 views
0

Я пишу трассирующее изображение луча. До сих пор у меня диффузное и зеркальное освещение, и я планирую реализовать отражение и преломление.Ray tracing - смешивание цветов

До сих пор я использовал белые огни, где я вычислил цвет поверхности следующим образом: 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). Я просто вычисляю обе (включая расстояния) и добавляю их вместе?

ответ

0
  • Я обнаружил, что RGB - это плохое цветовое пространство, чтобы делать подсчеты освещения, потому что вам нужно рассмотреть кучу особых случаев, чтобы получить что-либо, что выглядит реалистичным или ведет себя так, как вы ожидали.
  • С учетом сказанного это может быть концептуально проще выполнять вычисления освещения в HSL, а не в RGB. В зависимости от языка и инструментария, который вы используете, это должно быть частью стандартной библиотеки/дистрибутива или доступного инструментария.
  • Более физически точная альтернатива будет заключаться в реализации спектрального рендеринга, где вместо функций трассировки, возвращающих значения RGB, они возвращают выборочное спектральное распределение мощности. SPD более точные и удобные в работе, чем отслеживание целого ряда особых случаев, связанных с RGB, за счет небольшого, но заметного повышения производительности (особенно если оно не было оптимизировано). Зеркальные блики и цветные огни являются естественным следствием этой модели и не требуют специальной обработки в общем случае.
Смежные вопросы