Хорошо, исходя из вашего комментария, вам следует использовать пиксельный шейдер.Ваше исходное изображение даже не нуждается в альфа-канале - пусть пиксельный шейдер применяет альфа-канал.
Фактически вам, вероятно, следует рассчитать значения для альфа-канала (т. Е. Запустить программу расчета жидкости) на графическом процессоре какну.
Ваш шейдер может выглядеть примерно так:
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c = tex2D(textureSampler, uv);
c.A = /* calculate alpha value here */;
return c;
}
Хорошее место для начала - образец XNA Sprite Effects .
Есть даже эффект, похожий на то, что вы делаете:
http://create.msdn.com/assets/cms/images/XNA_SpriteEffects_02_small.jpg
Эффект в образце читает со второй текстуры, чтобы получить значения для вычисления альфа-канала первой текстуры, когда онанарисован.