请教个高效率点的Pixel Shader的算法
现在我有4块纹理,最终要贴到一个平面上,从上至下分别是 1 2 3 4,是遮盖效果。
举例来说,如果1号纹理是满满的,alpha都是1.0,那么234就会都被遮住。
如果1号是只有左半边有图,右半边是空的,那么就可以看到2 3 4的右半边。当然,2号遮34号,3号遮4号。
我的想法是,先用1号纹理,然后取结果的alpha值,用(1-a)去乘2号;再用这个结果的(1-a)去乘3号;再用这个结果的
(1-a)去乘4号。出来的就是叠加效果。
我写了个ps的代码如下:
PS_OUTPUT Output;
Output.RGBColor = tex2D(TextureSampler0, In.TextureUV0) ;
Output.RGBColor = Output.RGBColor + tex2D(TextureSampler1, In.TextureUV1)*(1 - Output.RGBColor.a);
Output.RGBColor = Output.RGBColor + tex2D(TextureSampler2, In.TextureUV2)*(1 - Output.RGBColor.a);
Output.RGBColor = Output.RGBColor + tex2D(TextureSampler3, In.TextureUV3)*(1 - Output.RGBColor.a);
Output.RGBColor = Output.RGBColor * In.Diffuse ;
return Output;
能倒是能运行,就是速度慢了点,在5600上跑降到大概40帧。
请问有高效点的算法吗?