GLSL"行列式()"的速度有多快函数

时间:2017-02-03 13:09:41

标签: opengl glsl

我在GLSL中编写光线跟踪器,并且有多种算法用于计算光线三角形交叉点。 其中一些是使用决定因素而不是,但重点是计算行列式很慢。 所以我的问题是:在GPU上优化determinant()函数以及它与乘法相比有多快。

1 个答案:

答案 0 :(得分:3)

因为GLSL determinant()函数最多在 4x4矩阵上运行,所以它不会进行高斯消除或类似的事情。它是一些乘法和加法/减法,就像你要编写"展开的"配方手工下来。对于3x3情况,它可以进行12次乘法和5次加法/减法(使用Cramer' s规则),从而可以并行化乘法。

您可以查看determinant implementation in the GLM library,GLSL可能实现得非常相似,但当然它可能因供应商/驱动程序/ GPU而异。