Como os fornecedores de drivers de GPU geralmente não se preocupam em implementar noiseXno GLSL, estou procurando um conjunto de funções de utilitário "faca de exército suíço de randomização gráfica" , de preferência otimizado para uso em shaders de GPU. Eu prefiro o GLSL, mas o código que qualquer idioma fará por mim, estou bem em traduzi-lo sozinho para o GLSL.
Especificamente, eu esperaria:
a) Funções pseudo-aleatórias - N-dimensional, distribuição uniforme acima de [-1,1] ou acima de [0,1], calculada a partir da semente dimensional M (idealmente qualquer valor, mas não tenho problema em restringir a semente digamos 0..1 para distribuição 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) Ruído contínuo como Perlin Noise - novamente, distribuição N-dimensional, + - uniforme, com conjunto restrito de valores e, bem, com boa aparência (algumas opções para configurar a aparência como níveis de Perlin também podem ser úteis). Eu esperaria assinaturas como:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Eu não sou muito fã da teoria da geração de números aleatórios, então eu gostaria muito de encontrar uma solução pré-fabricada , mas também gostaria de respostas como "aqui está uma 1D rand () muito boa e eficiente () e deixe-me explicar você como fazer um bom rand N-dimensional () em cima dele ... " .



vec2 co? é o alcance? semente?