HLSL 中的无分支浮动比较

branch less float comparison in HLSL

有没有办法不用分支重写value = 1; if(x > y) value = 0;(其中value、x、y都是浮点数)?我见过整数的解决方案,但找不到浮点值的解决方案。

您可以为此目的使用 lerp,在您的示例中它将是 value = lerp(1.0f, 0.0f, x > y)。顺便说一句,这正是着色器编译器在展平分支时自动执行的操作 - 分支是否展平是另一个主题,请参阅属性 [flatten][branch].