2012-11-21 59 views
2

我有兴趣在webgl中执行一些密集计算,因此它在GPU上运行。从webgl获取数据

大多数文档都讲述了如何渲染图形。

我是非常简单的任务:对于给定的图像,将其转换为灰度,并找到局部最大值(比其邻居更亮的像素)的坐标。

我想运行webgl着色器中的“循环”,但是将(x,y)局部最大像素传递给javascript世界。 它可行吗?什么是最好的办法,以便通过并行处理像素来表现出色?

+0

我不知道这是否适用于你的情况,但它看起来像你想学习如何做GPGPU,本教程是我的出发点是:http://www.mathematik .uni-dortmund.de /〜goeddeke/GPGPU/tutorial.html。它不在OpenGL ES上,但可能很有用...... –

+0

WebGL是GPU的有限图形管道(与CUDA或OpenCL相对)的API,因此如果您想要将并行计算路径视为[HTML Web Workers ](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) – FrickeFresh

回答

3

您可以使用着色器渲染全屏四边形,该着色器可以在某个正方形(如受最大数量的纹理样本限制的4x4或16x16分辨率)中采样纹理(图像)中的像素,并输出最大值作为碎片颜色+最大像素纹理协调(如果需要)到较低分辨率的纹理。所以你会减少图像。你可以迭代这个来达到全局最大值。

阅读本http://www.lcg.ufrj.br/Cursos/GPUProg/GPGPU_Reductions