请教个高效率点的Pixel Shader的算法

realizz 2009-07-13 08:39:09
现在我有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帧。

请问有高效点的算法吗?
...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
realizz 2009-07-17
  • 打赏
  • 举报
回复
好吧,我姑且认为大家都没有更高效的算法了,唉,结贴了
mmx2008 2009-07-14
  • 打赏
  • 举报
回复

mark
realizz 2009-07-13
  • 打赏
  • 举报
回复
无人回复。。。。。。

5555~~~~

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧