gpt4 book ai didi

opengl - 在 Fragmentshader OpenGL 中访问不同的 Fragment

转载 作者:行者123 更新时间:2023-12-02 21:09:51 26 4
gpt4 key购买 nike

我可以在 Fragmentshader 的特定位置访问和更改另一个 Fragment 的输出值吗?

例如,在 main() 循环中,我像往常一样处理所有内容,并输出带有某个值的颜色。但除此之外,我还希望位置 vec3(5,3,6) (在世界坐标中)的片段具有相同的颜色。

现在我已经在网上对此进行了一些研究。 OpenGL 站点说,片段着色器有一个片段作为输入,一个片段作为输出,这听起来不太有希望。我也知道所有片段都在并行处理。但是也许可以说,如果这个位置的片段还没有被处理过,就把这个颜色写入它,并认为这个片段已经被处理过。

有人可以解释这是否可行,如果不可行,为什么这不是一个好主意。我的最佳猜测是,将此逻辑构建到着色器中,会对整体性能产生非常糟糕的影响。

最佳答案

My be someone can explain if this is posible somehow and if not, why this is not a good idea.

这不是坏主意与好主意的问题。这根本不可能。

最接近此功能的是 ARB_fragment_shader_interlock .通过其互锁和顺序保证,它允许有限 互操作。这个限制是......它只允许覆盖相同像素/样本的片段进行互操作。

因此即使是此功能也不允许您写入其他像素。

您能做的绝对最好是使用 SSBO 和原子计数器让片段着色器写入它们想要写入的颜色值和“世界坐标”,然后让第二个进程执行该缓冲区作为渲染命令或计算着色器来实际写入该数据。

关于opengl - 在 Fragmentshader OpenGL 中访问不同的 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095641/

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