对于相干噪声的实现(类似于Perlin noise),我正在寻找适合图形的散列函数。
我不需要它以任何方式加密,实际上,我什至不需要它是一个超级出色的哈希。
我只想组合两个 16 位数字并输出一个 8 位哈希。尽可能随机是好的,但在 AVR 处理器(8 位,Arduino 使用的)上快速也是好的。
目前我在这里使用一个实现:
const uint32_t hash(uint32_t a)
{
a -= (a<<6);
a ^= (a>>17);
a -= (a<<9);
a ^= (a<<4);
a -= (a<<3);
a ^= (a<<10);
a ^= (a>>15);
return a;
}
但是考虑到我要截断除 8 位之外的所有位,而且我不需要任何壮观的东西,我可以使用更少的指令来完成一些事情吗?
…我在这个搜索中受到了与 FastLED 打包的lib8tion库的启发。它具有特定的功能,例如,将两个数字相乘以在尽可能少的时钟周期内uint8_t
给出一个数字。uint16_t