Поскольку поставщики драйверов GPU обычно не утруждают себя реализацией noiseX
в GLSL, я ищу рандомизацию графики " швейцарский армейский нож » набор служебных функций, предпочтительно оптимизированный для использования в шейдерах графического процессора. Я предпочитаю GLSL, но мне подойдет код на любом языке, я нормально переведу его на GLSL.
В частности, я ожидал:
a) Псевдослучайные функции - N-мерное, равномерное распределение по [-1,1] или по [0,1], вычислено из M-мерного начального числа (в идеале это любое значение, но я не против, чтобы начальное значение было ограничено, скажем, 0 ..1 для равномерного распределения результатов). Что-то вроде:
float random (T seed);
vec2 random2 (T seed);
vec3 random3 (T seed);
vec4 random4 (T seed);
// T being either float, vec2, vec3, vec4 - ideally.
б) Непрерывный шум как шум Перлина - опять же, N-мерный, + - равномерное распределение, с ограниченным набором значений и, ну, хорошо выглядящим (некоторые опции для настройки внешнего вида, такие как уровни Perlin, тоже могут быть полезны). Я бы ожидал подписи вроде:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Я не очень разбираюсь в теории генерации случайных чисел, поэтому я бы с нетерпением ждал готового решения , но я также был бы признателен за ответы вроде «вот очень хороший, эффективный 1D rand (), и позвольте мне объяснить вам, как сделать хороший N-мерный rand () поверх него ...» .