我们知道,GPU对于条件判断和除法处理有些问题,尽管随着GPU性能越来越强大,这一问题也在逐步优化,但是如果可以,我们还是尽可能在编写中不使用if和除法
1,if条件判断的平替
可以使用lerp插值和step函数进行平替,例如
if(x>0) lerp(YYY, XXX, step(0,x)); XXX; =======> else YYY;
2,除法平替
可以使用rsqrt平方根倒数的平方进行平替
1 / XXX ========> rsqrt(XXX) * rsqrt(XXX)
关于快速平方根倒数的由来可以看一下科普,挺有意思的