Используйте пиксельный шейдер.
float t : register(c0);
float4 t1 = tex2D(g_sampler1, texcoord);
float4 t2 = tex2D(g_sampler2, texcoord);
float4 result = lerp(t1, t2, t);
, где вы передаете в качестве суммы линейной интерполяции. t = 0.0 дает вам первую текстуру, t = 1.0 дает вам вторую текстуру, и она интерполируется линейно между ними.
Ваш формат файла тогда не имеет значения, и это позволяет избежать вычисления третьей текстуры.