Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
像素弯曲器(Flash)和像素着色器(Silverlight)之间的比较_Flash_Silverlight_Hlsl_Pixel Bender - Fatal编程技术网

像素弯曲器(Flash)和像素着色器(Silverlight)之间的比较

像素弯曲器(Flash)和像素着色器(Silverlight)之间的比较,flash,silverlight,hlsl,pixel-bender,Flash,Silverlight,Hlsl,Pixel Bender,有人能解释一下Flash中的Pixel Bender和Silverlight中的Pixel Shader(HLSL)在编程灵活性和运行时性能方面的不同吗?我不太了解Silverlight着色器,但我可以谈谈PixelBender pixelbender着色器获取位图数据,一次计算一个32位像素(实际上是4个浮动的每个块)并对其执行计算。着色器的输入是一个或多个图像和可选参数,输出始终是单个图像。计算在图像中的所有像素上并行进行,并且像素之间是“无状态”的,这意味着您无法在计算一个像素时存储值并在

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

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

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

Flash Player for shaders可用的功能是整个pixelbender语言的一个子集。它排除了可重用库函数和区域函数等语言特性

pixel bender着色器可以在GPU上以独立于Flash Player的线程运行,基本上允许Flash中的线程进程。实际上,鉴于pixelbender的无状态性和有限功能,这只适用于大批量处理。可以将bytearray数字伪装为bitmapdata传递给着色器,并使用ShaderJob异步(或同步)运行


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

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

本论坛对Silverlight 3有一些好的赞成和反对意见: .
我知道这个话题很老了,但由于它似乎有点不完整,所以我要补充一下。

谢谢您提供的详细信息。但是,Flash中的PB不在GPU中运行。希望这两个版本之间能有更多的比较:)@Andy:显然,Flash Player的(最终)10.1版本将有一个GPU光栅化器,我想这需要一个像素弯曲器的GPU实现。@Simon Buchan:真的吗?我只知道会有GPU加速视频解码。。。希望这是真的,很快就会实现:)在几乎所有领域都超越Silverlight?这是一个很好的回答,只是因为它的无状态并不意味着你不能用它来计算。查看一些较旧的GPGPU算法(着色器代码具有相同的无状态限制)。我已经编写了完全在像素着色器中工作的自动机(包括鼠标输入,只需要告诉鼠标在哪里以及按钮是否按下)。此外,人们已经完成了物理、光线跟踪、排序、人工智能和许多其他算法,但无法直接影响其他数据集。