Pixel Bender(在Flash中)和像素着色器(在Silverlight中)之间的比较

时间:2009-09-06 10:37:35

标签: flash silverlight hlsl pixel-bender

有人可以在编程灵活性和运行时性能方面解释Silverlight中的Pixel Bender和Silverlight中的Pixel Shader(HLSL)之间的差异吗?

2 个答案:

答案 0 :(得分:1)

我不知道可编程性,但至于运行时性能,pixelbender非常棒。目前Silverlight 3不允许您在后台进行此处理,但使用PixelBender,您可以。这很好,因为在使用计算密集型过滤器时,UI不会受到太大影响。

这个论坛有一些很好的专业版和Silverlight 3的概念: Pros and Cons。 我知道这个主题已经过时了,但我加入了它,因为它似乎有点不完整。

答案 1 :(得分:0)

我真的不知道Silverlight着色器,但我可以谈论PixelBender。

pixelbender着色器获取位图数据并一次一个地评估每个32位像素(实际上每个4个浮点数块)并对其进行计算。着色器的输入是一个或多个图像和可选参数,输出始终是单个图像。计算在图像中的所有像素上并行发生,并且在像素之间是“无状态”的,这意味着在评估一个像素时不能存储值,而在另一个像素中使用它们。实际上,就像素评估而言,该功能被设计为在无限大图像上操作,因此对图像的大小和形状无知。

Flash Player可用于着色器的功能是整个pixelbender语言的子集。它排除了可重用库函数和区域函数等语言功能。

像素弯曲器着色器可以在与Flash Player不同的线程中在GPU上运行,基本上允许Flash中的线程进程。实际上,考虑到像素管理器的无状态和有限功能,这仅适用于大批量数字运算。数组的bytearray可以传递给伪装成bitmapdata的着色器,并使用ShaderJob异步(或同步)运行。

语法方面,HLSL和PBJ都是类似C的并且基于GLSL。我的猜测是,鉴于微软在图形硬件方面的经验,HLSL可能具有更好的性能和更多功能。然而,Flash和Silverlight之间的差异远远超出了它们的着色器,我认为Flash几乎在每个领域都优于Silverlight,因此它归结为哪个平台更能满足需求。