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

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

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

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

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

 
  • Bitcoin
  • Ethereum
  • Xrp
  • Litecoin
  • Tether
Scan to Donate Bitcoin to 37gL6h1eYph975coF8b4PzpU1NWWsrn7H2

Мотивация в написании новостей

Если вы хотите мотивировать автора проекта делать новости каждый день, то можете отправить любое количество Bitcoin на этот адрес. Просто скопируйте адрес или отсканируйте QR-код в свой кошелек, чтобы отправить Bitcoin автору проекта. Спасибо!

Scan to Donate Ethereum to 0x86358dC52dfC689EE6eE6A35c8D8D2405592094D

Мотивация в написании новостей

Если вы хотите мотивировать автора проекта делать новости каждый день, то можете отправить любое количество Ethereum на этот адрес. Просто скопируйте адрес или отсканируйте QR-код в свой кошелек, чтобы отправить Ethereum автору проекта. Спасибо!

Scan to Donate Xrp to rE1Kj7r2fFqqT1JmeHh5miTqNSGi5mDdH9

Мотивация в написании новостей

Если вы хотите мотивировать автора проекта делать новости каждый день, то можете отправить любое количество Xrp на этот адрес. Просто скопируйте адрес или отсканируйте QR-код в свой кошелек, чтобы отправить Xrp автору проекта. Спасибо!

Scan to Donate Litecoin to MGPZR3gNsUEWfnXtVQXX5Cn22mxK9b51uv

Мотивация в написании новостей

Если вы хотите мотивировать автора проекта делать новости каждый день, то можете отправить любое количество Litecoin на этот адрес. Просто скопируйте адрес или отсканируйте QR-код в свой кошелек, чтобы отправить Litecoin автору проекта. Спасибо!

Scan to Donate Tether to 0x86358dC52dfC689EE6eE6A35c8D8D2405592094D

Мотивация в написании новостей

Если вы хотите мотивировать автора проекта делать новости каждый день, то можете отправить любое количество Tether на этот адрес. Просто скопируйте адрес или отсканируйте QR-код в свой кошелек, чтобы отправить Tether автору проекта. Спасибо!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх