Stage3d可以用于执行并行计算吗?

时间:2012-10-13 23:00:27

标签: actionscript-3 stage3d pixel-bender

我曾经像你一样在AS3中编程地图,但后来我在膝盖上拿了一个Pixel Bender。从那时起,我一直在使用Pixel Bender对阵列进行并行计算。可以使用Stage3D吗?

使用Pixel Bender进行计算的示例:

http://wonderfl.net/c/eFp0/

我的目标是获取[x1, y1, x2, y,2 , . . ., xn, yn]的向量并返回[f(x1), f(y1), f(x2), f(y2), . . . ,f(xn), f(yn)]的向量。更像是f(x1, y1).x , f(x1,y1).y。我相信你会得到一般的想法。

我们通常称之为地图。这是一个彻底的解释。

http://en.wikipedia.org/wiki/Map_%28higher-order_function%29

我注意到使用Pixel Bender我可以通过10倍的速度提升来实现这一目标。有什么方法可以用Stage3D做同样的事情。

1 个答案:

答案 0 :(得分:2)

与其他语言(例如c ++)不同,我不知道如何将汇编指令引导到GPU Program3D Shaders with Adobe Graphics Assembly Language之外。

  

可以使用Pixel Bender 3D离线创建程序字节码   工具。它也可以动态创建。 AGALMiniAssembler类   是一个实用程序类,它编译AGAL汇编语言程序   AGAL字节码。该类不是运行时的一部分。上传时   着色器程序,字节码被编译到本机着色器中   当前设备的语言(例如,OpenGL或Direct3D)。该   运行时验证上传时的字节码。

     

只要Context3D drawTriangles()方法运行,程序就会运行   调用。顶点程序对于每个顶点执行一次   要绘制的三角形列表。片段程序执行一次   对于三角形表面上的每个像素。

不接近您使用Pixel Bender获得的性能,应该注意您可以利用ActionScript Workers并行化您的仿函数。

  

Worker对象表示 worker ,它是一个虚拟实例   Flash运行时。每个Worker实例控制并提供访问权限   到单个工作者的生命周期和共享数据。

     

这种同时执行多组代码的功能   说明称为并发

随着Adobe高级功能,Alchemy / FlasCC,XC API,Pixel Bender和ActionScript Next的推出,对于快速发展的Flash平台来说,这是一个激动人心的时刻。