Loo*_*zie 5 sum opengl-es glsl vertex-shader fragment-shader
有关如何在GLSL着色器中实现有效积分函数(如SumX和SumY)的建议吗?
SumX(u)=关于x = I(u0,y)+ I(u1,y)+ ... + I(uN,y)的积分; u =归一化x坐标SumY(v)=关于y = I(x,v0)+ I(x,v1)+ ... + I(x,vN)的积分; v =标准化的y坐标
例如,第一行的第5个像素将是第一行上所有五个像素的总和.并且最后一个像素将是所有先前像素的总和,包括最后一个像素本身.
您要求的是2D情况的前缀和或总面积表(SAT)(这样您就可以更轻松地找到在线资源).
通过分解为几个并行前缀和通[1],[2],可以在GPU上有效地实现求和区域表.
通过使用本地内存来存储中间部分和,可以加速前缀和(参见OpenCL中的示例或CUDA中的示例,原则上可以在OpenGL片段着色器中使用图像加载存储,或者在计算着色器中完成:OpenGL超级圣经示例,类似于OpenGL Insights中的示例,见第280页).
请注意,您可能会很快遇到精度问题,因为对于最右边(最下面)的像素,总和可能会变得非常大.整数或fp16渲染目标很可能由于溢出或缺乏精度而导致失败,fp32大部分时间都可以工作.
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |