Оскільки постачальники драйверів GPU зазвичай не noiseX
намагаються реалізовувати в GLSL, я шукаю набір функціональних функцій "графічної рандомізації swiss Army ніж" , бажано оптимізованих для використання в шейдерах GPU. Я віддаю перевагу GLSL, але код для мене зробить будь-яка мова, я нормально перекладаю його самостійно на GLSL.
Зокрема, я б очікував:
а) Псевдовипадкові функції - 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.
б) Неперервний шум, як Perlin Noise - знову ж, N-мірний, + - рівномірний розподіл, з обмеженим набором значень і, добре, добре виглядає (деякі варіанти налаштування зовнішності, наприклад, рівні Перліна, також можуть бути корисними). Я очікую, що підписи:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Я не дуже переймаюсь теорією генерації випадкових чисел, тому я б нетерпляче пішов на заздалегідь зроблене рішення , але я також вдячний відповідям на кшталт "ось дуже хороший, ефективний 1D rand (), і дозвольте мені пояснити ви як зробити хороший N-мірний rand () поверх нього ... " .
vec2 co
? це діапазон? насіння?