Основы программирования трехмерной графики в DirectX. Часть V: Свет

Понятие свет и освещенность в компьютерных играх идентичны понятиям окружающего нас с вами мира. В компьютерной графике применяются три типа освещения. Первый это параллельный или направленный источник света. Этот тип освещения не имеет определенного источника света и светит отовсюду, но в определенном направлении. Второй тип освещения имеет название точечный. Этот тип освещения имеет источник света, но светит во всех направлениях. Пример: лампочка, люстра, торшер и так далее. Третий источник освещения носит название прожекторный. По названию этого типа освещения легко догадаться, что он собой представляет, а именно направленный конусообразный источник света (пример простого прожектора или фонарика).

Освещение или свет задается цветовой компонентой или просто цветом в формате ARGB. Где A – это альфа канал для определения степени прозрачности цветов, R представляет красный цвет (red), G – это зеленный цвет (green), B – синий цвет (blue). Сумма всех цветов в итоге приводит вас к одному из оттенков того или иного цвета. Здесь все по аналогии со школьными уроками рисования, где все мы смешивали краски разных цветов и получали, как правило, одну большую черную кляксу. К слову цвет можно использовать не только для освещения, но и для прямого закрашивания вершин полигонов цветом. В этом случае вы можете закрасить всю модель или ее отдельные части (помним, что модель состоит из полигонов) одним из цветов.

Для расчета правильности отображения освещения используются нормали. Нормаль – это единичный вектор расположенный перпендикулярно от плоскости полигона или вершины (рис. 1). На базе расположения нормалей происходит расчет освещения объекта. Грубо говоря, те нормали, которые не попадают под источник света, дают понять механизму освещения, какие части объекта будут освещаться источником света, а какие нет.