6

有人能解释一下 Flash 中的 Pixel Bender 和 Silverlight 中的 Pixel Shader (HLSL) 在编程灵活性和运行时性能方面的区别吗?

4

2 回答 2

1

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

这个论坛有一些关于 Silverlight 3 的优点和缺点: 优点和缺点。我知道这个话题很老,但我正在添加它,因为它似乎有点不完整。

于 2010-05-09T02:22:53.160 回答
0

我不太了解 Silverlight 着色器,但我可以谈谈 PixelBender。

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

Flash Player 可用于着色器的功能是整个 pixelbender 语言的子集。它不包括可重用库函数和区域函数等语言特性。

像素弯曲着色器可以在 GPU 上运行在与 Flash Player 不同的线程中,本质上允许在 Flash 中进行线程处理。在实践中,鉴于 pixelbender 的无状态和有限的功能,这仅对大批量数字处理有用。一个字节数组的数字可以伪装成位图数据传递给着色器,并使用 ShaderJob 异步(或同步)运行。

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

于 2009-12-03T21:19:52.500 回答