Эту проблему пытался решить Кен Перлин (Ken Perlin), когда работал в компании Magi в начале 80-х гг. Magi и компания Disney в то время работали над художественным фильмом «Трон». Перлии заметил «несовершенство» идеально закрашенных объектов в фильме и попытался разрешить эту проблему.

В 1985 г. Перлин опубликовал содержащую интересные идеи статью, в которой описал свою программу для рендеринга. В ней использовалась технология, названная Перлином шум. Его определение шума немного отличается от того, что обычно называется этим термином. Обычно, когда говорится про шум, то подра-зумевается нечто вроде случайного набора пикселов на телевизионном экране при отсутствии сигнала (так называемый «снег») или радиопомех на частоте, которая не используется ни одной ближайшей станцией.

Но такая действительно случайная функция не годится для компьютерной графики. Нужна функция с повторениями, позволяющая рисовать объект с разных углов обзора. Бывает необходимо также рисовать объект одним и тем же способом кадр за кадром, создавая иллюзию движения. По-настоящему случайные функции не зависят от входных значений, поэтому объект будет выглядеть по-разному при каждой перерисовке, а когда объект на экране движется, это выглядит некрасиво. Здесь нужна функция, которая всегда будет выдавать одно и то же выходное значение для каждого входного значения, но в то же время создавать иллюзию случайности. Эта функция должна быть непрерывной на всех уровнях детализации.

Перлин первым разработал такую функцию. С тех пор создано множество похожих функций шума, которые используются совместно для получения различных эффектов визуализации, например:

□ рендеринга природных явлений (облака, огонь, дым, ветер и т. д.);

□ рендеринга природных материалов (мрамор, гранит, дерево, горы и т. д.);

□ рендеринга произведенных человеком материалов (штукатурка, асфальт, цемент и т. д.);

'□ наложения неоднородностей на идеальные модели (ржавчина, грязь, пятна, выбоины и т. д.);

□ наложения неоднородностей на идеальные шаблоны (волны, бугорки, переход цвета и т. д.);

□ наложения неоднородностей на периоды времени (период мерцания, время между сменой кадров и т. д.);

□ наложения неоднородностей на движение (колебания, дрожание, тряска и т. д.). Вообще-то этот список можно продолжать до бесконечности. Но большинство

■современных библиотек для рендеринга включает поддержку для шума Берлина или эквивалентных функций.. Эти функции - основа реалистичного рендеринга, и сейчас они очень широко используются в работе с компьютерными изображениями, особенно при производстве фильмов, Кен Перлин проделал значительную работу в этой области, и в 1997 г. ему вручили премию «Оскар» за технические достижения в кинематографии.

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


⇐ вернуться назад | | далее ⇒