Управление силой отражения при помощи текстуры

Пусть мы хотим смешать две текстуры texO и texi, используя альфа-канал первой текстуры (texO) в качестве веса, т. е. результирующий цвет будет задаваться следующей формулой: С = QgJtO • АехО + CtexX ‘ (1 ~~ АехО) -Примером реализации такого закона может быть наложение карты отражения окружающей среды (environment mapping) на поверхность с текстурой, при этом альфа-канал текстуры определяет силу отражения на поверхности в точке. В данном случае естественным режимом для наложения цветовых компонент является GL_INTERPOLATE_ARB, где АrgО и Аrgі выступают RGB-части текстур texO и texi, а в качестве Аrg2 выступает альфа-канал текстуры texO. Для размещения исходных текстур нам понадобятся два блока (что позволит осуществить вывод всего за один проход). В нулевом текстурном блоке мы разместим текстуру texO и зададим закон ее вывода как GL_REPLACE. В результате после ее вывода мы получим саму текстуру как результат предыдущей операции (GL_PREVIOUS_ARB). glActiveTextureARB ( GL_TEXTUREO_ARB ) ; glBindTexture ( GL_TEXTURE_2D, texO ); В первом текстурном блоке мы разместим текстуру texi. Для ее вывода мы используем закон наложения GL_INTERPOLATE_ARB ДЛЯ цветовых компонент и GL_REPLACE для альфа-канала. При этом для вывода цветовых компонент в качестве ArgO будет выступать результат предыдущей операции (GL_PREVIOUS_ARB), В качестве Argi выступает сама текстура (GLJTEXTURE), а в качестве Arg2 следует взять альфа-канал из текстуры texO, т. е. GL_PREVIOUS_ARB. Задание операндов в этом случае выглядит следующим образом: ArgO.rgb = previous.rgbArgl.rgb = tex.rgbArg2.rgb = rgb ( previous.alpha )

Категория: Простейшие расширения

Таги: , ,

Приветствие!

Наш сайт создан для любителей и профессионалов, для тех кому не безинтересна система под названием Linux. На нашем сайте вы найдете статьи от установки до программирования на Linux'e, отзывы о системе, советы и поддержка начинающим пользователям. Для новичком, доступен раздел "Запускаем Linux", в котором рассказывается все от "упаковки", до первого включения системы.

Архивный календарь

Март 2010
Пн Вт Ср Чт Пт Сб Вс
« Фев    
1234567
891011121314
15161718192021
22232425262728
293031  


Статистика