我知道在GPU之前进行图形处理时,trig函数缓存非常流行,但是使用一维纹理查找表从OpenGL ES着色器中的预计算值中计算出sin / cos是否有意义?如果不需要超高精度,是否可以节省时间?
这是那些“取决于”问题之一。
高精度任意sin()
和cos()
特别往往是昂贵的操作,因为它们不是经常在显卡直接使用并获得全精度往往需要细化迭代的某一水平。因此,就个别而言,如果纹理化可以更快,也不会令我感到惊讶。
一些警告。首先,余弦照明的多数用途是基于单位长度向量之间的角度,所以你并不需要任意cos()
-只要使用dot()
其GPU是非常的有效。
其次,值得注意的是,如果您进行mediump
精确计算,某些实现(特别是移动GPU)可能已经能够为您提供更快,更不准确的结果。这将减少任何基线费用,sin()
或cos()
在下面的逻辑。
剩下的问题实际上是的成本是否sin()
比的成本好texture()
,这很可能很大程度上取决于着色程序的其余部分以及目标GPU中的功能单元平衡。
texture()
调用的速度比还要快sin()
。sin()
调用的任何单位)为主导,则可以通过将一些负载移到纹理路径上来提高性能。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句