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.

Чайник в стиле гравюры, рендеринг которого выполнен шейдером штриховки1

Рис. 15.5. Чайник в стиле гравюры, рендеринг которого выполнен шейдером штриховки1

Листинг 15.2. Фрагментный шейдер для имитации гравюры

const float frequency =1.0;

varying vec3 ObjPos"opengl2_334.html">⇐ Предыдущая| |Следующая ⇒