УрокНормаль и свет
Почему грань к солнцу светлее
Возьми фонарик и лист бумаги. Посвети прямо в лист — пятно яркое. Наклони лист: тот же пучок света растекается по большей площади, и на каждый сантиметр бумаги приходится меньше света. Поставь лист ребром — свет скользит вдоль и не попадает на него совсем.
Освещённость зависит от угла между нормалью и направлением на свет — стрелкой от поверхности к солнцу или лампе. Насколько темнее становится с ростом угла, описывает косинус угла: число, которое падает от 1 до 0, пока угол растёт от 0° до 90° (откуда оно берётся — в уроке «Углы, синус и косинус»). Освещённость пропорциональна косинусу — это закон Ламберта. Косинус 0° — единица (свет в лоб), 60° — 0.5, 90° — ноль (свет вдоль поверхности).
В шейдере косинус получают через скалярное произведение. Это действие над двумя стрелками, которое даёт одно число: их координаты перемножают попарно и складывают (подробно — во врезке ниже). Для двух стрелок длиной 1 это число и есть косинус угла между ними.
яркость = max(0, dot(нормаль, направление на солнце))
цвет = BaseColor × цвет солнца × яркость // умножение из урока 1Вопрос из урока
Солнце стоит в зените, а грань вертикальная, как стена. Какая у неё яркость?