2015-04-13 3 views
0

Я пишу трассирующее изображение луча, но у меня есть некоторые проблемы с тем, как свет должен упасть с расстояния до источника света. Кажется, что значения расстояний слишком высоки, поэтому, когда я их квадратизирую и делю на них интенсивность, я получаю только черный экран. Как бы я мог изменить интенсивность источника света на пиксель, чтобы он не подавлял сцену. Сейчас мой код:Затухание света в Raytracer

finalColour.r += (diffuseColour.r * light.intensity.r * x /(distance*distance)); 
    finalColour.g += (diffuseColour.g * light.intensity.g * x /(distance*distance)); 
    finalColour.b += (diffuseColour.b * light.intensity.b * x /(distance*distance)); 

ответ

2

Что такое x? математика выглядит правильно. вы уверены, что это не проблема с конфигурацией сцены: сделать интенсивность света/diffuseColour выше, или расстояния меньше. альтернативно, в то время как свет падает, так как квадрат расстояния физически явственен, вам не нужно использовать его в вашем raytracer. вы можете использовать неопределенное расстояние для менее реалистичной, но яркой сцены.

+0

x - коэффициент Ламберта. Проблема, я думаю, в том, что r g b и x находятся в диапазоне от 0 до 1, а расстояние - это фактическое расстояние, поэтому оно будет в диапазоне от 100 до 1000. – user2320239

+1

Вероятно, вам нужно увеличить 'light.intensity' –

Смежные вопросы