О Среднее значение результатов некоторого количества вызовов функции должно приближаться к 0.

□ Возвращаемые значения воспроизводимы, то есть при заданном входном значении всегда получается одно и то же выходное значение.

О Возвращаемые значения статистически инвариантны к вращению (не важно, как будет вращаться область, значения имеют такой же статистический характер).

□ Возвращаемые значения статистически инвариантны к преобразованиям (не важно, как будет преобразовываться область, значения имеют такой же статистический характер).

□ Обычно после преобразования возвращаемые значения изменяются.

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

□ функции везде С-непрерывны вместе со своей, первой производной.

5.10. Итоги

Язык шейдеров OpenGL содержит богатый набор встроенных функций. Некоторые из них похожи на аналогичные в С и C++, другие похожи на функции из RenderMan. Эти функции предназначены для расширения аппаратной функциональности (например, доступа к текстурам) или для поддержки стандартных операций (например, вычисления квадратного корня, приведения значения к заданному диапазону и т. д.), либо они представляют операции, которые будут ускорены аппаратно в будущих версиях графических ускорителей (тригонометрические функции, шум).

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

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

5.11. Ссылки

Чтобы рассмотреть примеры применения встроенных функций, описанных в этой главе, просто продолжайте читать книгу. Некоторые дополнительные подробности можно найти в книге [2].

Различные встроенные функции языка шейдеров OpenGL, включая функции производных и ширины фильтра, были заимствованы из языка RenderMan, смысл применения этих функций обсуждается в книгах [7 и 1]. За подробным описанием функций шума обращайтесь к заметкам Перлина [3 и 4], а также к дополнительным ссылкам из главы 12.

1. Apodaca A. A., Gritz L. Advanced RenderMan: Creating CGI for Motion Pictures. San Francisco: Morgan Kaufmann Publishers, 1999 (http://www.bmrt.org/arman/ materials.html).

2. Kessenich J., Baldwin D., Rost R. The OpenGL Shading Language, Version 1.051/ 3Dlabs. 2003 (http://www.3dlabs.com/support/developer/ogl2).


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