О GL_AMBIENT_AND_DIFFUSE: коэффициенты фонового и диффузного отражения устанавливаются равными одному и тому же значению. Такая установка сделана для удобства, поскольку коэффициенты фонового и диффузного отражения часто выбираются одинаковыми.
О GL_EMISSI0N: устанавливается эмиссионный цвет поверхности.
В последнем случае устанавливается эмиссионный цвет (emissive color) для грани, вследствие чего она начинает «светиться» заданным цветом, независимо ни от какого источника света.
Собирая все вместе Расширим теперь уравнение (8.7) так, чтобы оно включало в себя вклады дополнительных величин, вычисляемых OpenGL. Полный компонент красного цвета задается выражением:
'«Р. + Xatten- х sPot. х (7-Р- + 7*Р* х lambert. + 4Psr х Phong/ ). (8.11 )
Выражения для зеленого и синего компонентов задаются аналогично. Слагаемое ег означает эмиссионный свет, а 1тт - глобальный фоновый свет, введенный в модель освещения. Знак суммы означает, что для всех источников суммируются вклады фонового, диффузного и зеркального света. Для i-ro источника atten, является коэффициентом ослабления света, как в уравнении (8.10); spot,. - это коэффициент прожектора (см. рис. 8.20), a lambert, и phong. - уже известные нам скалярные произведения сответственно для диффузного и зеркального отражения. Все эти члены должны вычисляться заново для каждого источника света. (Замечание. Если в результате вычислений 1г получается больше, чем 1,0, то OpenGL урезает его до этого значения: известно, что максимальная яркость любого компонента света составляет 1,0.)
8.2.10. Закраска сцен, заданных с помощью SDL
В языке описания сцен SDL, представленном в главе 5, поддерживается загрузка в объекты свойств материала для корректного проведения их закраски. Например, такой код:
light 3 4 5 .8 .8 .8
! bright white light at (3. 4, 5)
! ярко-белый свет в точке (3. 4. 5)
Визуализация граней для усиления реалистичности
background 111 ! white background ! белый фон
globalAmbient .2 .2 .2
! a dark gray global ambient light