gpt4 book ai didi

glsl - glsl片段着色器中的特定坐标输出?

转载 作者:行者123 更新时间:2023-12-04 12:26:42 25 4
gpt4 key购买 nike

有没有办法不使用 gl_FragColor 输出的预定坐标,而是通过坐标设置特定像素的颜色?

我目前正在尝试通过着色器实现 Mean Shift 算法。我的输入是黑白纹理,其中白点代表要聚类的点,黑色代表无数据。

计算邻域中所有点位置的加权平均值后,我必须将结果位置中的像素设置为表示聚类的新颜色。

例如,如果我查看以与 fragcoord 相关的像素为中心的 18x18 邻域并找到 3 个白色像素:碎片坐标 = 30,33像素 1:坐标 (30,33)像素 2:坐标 (27,33)像素3:坐标(30,30)

在计算出他们的位置平均值后,我将得到 (29,32)。有没有办法在具有不同 fragcoord(例如 30,33)的着色器单元中将 29,32 处的像素设置为不同的颜色?

类似于 gl_FragColor(vec2(29,32)) = vec4(1.0,1.0,1.0,1.0); ?

最佳答案

正如克里斯蒂安所说,这是不可能的;如果您可以使用它,计算框架或图像加载/存储是您切换到的最佳选择。

如果你必须在没有图像加载/存储的情况下使用 GLSL,你有一个选择:如果你的图像总共有 n 个像素,那么将 n 个顶点作为点发送到顶点着色器;在顶点着色器中,根据您的 gl_VertexID 从纹理中读取(在 GLSL 1.10 中可用...如果您有 1.40+,您可能应该改用实例化和 gl_InstanceID),然后定位该点,以便当它进入片段着色器时,它正好覆盖了你想要的像素。然后无论如何都让像素着色器输出白色。

这是一个 hack,但如果您没有其他选择,它可能会正常工作。

关于glsl - glsl片段着色器中的特定坐标输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com