Почему алгоритмы шума используют 256 значений перестановки?

Я видел много реализаций шума для таких вещей, как perlin а также simplex noise достигать procedural terrain generationи все они, кажется, используют 256 значений перестановки. Почему это? и каков будет эффект использования более 256?

1 ответ

Решение

Вы можете использовать любое количество значений перестановок. Причина того, что степени двойки являются предпочтительными, заключается в том, что вычислять модуль N^2 дешевле.

Причиной этого является:

value % (N^2)

эквивалентно

value & (N^2 - 1)

И это намного дешевле вычислять по битам и вместо%.

Например, в вашем коде вы можете написать это:

int v = perm[(x + perm[y % 256]) % 256];

Или же

int v = perm[(x + perm[y & 255]) & 255];

Оба дают одинаковый результат, но второй способ быстрее.

Конечно, для этого можно использовать любую степень двойки. Я думаю, что причина выбора 256 заключается в том, что это хороший баланс между множеством псевдослучайных чисел и низким потреблением памяти.

Другие вопросы по тегам