X – исходный цвет поверхности треугольника.
α – угол между вектором нормали к поверхности и вектором, исходящим из вершины треугольника и направленным на источник света.
Легко заметить, то значение диффузной составляющей максимально, когда вектор нормали сонаправлен с вектором, направленным на источник света, и минимально, когда данные вектора антиколлинеарны. Как следует из формулы, диффузная составляющая всегда больше или равна нулю. Если поверхность освещается прожектором, то диффузная составляющая будет одна и та же для каждой точки треугольника. В случае точечного источника диффузная составляющая будет различна для каждой точки.
Зеркальная составляющая имитирует яркое пятно света (блик), которое появляется на блестящих объектах. Расчет зеркальных бликов, как и в случае диффузного освещения, основан на векторе направления источника света и нормали к поверхности объекта, но помимо этого в вычислениях учитывается позиция наблюдателя, то есть направление, в котором наблюдатель смотрит на фрагмент.
рис. 2.11
(1) – вектор, исходящий из вершины треугольника и направленный на источник света.
(2) – вектор нормали к плоскости треугольника.
(3) – отраженный от поверхности луч света.
(4) – вектор, исходящий из вершины треугольника и направленный на наблюдателя.
α – угол между вектором нормали и вектором, направленным на источник света.
β – угол между отраженным от поверхности треугольника лучом света и вектором, направленным на наблюдателя.
Зеркальную составляющую освещения можно вычислить по следующей формуле:
S – зеркальная составляющая.
a – параметр, характеризующий яркость светового блика.
b – параметр, характеризующий размер светового блика на поверхности. Чем больше b, тем меньше блик.
x = 1-cos (β)
β – угол между отраженным лучом света и вектором, направленным на наблюдателя. Этот угол должен варьироваться в пределах от 0 до 90 градусов. Если угол больше, чем 90 градусов, это означает, что поверхность не освещается лучами от источника света или наблюдатель не может видеть данную поверхность. В этом случае зеркальная составляющая равна 0.
Если мы построим график функции, с помощью которой вычисляется зеркальная составляющая, то мы получим примерно такой график (рис. 2.12) (в зависимости от параметров a и b