需要快速算法来计算像素着色器中非常小的线的面积

时间:2017-06-12 04:43:50

标签: image-processing graphics shader

我试图在GPU上实施侵蚀算法。在算法的一部分中,我需要将非常小的线应用于某个纹理。在下面的图片中,我想知道每个像素中线条的面积。然后我会将金额添加到该像素。线长小于像素,其厚度为一个像素。

enter image description here

一般的线路算法对我来说不起作用,因为它是一个像素着色器(使用无人机),而且它需要很快。有一些错误,如5%或10%是可以接受的。

1 个答案:

答案 0 :(得分:1)

要进行精确计算,您需要找到矩形与像素相交的所有可能情况。然后将该区域分解为几个原始形状并总结它们的区域。由于分支数量很多,所有这些都很容易搞砸而且效率不高。

更简单的方法如下:生成与AB平行的多条线(可能是5到10),并在矩形区域内均匀分布。剪切像素处的所有行,计算它们的剩余长度,乘以宽度元素(矩形宽度除以行数)并将它们相加。您可以使用行数控制精度。如果这个数字是常数,那么循环甚至会被编译器展开,你的分支就会明显减少。