首页 > 解决方案 > HLSL 中的无分支浮点比较

问题描述

有没有办法在value = 1; if(x > y) value = 0;不使用分支的情况下重写(其中值、x 和 y 都是浮点数)?我已经看到了整数的解决方案,但我找不到浮点值的解决方案。

标签: unity3dhlsl

解决方案


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


推荐阅读