使用球面谐波进行照明我遇到了足够大的带宽问题。从n^2
开始,首先n=7
项的近似值的正确性变得越来越差。我研究了相关的勒让德多项式定义,发现在归一化常数中存在因子(l - m)! / (l + m)!
的比率。对于n = 7
(l + m)!
,最高可达12!
。由于GPU的性质,我必须使用float
(IEEE-754 32位浮点类型)。
现在我想,来自C
/ C++
的{{3}}可能更合适,然后根据定义幼稚计算阶乘。甚至更多:也许有一个好的(近似)公式的tgamma
(两个大论点)的比率。
在着色器中是否有一个很好的稳定方法来计算伽玛函数(对于大的正整数)?
当然,我可以为分子和分母中所有可能的值组合保存查找表(矩阵),但我希望有替代(节省空间)的方法。