gpt4 book ai didi

ios - 使用 OpenGL ES 丢弃像素着色器计算的最有效方法

转载 作者:行者123 更新时间:2023-11-28 21:56:36 25 4
gpt4 key购买 nike

我的片段着色器中有多个纹理读取,据推测我在做坏事,例如在着色器中使用 discard 命令和条件。

问题是,我正在渲染一个纹理,我想在接下来的 channel 中与其他着色器一起重用它,而不必对以前“丢弃”的像素进行操作。这是为了性能。问题是,如果制服超出特定范围(我从另一个纹理读取),我还需要放弃计算:想象一个循环,这些着色器始终在相同的纹理上运行,这些纹理未被清除。

所以我现在所拥有的是糟糕的表现。我想到的一个想法是将 glFragDepth 与深度缓冲区一起使用,并使用它来触发深度测试以丢弃一些像素。但这不适用于我想要范围的事实。

还有其他选择吗?

最佳答案

您可以启用混合,并将不想渲染的像素的 alpha 值设置为零。设置:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);

然后在片段着色器中,您之前调用了 discard:

...
if (condition) {
discard;
}
...

改为将 alpha 设置为零:

float alpha = float(condition);
...
gl_FragColor(r, g, b, alpha);

这是否会比丢弃像素表现得更好可能取决于系统。但如果您正在寻找替代品,那值得一试。

关于ios - 使用 OpenGL ES 丢弃像素着色器计算的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332439/

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