В книге [2] рассказывается, как выполнять аналитическое сглаживание периодической функции step, иногда этот процесс называют серией импульсов. Используем этот метод для сглаживания кирпичной стенки в процедурном шейдере, описанном в главе 6 этой книги. В шейдере функция step используется для того, чтобы рисунок был периодическим. Функция, вычисляющая рисунок кирпичей в горизонтальном направлении, изображена на рис. 14.7. От точки 0 до точки BrickPct.x (ширина кирпича) значение функции равно 1,0. В точке Brick Pet. х находится край с бесконечным наклоном функции к 0. В точке 1 функция поднимается обратно в 1,0, и все повторяется для следующих кирпичей.

Периодическая функция step (серия импульсов), определяющая горизонтальный компонент процедурной текстуры для кирпичной стены

Рис. 14.7. Периодическая функция step (серия импульсов), определяющая горизонтальный компонент процедурной текстуры для кирпичной стены

Для сглаживания этой функции вычисляется ее интегральное значение. В сложных областях ширина фильтра, вычисляемая функцией fwidth, будет соответствовать нескольким таким импульсам. Выполнив семплинг интегрального значения функции, получим средневзвешенное значение без высоких частот.

14.4. Пример сглаживания полосок Интегральное значение данной функции показано на рис. 14.8. От точки 0 до точки ВпскРст..х значение функции равно 1,0, так что крутизна функции 1,0. От точки Вп скРй. х до точки 1 функция имеет значение 0, и теперь интегральное значение постоянное. В точке 1 функция возвращается обратно в 1,0, так что интеграл увеличивается до тех пор, пока функция не достигнет значения Вп скРст.. х + 1. В этой точке значение крутизны меняется до 0, потом все повторяется сначала.

Периодическая функция step (серия импульсов) и ее интегральное значение

Рис. 14.8. Периодическая функция step (серия импульсов) и ее интегральное значение Для сглаживания нужно определять интегральное значение вне области фильтра. При этом проверяется значение на краях фильтра, и из него вычитаются два значения. Интегральное значение этой функции состоит из двух частей"opengl2_324.html">⇐ Предыдущая| |Следующая ⇒