Штриховка тени
Для того, чтобы выводить трехмерные объекты с штрихованной тенью, нужно разобраться в двух вещах: как выводить тень на поверхность и как делать штриховку.
Для вывода тени мы:
- Строим изображение с того места, где находится источник света.
- Затемняем те участки, которые не видны оттуда - на них падает тень.
- Накладываем его, как текстуру, на наши объекты.
- Выводим с точки зрения зрителя.
После чего мы перемножаем тень на штриховку.
Получается следующий шейдер.
gl_FragColor = vec4(vertColor.rgb * max(visibility * 0.05556, square), vertColor.a);
- square - градиент с пиками
- visibility - кол-во тени на объекте
Вот как это выглядит.
Как видим, возникает муар. Наклон полос зависит от положения источника света. Толщина полос никак не регулируется. Эти задачи оставим на будущее.