В этой главе мы лишь коснулись того, что можно сделать с помощью процедурных текстур, Нами разработан шейдер полосок, и теперь создание разного рода сеток, шахматных досок и узоров «в горошек» не должно представлять для вас никаких трудностей. Мы нарисовали игрушечный мячик со звездой, но это мог быть и пляжный мяч со снежинками. С помощью шейдеров можно добавлять или скрывать части объектов, а также создавать холмы или выемки. В следующей главе будет показано, как с помощью нерегулярных функций (шума) и процедурных текстур можно получать различные эффекты. Шейдеры, генерирующие текстуры по сложным математическим функциям (множества Мандельброта и Джулии), а также создающие не фотореалистичные эффекты, также будут описаны далее в этой книге.
Процедурные текстуры являются математически точными, легко параметризуемыми и не требуют больших объемов памяти. Конечной целью создания вершинного и фрагментного шейдеров является вычисление значений для цвета (и возможно, глубины), которые будут записаны в буфер кадров. Так как язык шейдеров OpenGL является процедурным языком, единственным ограничением для таких вычислений может стать только ваше воображение.
11.6. Ссылки
Книга [3] полностью посвящена созданию изображений с помощью процедур. Она содержит множество информации о создании и применении процедурных моделей и текстур.
Шейдеры, написанные на языке шейдеров RenderMan, в большинстве своем также являются процедурными. Книги [1 и 6] содержат замечательные примерь! таких программ.
Идея бугристых поверхностей принадлежит Джиму Блинну, она описана в работе [2]. Очень хороший обзор приемов создания бугристых поверхностей содержится в книге [4].
Плагин для Photoshop для создания карты нормалей на основе изображения можно скачать с веб-сайта для разработчиков компании NVIDIA, адрес http://
,developer.nvidia.com/view.asp?IO=ps_texture_compression_plugin.
:1. Apodaca A. A., Gritz L, Advanced RenderMan: Creating CGI for Motion Pictures. San Francisco: Morgan Kaufmann Publishers, 1999 (http://www.bmrt.org/arman/ materiaU.html).
2. BlinnJ. Simulation of Wrinkled Surfaces//Computer Graphics (Proc. SIG-GRAPI4 78). 1978. August. P. 286-292.
3. Texturing and Modeling: A Procedural Approach. 3rd ed./D. S. Ebert, J. Hart, B. Mark, at al. San Francisco: Morgan Kaufmann Publishers, 2002 (http://www. texturin'gandmodeling.com).
i Kilgard M. j. A Practical and Robust Bump-mapping Technique for Today's GPUs, Game Developers Conference//NVIDIA White Paper. 2000 (http://deve-Loper.nvidia.com).
5. NVIDIA. Веб-сайт для разработчиков (http://developer.nvidia.com),
6, Upstill S. The RenderMan Companion; A Programmer’s Guide to Realistic Computer Graphics. Reading, MS: Addison-Wesley, 1990.
Шум
В компьютерной графике легко создавать идеальные изображения - все геометрические фигуры нарисованы и закрашены ровно и красиво. Но если нужно изобразить реалистичный объект, из преимущества это превращается в недостаток. У объектов реального мира зачастую есть вмятины, потертости, царапины. Иногда они изношенные и дырявые. Художники, работающие с компьютерной графикой, прилагают немало усилий для того, чтобы кегля выглядела так, будто она использовалась в кегельбане на протяжении 20 лет, а космический корабль казался вернувшимся из многолетнего путешествия.