15.1.6. Имитация ручной работы
Если бы гравюра была выполнена не компьютером, а человеком, то штрихи не были бы идеально ровными. Нужно внести некоторое несовершенство в изображение с помощью шума, как описано в главе 12. Для этого шейдера не нужно придумывать ничего особенного: немного волнистости, частично разорванные линии. Трехмерная текстура с шумом Перлина вполне годится для этих целей.
Чтобы сделать штрихи волнистыми, можно изменить функцию float sawtooth = fract((V + noise * 0.1) * frequency * stripes): Результат добавления шума к штрихам показан на рис. 15.4.
Рис. 15.4. Наложение шума на штрихи: а - функция шума Перлина накладывается непосредственно на поверхность сферы; б- функция шума используется для корректирования параметров частоты штриховки1
' Рисунок любезно предоставлен Бертом Фрейденбергом, университет Магдебурга, 2002,
15.1. Штриховка
15.1.7. Фрагментный шейдер штриховки Фрагменты кода, описанные в предыдущих разделах, складываются в шейдер, приведенный в листинге 15.2. Так как частота вычисляется по текстурной координате т., полоски будут вертикальными, а не горизонтальными. Результат применения этого шейдера к модели чайника показан на рис. 15.5.
Рис. 15.5. Чайник в стиле гравюры, рендеринг которого выполнен шейдером штриховки1
Листинг 15.2. Фрагментный шейдер для имитации гравюры
const float frequency =1.0;
varying vec3 ObjPos"opengl2_334.html">⇐ Предыдущая| |Следующая ⇒