gpt4 book ai didi

GLSL 相当于 HLSL Clip()?

转载 作者:行者123 更新时间:2023-12-01 17:35:10 24 4
gpt4 key购买 nike

描述了 HLSL clip() 函数 here .

我打算在 OpenGL 中使用它来截断 alpha。 GLSL 中的等价物是否只是

if (gl_FragColor.a < cutoff)
{
discard;
}

或者有一些更有效的等价物吗?

最佳答案

OpenGL没有这样的功能。而且它不需要一个。

Or is there some more efficient equivalent?

该问题假设此条件语句的效率低于调用 HLSL 的 clip功能。它很可能高效(尽管即便如此,这也是一个全面的微观优化)。 clip检查该值是否小于 0,如果小于,则丢弃该片段。但您并不是针对零测试;而是针对零进行测试。您正在测试 cutoff ,这可能不是 0。因此,您必须调用 clip像这样(使用 GLSL 风格):clip(gl_FragColor.a - cutoff)

如果硬件不直接支持clip,那么你的调用相当于if(gl_FragColor.a - cutoff < 0) discard; 。这是一个数学运算一个条件测试。这比条件测试慢。如果不是......驱动程序几乎肯定会重新排列您的代码以这种方式进行条件测试。

条件语句比 clip 慢的唯一方法是硬件是否具有对 clip 的特定支持司机太笨了,不会转弯if(gl_FragColor.a < cutoff) discard;进入clip(gl_FragColor.a - cutoff) 。如果驱动程序那么愚蠢,如果它缺乏基本的针孔优化,那么您就会遇到比这更大的性能问题。

简而言之:不用担心。

关于GLSL 相当于 HLSL Clip()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763477/

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