shader中的一些平替函数

发布时间 2024-01-05 09:26:55作者: terrificia

我们知道,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)

  关于快速平方根倒数的由来可以看一下科普,挺有意思的