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]
.
有没有办法不用分支重写value = 1; if(x > y) value = 0;
(其中value、x、y都是浮点数)?我见过整数的解决方案,但找不到浮点值的解决方案。
您可以为此目的使用 lerp
,在您的示例中它将是 value = lerp(1.0f, 0.0f, x > y)
。顺便说一句,这正是着色器编译器在展平分支时自动执行的操作 - 分支是否展平是另一个主题,请参阅属性 [flatten]
和 [branch]
.