我正在尝试编写一个需要每像素生成伪随机数的着色器 - 从纹理中获取太贵了。
我发现的所有发生器都使用^,<<,&运营商,但我正在研究的着色器模型不支持这些。我可以使用这些算子的数学等价物吗?
作为参考,我估计速度超过精确度。
谢谢!
答案 0 :(得分:0)
其中,我认识的唯一数学等价物是<<
运算符。即:
N&lt;&lt; X = N *(2,4,8,16,32,64,128,256,512,1024等)
e.g。
N&lt;&lt; 5 = N * 32
只需为值(2 ^ X)创建一个查找,然后乘以该值。
其他的会更复杂,可能需要你编写一个算法来解决它们。我不认为他们有任何直接的数学等价物。
C运行时实现的源代码可能对此有用。或者只是搜索算法来实现每个算法,例如:Fast implementation/approximation of pow() function in C/C++