Como los proveedores de controladores de GPU generalmente no se molestan en implementar noiseXen GLSL, estoy buscando un conjunto de funciones de utilidad de "aleatorización de gráficos de navaja suiza" , preferiblemente optimizado para usar dentro de sombreadores de GPU. Prefiero GLSL, pero codifique cualquier lenguaje que me sirva, estoy de acuerdo en traducirlo por mi cuenta a GLSL.
Específicamente, esperaría:
a) Funciones pseudoaleatorias - N-dimensional, distribución uniforme sobre [-1,1] o sobre [0,1], calculada a partir de semilla M-dimensional (idealmente es cualquier valor, pero estoy de acuerdo con restringir la semilla a, digamos, 0..1 para una distribución uniforme de resultados). Algo como:
float random (T seed);
vec2 random2 (T seed);
vec3 random3 (T seed);
vec4 random4 (T seed);
// T being either float, vec2, vec3, vec4 - ideally.
b) Ruido continuo como el ruido de Perlin - nuevamente, distribución N-dimensional, + - uniforme, con un conjunto restringido de valores y, bueno, luciendo bien (algunas opciones para configurar la apariencia como los niveles de Perlin también podrían ser útiles). Esperaría firmas como:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
No estoy muy interesado en la teoría de la generación de números aleatorios, por lo que preferiría una solución prefabricada , pero también agradecería respuestas como "aquí hay un rand 1D muy bueno y eficiente (), y déjame explicarte cómo hacer un buen rand N-dimensional () encima ... " .



vec2 co? es el rango? ¿semilla?