5.8. Функции обработки фрагмента

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

Функции производных, dFdx и dFdy, определяют скорость изменения результата математического выражения (скорость изменения функции в математическом смысле). Функция dFdx( р) вычисляет производную выражения р в направлениих оконных координат, а функция dFdy(p) вычисляет производную выраженияр в направлении у оконных координат. Эти значения показывают, как быстро меняется значение функции в оконном пространстве, и эта информация оказьшается полезной для предотвращения неровностей изображения. Например, если текстурные координаты меняются слишком быстро, возможно, будет лучше устанавливать цвет как средний по текстуре, чтобы избежать эффекта наложения.

Применение этих функций имеет смысл только в отношении выражений, которые различаются от фрагмента к фрагменту. Так как значение uniform-перемен-ной от одного пиксела к другому не меняется, производная и по х, и по у всегда будет иметь значение 0 (табл. 5,8).

Таблица 5.8. Функции обработки фрагмента

Синтаксис

Описание

float dFdx (float p) vec2 dFdx (vec2 p)

Возвращает значение производной по х

vec3 dFdx (vec3 p) vec4 dFdx (vec4 p)

для аргумента р

float dFdy (float p) vec2 dFdy (vec2 p)

Возвращает значение производной по у

vec3 dFdy (vec3 p) vec4 dFdy (vec4 p)

для аргумента р

float fwidth (float p) vec2 fwidth (vec2 p)

Возвращает сумму абсолютной производной по х

vec3 fwidth (vec3 p) vec4 fwidth (vec4 p)

и у для аргумента р, то есть return = abs(dFdx( р)) + abs(dFdy( р))

5.9. Функции шума

Функции шума (табл. 5.9) можно применять как для вершинных, так и для фрагментных шейдеров. Эти вероятностные (стохастические) функции, когда-то описанные Кеном Перлином, могут быть использованы для визуального увеличения сложности. Значения этих функций придают изображению эффект случайности, но они не случайные по-настоящему. Более полное описание и назначение этих функций можно найти в главе 12, Таблица 5.9. Функции шума

Синтаксис

Описание

float noisel (float х) float noisel (vec2 x) Возвращает значение шума для одномерной float noisel (vec3 x) float noisel (vec4 x) координаты, основанное на входном значении х

№с2 noise2 vec2 noise2

(float x) vec2 noise2 (vec2 x) (vec3 x) vec2 noise2 (vec4 x)

Возвращает значение шума для двухмерной координаты, основанное на входном значении х

тесЗ noise3 vec3 noise3

(float x) vec3 noise3 (vec2 x) (vec3 x) vec3 noise3 (vec4 x)

Возвращает значение шума для трехмерной координаты, основанное на входном значении х

vec4 noise4 (float x) vec4 noise4 (vec2 x) vee4 noise4 (vec3 x) vec4 noise4 (vec 4 x)

Возвращает значение шума для четырехмерной координаты, основанное на входном значении х

Встроенные функции шума подчиняются следующим правилам:

0 Возвращаемые значения всегда находятся в диапазоне [-1, 1].


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