Преломление и отражение луча света
Зеркально отражённый луч можно определить как r = e - 2 n (e,n), где r представляет отражение единичного вектора e в точке с единичной нормалью n
Идеально преломлённый луч определяется в соответсвии с законом Снеллиуса-Декарта
С математической точки зрения преломлённый луч можно определить как
k = 1.0-eta*eta*(1.0 - (e,n)*(e,n))
Случай когда k<0 соотвесвует полному внутреннему отражению, иначе:
if ( k>= 0)
R' = eta*e -(eta*(e,n)+sqrt(k)) * N
eta = коэффициент преиломления от куда приходит луч/коэффициент преиломления куда идёт луч
Коэффициенты френеля
Для правильного смешивания цветов отраженного луча и преломленного следует воспользоваться или постоянными коэффициентами или коэффициентами Френеля.
Последний является наиболее физически правильным. Коэффициент френеля зависит от угла падения, длины волны и определяет долю отразившейся световой энергии.
Зависимость довольна сложна и на практике для целей компьютерной графики используют следующие формулы:
F = clamp(0.1, 0.9, teta)
F = R0 + (1-R0)* (1-cos(teta))^5
F = (1+cos(teta))^-8
R0 = ( (N1-N2)/(N1+N2) )^2
N1, N2 - коэффициенты преломления сред.
К примеру:
N1 (воздух) = 1.000293
N2 (вода) = 1.33333