gpt4 book ai didi

glsl - 基于 GLSL 中向量的特定分量进行 min-max 的最快方法?

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

我需要在我的 GLSL 代码中多次调用这种函数。

vec2 minx(vec2 a, vec2 b) {
if (a.x < b.x) return a;
else return b;
}

我担心分支过多。有没有一种方法可以避免 if-else 结构?

最佳答案

我建议使用 GLSL 函数 mixstep .

mix根据 [0.0, 1.0] 范围内的浮点插值 a 在 2 个值之间进行插值。如果 a 等于 0.0,则返回第一个值,如果 a 等于 1.0,则返回第二个值。

step测试值是否小于边缘值。如果小于则返回 0.0,否则返回 1.0。

如果您组合这 2 个函数,您的代码将如下所示:

vec2 minx(vec2 a, vec2 b)
{
return mix( a, b, step( b.x, a.x ) );
}

请注意,step 的结果正好是 0.0 或正好是 1.0,这导致 mix要么返回第一个值,要么返回第二个值。

关于glsl - 基于 GLSL 中向量的特定分量进行 min-max 的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45597118/

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