PMG http://forum.pmg.org.ru/ |
|
Шейдер огня http://forum.pmg.org.ru/viewtopic.php?f=2&t=8044 |
Страница 1 из 1 |
Автор: | kurlyak [ 18 сен 2010 17:42 ] |
Заголовок сообщения: | Шейдер огня |
У меня есть пиксельный шейдер: Код: float fTime0_X; sampler Flame; sampler Noise; float4 ps_main(float2 tex_coord : TEXCOORD0 ) : COLOR0 { float3 coord; coord.x = tex_coord.x; coord.y = tex_coord.y + fTime0_X; coord.z = 1; float noisy = tex2D(Noise, coord); float heat = noisy + tex_coord.y; float4 flame = tex2D(Flame, heat); return flame; } Скриншот следующий: Текстура Flame: Текстура Noise: В этом пиксельном шейдере меня интересует вопрос, почему смешиваеться цвет и координаты: Код: float heat = noisy + tex_coord.y; Я понимаю если смешивается "цвет+цвет" или "координата+координата", но как это "цвет+координата". Что это нам дает? Причем если заменить на следующий код: Код: float heat = noisy + tex_coord.x; то текстура Flame поворачиваеться на 90 градусов, то есть огонь горит сверху вниз горит как и раньше, а текстура Flame наложена слева на право- вот скриншот: Поэтому не пойму откуда форумула Код: float heat = noisy + tex_coord.x; знает использую я tex_coord.y или использую tex_coord.x ? Если все равно результат float и координаты x(0,1) и y(0,1) значит огонь не должен менять ориентацию так как результат один float heat. Откуда формула знает о том использую я x или использую y текстурных координат? Но все что я понял что это одна текстура двигаеться сверху вниз (Noise) а другая (Flame) на нее просто накладываеться для создания оттенков огня . Но чисто математически я этого понять не могу - float heat = noisy + tex_coord.y. Объясните пожалуйста, заранее благодарен. |
Автор: | MagicWolf [ 20 сен 2010 08:44 ] |
Заголовок сообщения: | Re: Шейдер огня |
Я думаю не большое случайное смещение не помешает |
Автор: | kurlyak [ 20 сен 2010 12:51 ] |
Заголовок сообщения: | Re: Шейдер огня |
Большое спасибо MagicWolf - я уже догадался сам что вроде как цветовой рельеф, или цветовой шум из текстуры Noise накладывается на координату X текстуры Flame и получается что текстура Flame (градиент) повторяет узор текстуры Noise. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |