我想在我的 iPhone 应用程序中使用 GLSL 着色器在 Photoshop 中为屏幕的中心像素创建类似“魔杖”的效果(从相机捕获图像)。现在我通过获取像素数组并为中心像素应用某种洪水填充算法(全部使用 Objective-C 代码)来实现这一点。这是在 CPU 上执行的,这对我来说有点太慢了,所以我想尝试使用 GLSL 着色器来实现。
实际上,我只需要在片段着色器中重写洪水填充,更准确地说,要知道当前片段的颜色是否接近阈值颜色,以及当前片段是否是先前检测到的区域内片段的邻居。这对我来说听起来太混乱了,我不明白这是否可能。
洪水填充的算法是(伪代码):
Flood-fill (node, target-color, replacement-color):
1. Set Q to the empty queue.
2. If the color of node is not equal to target-color, return.
3. Add node to Q.
4. For each element n of Q:
5. If the color of n is equal to target-color:
6. Set w and e equal to n.
7. Move w to the west until the color of the node to the west of w no longer matches target-color.
8. Move e to the east until the color of the node to the east of e no longer matches target-color.
9. Set the color of nodes between w and e to replacement-color.
10. For each node n between w and e:
11. If the color of the node to the north of n is target-color, add that node to Q.
12. If the color of the node to the south of n is target-color, add that node to Q.
13. Continue looping until Q is exhausted.
14. Return.
问题:是否可以在着色器中做到这一点,如果可以,我该怎么做?
谢谢!